blob: 0c1f2f75c179df441010f745f6a291b9aa32e469 [file] [log] [blame]
<script src="../../../resources/js-test-pre.js"></script>
<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/scheduler.js" type="text/javascript"></script>
<script src="../../../../Source/WebCore/Modules/modern-media-controls/controls/layout-node.js" type="text/javascript"></script>
<script src="../resources/media-controls-utils.js" type="text/javascript"></script>
<script type="text/javascript">
description("Subclassing <code>LayoutNode</code> by exposing a new custom property.");
window.jsTestIsAsync = true;
class OpacityNode extends LayoutNode
{
constructor(stringOrElement)
{
super(stringOrElement);
this._opacity = 1;
}
set opacity(opacity)
{
this._opacity = opacity;
this.markDirtyProperty("opacity");
}
commitProperty(propertyName)
{
debug(`OpacityNode.commitProperty() was called with propertyName = ${propertyName}`);
if (propertyName === "opacity")
this.element.style.opacity = this._opacity;
else
super.commitProperty(propertyName);
}
layout()
{
debug("OpacityNode.layout() was called");
super.layout();
}
}
const node = new OpacityNode;
debug("Check the node is not dirty by default");
shouldBeFalse("node.needsLayout");
debug("");
debug("node.opacity = 0.5");
node.opacity = 0.5;
shouldBeTrue("node.needsLayout");
let numberOfFrames = 0;
scheduler.frameDidFire = function()
{
debug("");
debug("Layout was performed");
switch (++numberOfFrames) {
case 1:
shouldBeEqualToString("node.element.style.opacity", "0.5");
debug("");
debug("node.needsLayout = true");
node.needsLayout = true;
break;
case 2:
finishMediaControlsTest();
break;
}
};
scheduler.frameWillFire = function()
{
debug("");
debug("Layout will be performed");
};
</script>
<script src="../../../resources/js-test-post.js"></script>