/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // Tests that the rule view marks overridden rules correctly when using layers const HTML = `

Hello

world

!

style attr

`; add_task(async function () { await addTab( `https://example.com/document-builder.sjs?html=${encodeURIComponent(HTML)}` ); const { inspector, view } = await openRuleView(); await selectNode("h1", inspector); info("Check background-color properties"); is( await getComputedStyleProperty("h1", null, "background-color"), "rgb(255, 0, 0)", "The h1 element has a red background-color, as the value in the layer-less rule wins" ); ok( !isPropertyOverridden(view, 1, { "background-color": "red" }), "background-color value in layer-less rule is not overridden" ); ok( isPropertyOverridden(view, 2, { "background-color": "cyan" }), "background-color value in layer B rule is overridden" ); ok( isPropertyOverridden(view, 3, { "background-color": "green" }), "background-color value in layer A rule is overridden" ); info("Check (!important) color properties"); is( await getComputedStyleProperty("h1", null, "color"), "rgb(0, 255, 0)", "The h1 element has a lime color, as the last important value in the first declared layer wins" ); ok( isPropertyOverridden(view, 1, { color: "tomato" }), "important color value in layer-less rule is overridden" ); ok( isPropertyOverridden(view, 2, { color: "blue" }), "important color value in layer B rule is overridden" ); ok( isPropertyOverridden(view, 3, { color: "darkseagreen" }), "first important color value in layer A rule is overridden" ); ok( !isPropertyOverridden(view, 3, { color: "lime" }), "important color value in layer A rule is not overridden" ); ok( isPropertyOverridden(view, 3, { color: "forestgreen" }), "last, non-important color value in layer A rule is overridden" ); info("Check (!important) color properties on nameless layers"); await selectNode("h2", inspector); is( await getComputedStyleProperty("h2", null, "color"), "rgb(255, 0, 0)", "The h2 element has a blue color, as important value in the first nameless layer wins" ); ok( isPropertyOverridden(view, 1, { color: "blue" }), "important color value in second layer-less rule is overridden" ); ok( !isPropertyOverridden(view, 2, { color: "red" }), "important color value in first layer-less rule is not overridden" ); info("Check (!important) color properties on nested layer in nameless layer"); await selectNode("h3", inspector); is( await getComputedStyleProperty("h3", null, "color"), "rgb(0, 255, 0)", "The h3 element has a lime color, as important value in the last rule of the first declared nameless layer wins" ); ok( isPropertyOverridden(view, 1, { color: "blue" }), "important color value in second layer-less rule is overridden" ); ok( !isPropertyOverridden(view, 2, { color: "lime" }), "important color value in second rule of layer-less rule is not overridden" ); ok( isPropertyOverridden(view, 3, { color: "red" }), "important color value in first rule of layer-less rule is overridden" ); info("Check (!important) color properties on element style and layer"); await selectNode("h4", inspector); is( await getComputedStyleProperty("h4", null, "color"), "rgb(0, 0, 255)", "The h4 element has a blue color, as important value in element rule wins" ); ok( !isPropertyOverridden(view, 0, { color: "blue" }), "important color value in element rule is not overridden" ); ok( isPropertyOverridden(view, 1, { color: "red" }), "important color value in layer is overridden" ); }); function isPropertyOverridden(view, ruleIndex, property) { return getTextProperty( view, ruleIndex, property ).editor.element.classList.contains("ruleview-overridden"); }