Index: third_party/WebKit/LayoutTests/inspector-protocol/css/cssom-modify-rule-and-get-rule-list.html |
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/css/cssom-modify-rule-and-get-rule-list.html b/third_party/WebKit/LayoutTests/inspector-protocol/css/cssom-modify-rule-and-get-rule-list.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5d8b9cc009596418041cb9b15d54da092ed877c4 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/css/cssom-modify-rule-and-get-rule-list.html |
@@ -0,0 +1,76 @@ |
+<html> |
+<head> |
+ |
+<style> |
+#modifyRule { |
+ box-sizing: border-box; |
+} |
+ |
+#modifyRule { |
+ height: 100%; |
+} |
+ |
+#modifyRule { |
+ width: 100%; |
+} |
+</style> |
+ |
+<script type="text/javascript" src="../../http/tests/inspector-protocol/inspector-protocol-test.js"></script> |
+<script type="text/javascript" src="../../http/tests/inspector-protocol/css-protocol-test.js"></script> |
+<script type="text/javascript" src="../../http/tests/inspector-protocol/dom-protocol-test.js"></script> |
+<script type="text/javascript"> |
+ |
+function test() |
+{ |
+ var documentNodeId; |
+ |
+ InspectorTest.requestDocumentNodeId(onDocumentNodeId); |
+ |
+ function onDocumentNodeId(nodeId) |
+ { |
+ documentNodeId = nodeId; |
+ InspectorTest.sendCommandOrDie("DOM.enable", {}); |
+ InspectorTest.sendCommandOrDie("CSS.enable", {}, function() { |
+ InspectorTest.sendCommandOrDie("CSS.startRuleUsageTracking", {}, () => |
+ { testModifyRule(); }) |
+ }); |
+ } |
+ |
+ function testModifyRule() |
+ { |
+ InspectorTest.evaluateInPage("document.styleSheets[0].rules[0].style.setProperty('color', 'red')"); |
+ InspectorTest.evaluateInPage("document.styleSheets[0].rules[2].style.setProperty('color', 'blue')"); |
+ InspectorTest.evaluateInPage("document.styleSheets[0].rules[1].style.setProperty('color', 'green')"); |
+ |
+ InspectorTest.sendCommandOrDie("CSS.stopRuleUsageTracking", {}, ruleListLoaded); |
+ function ruleListLoaded(result) { |
+ if(!result) { |
+ return; |
+ } |
+ var rules = result.ruleUsage; |
+ var usedLines = rules.filter(rule => rule.used); |
+ var unusedLines = rules.filter(rule => !rule.used); |
+ |
+ usedLines.sort(); |
+ unusedLines.sort(); |
+ InspectorTest.log("=== Size of array: " + rules.length); |
+ InspectorTest.log(" Number of used Rules: " + usedLines.length); |
+ for(var line of usedLines) |
+ InspectorTest.log(line.range.startLine); |
+ |
+ InspectorTest.log(" Number of unused Rules: " + unusedLines.length); |
+ for(var line of unusedLines) |
+ InspectorTest.log(line.range.startLine); |
+ |
+ InspectorTest.completeTest(); |
+ } |
+ } |
+} |
+ |
+</script> |
+</head> |
+<body onload="runTest();"> |
+<p>The test verifies that CSS.stopRuleUsageTracking doesn't crash when used concurrently with the CSSOM modifications.</p> |
+<article id="modifyRule"></article> |
+</body> |
+</html> |