blob: f19ea1dec3c41642ff55e20fd8814e1718b5aaf2 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script>
function test() {
let nodeStyles = null;
let suite = InspectorTest.createAsyncSuite("OverriddenProperty");
function logProperty(property) {
let text = property.formattedText || "REMOVED";
if (property.overridden)
text += " overridden";
InspectorTest.log(text);
}
suite.addTestCase({
name: "OverriddenProperty.effectivePropertyRemoved",
test(resolve, reject) {
let inlineStyle = nodeStyles.inlineStyle;
let styleRule = nodeStyles.matchedRules[0];
let inlineStyleProperty = inlineStyle.enabledProperties[0];
let styleRuleProperty = styleRule.style.enabledProperties[0];
function log() {
logProperty(inlineStyleProperty);
logProperty(styleRuleProperty);
InspectorTest.log("");
}
log();
inlineStyleProperty.remove();
styleRuleProperty.addEventListener(WI.CSSProperty.Event.OverriddenStatusChanged, (event) => {
// FIXME: <https://webkit.org/b/195651> OverriddenStatusChanged may fire more than once.
if (styleRuleProperty.overridden)
return;
InspectorTest.log("OverriddenStatusChanged event fired.");
log();
resolve();
});
}
});
WI.domManager.requestDocument((documentNode) => {
WI.domManager.querySelector(documentNode.id, "div#x", (contentNodeId) => {
if (!contentNodeId) {
InspectorTest.fail("DOM node not found.");
InspectorTest.completeTest();
return;
}
let domNode = WI.domManager.nodeForId(contentNodeId);
nodeStyles = WI.cssManager.stylesForNode(domNode);
if (nodeStyles.needsRefresh) {
nodeStyles.singleFireEventListener(WI.DOMNodeStyles.Event.Refreshed, (event) => {
suite.runTestCasesAndFinish();
});
} else
suite.runTestCasesAndFinish();
});
});
}
</script>
</head>
<body onload="runTest()">
<p>Test that CSSProperty.prototype.overridden is cleared when the overriding (effective) property is removed.</p>
<style>
#x {
color: red;
}
</style>
<div id="x" style="color: green"></div>
</body>
</html>