Index: LayoutTests/inspector/tracing/timeline-style-recalc-with-invalidations.html |
diff --git a/LayoutTests/inspector/tracing/timeline-style-recalc-with-invalidations.html b/LayoutTests/inspector/tracing/timeline-style-recalc-with-invalidations.html |
index 61fceeac219c20529d32d0de23505125645c4334..05bd600c0ed331278b0818df6e706112f209bcdd 100644 |
--- a/LayoutTests/inspector/tracing/timeline-style-recalc-with-invalidations.html |
+++ b/LayoutTests/inspector/tracing/timeline-style-recalc-with-invalidations.html |
@@ -4,18 +4,40 @@ |
<script src="../../http/tests/inspector/inspector-test.js"></script> |
<script src="../../http/tests/inspector/timeline-test.js"></script> |
<script> |
-function display(callback) |
+function changeStylesAndDisplay(callback) |
{ |
requestAnimationFrame(function() { |
- document.body.style.backgroundColor = "peachpuff"; |
- document.getElementById("testElement").style.width = "100px"; |
+ document.getElementById("testElementOne").style.color = "red"; |
+ document.getElementById("testElementTwo").style.color = "blue"; |
var forceLayout = document.body.offsetTop; |
if (window.testRunner) |
testRunner.displayAsyncThen(callback); |
}); |
} |
-function updateSubframeAndDisplay(callback) |
+function changeMultipleStylesAndDisplay(callback) |
+{ |
+ requestAnimationFrame(function() { |
+ var elementOne = document.getElementById("testElementOne"); |
+ var elementTwo = document.getElementById("testElementTwo"); |
+ var elementThree = document.getElementById("testElementThree"); |
+ |
+ elementOne.style.backgroundColor = "orangered"; |
+ var forceStyleRecalc1 = document.body.offsetTop; |
+ elementOne.style.color = "mediumvioletred"; |
+ elementTwo.style.color = "deepskyblue"; |
+ var forceStyleRecalc2 = document.body.offsetTop; |
+ elementOne.style.color = "tomato"; |
+ elementTwo.style.color = "mediumslateblue"; |
+ elementThree.style.color = "mediumspringgreen"; |
+ var forceStyleRecalc3 = document.body.offsetTop; |
+ |
+ if (window.testRunner) |
+ testRunner.displayAsyncThen(callback); |
+ }); |
+} |
+ |
+function changeSubframeStylesAndDisplay(callback) |
{ |
requestAnimationFrame(function() { |
frames[0].document.body.style.backgroundColor = "papayawhip"; |
@@ -35,37 +57,81 @@ function test() |
InspectorTest.runTestSuite([ |
function testLocalFrame(next) |
{ |
- InspectorTest.invokeAsyncWithTimeline("display", function() { |
+ InspectorTest.invokeAsyncWithTimeline("changeStylesAndDisplay", function() { |
var record = InspectorTest.findFirstTimelineRecord(WebInspector.TimelineModel.RecordType.RecalculateStyles); |
var invalidations = record._event.invalidationTrackingEvents; |
InspectorTest.assertEquals(invalidations.length, 2); |
InspectorTest.assertEquals(invalidations[0].type, WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking); |
- InspectorTest.assertEquals(invalidations[0].nodeName, "BODY"); |
+ InspectorTest.assertEquals(invalidations[0].nodeName, "DIV id='testElementOne'"); |
InspectorTest.assertEquals(invalidations[0].reason, "StyleSheetChange"); |
InspectorTest.assertGreaterOrEqual(invalidations[0].stackTrace.length, 1); |
InspectorTest.assertEquals(invalidations[1].type, WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking); |
- InspectorTest.assertEquals(invalidations[1].nodeName, "DIV id='testElement'"); |
+ InspectorTest.assertEquals(invalidations[1].nodeName, "DIV id='testElementTwo'"); |
InspectorTest.assertEquals(invalidations[1].reason, "StyleSheetChange"); |
InspectorTest.assertGreaterOrEqual(invalidations[1].stackTrace.length, 1); |
- InspectorTest.invokeAsyncWithTimeline("updateSubframeAndDisplay", next); |
+ next(); |
+ }); |
+ }, |
+ |
+ function multipleStyleRecalcs(next) |
+ { |
+ InspectorTest.invokeAsyncWithTimeline("changeMultipleStylesAndDisplay", function() { |
+ var firstRecord = InspectorTest.findTimelineRecord(WebInspector.TimelineModel.RecordType.RecalculateStyles, 0); |
+ var firstInvalidations = firstRecord._event.invalidationTrackingEvents; |
+ InspectorTest.assertEquals(firstInvalidations.length, 1); |
+ InspectorTest.assertEquals(firstInvalidations[0].type, WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking); |
+ InspectorTest.assertEquals(firstInvalidations[0].nodeName, "DIV id='testElementOne'"); |
+ InspectorTest.assertEquals(firstInvalidations[0].reason, "StyleSheetChange"); |
+ InspectorTest.assertGreaterOrEqual(firstInvalidations[0].stackTrace.length, 1); |
+ |
+ var secondRecord = InspectorTest.findTimelineRecord(WebInspector.TimelineModel.RecordType.RecalculateStyles, 1); |
+ var secondInvalidations = secondRecord._event.invalidationTrackingEvents; |
+ InspectorTest.assertEquals(secondInvalidations.length, 2); |
+ InspectorTest.assertEquals(secondInvalidations[0].type, WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking); |
+ InspectorTest.assertEquals(secondInvalidations[0].nodeName, "DIV id='testElementOne'"); |
+ InspectorTest.assertEquals(secondInvalidations[0].reason, "StyleSheetChange"); |
+ InspectorTest.assertGreaterOrEqual(secondInvalidations[0].stackTrace.length, 1); |
+ InspectorTest.assertEquals(secondInvalidations[1].type, WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking); |
+ InspectorTest.assertEquals(secondInvalidations[1].nodeName, "DIV id='testElementTwo'"); |
+ InspectorTest.assertEquals(secondInvalidations[1].reason, "StyleSheetChange"); |
+ InspectorTest.assertGreaterOrEqual(secondInvalidations[1].stackTrace.length, 1); |
+ |
+ var thirdRecord = InspectorTest.findTimelineRecord(WebInspector.TimelineModel.RecordType.RecalculateStyles, 2); |
+ var thirdInvalidations = thirdRecord._event.invalidationTrackingEvents; |
+ InspectorTest.assertEquals(thirdInvalidations.length, 3); |
+ InspectorTest.assertEquals(thirdInvalidations[0].type, WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking); |
+ InspectorTest.assertEquals(thirdInvalidations[0].nodeName, "DIV id='testElementOne'"); |
+ InspectorTest.assertEquals(thirdInvalidations[0].reason, "StyleSheetChange"); |
+ InspectorTest.assertGreaterOrEqual(thirdInvalidations[0].stackTrace.length, 1); |
+ InspectorTest.assertEquals(thirdInvalidations[1].type, WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking); |
+ InspectorTest.assertEquals(thirdInvalidations[1].nodeName, "DIV id='testElementTwo'"); |
+ InspectorTest.assertEquals(thirdInvalidations[1].reason, "StyleSheetChange"); |
+ InspectorTest.assertGreaterOrEqual(thirdInvalidations[1].stackTrace.length, 1); |
+ InspectorTest.assertEquals(thirdInvalidations[2].type, WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking); |
+ InspectorTest.assertEquals(thirdInvalidations[2].nodeName, "DIV id='testElementThree'"); |
+ InspectorTest.assertEquals(thirdInvalidations[2].reason, "StyleSheetChange"); |
+ InspectorTest.assertGreaterOrEqual(thirdInvalidations[2].stackTrace.length, 1); |
+ next(); |
}); |
}, |
function testSubframe(next) |
{ |
- var record = InspectorTest.findFirstTimelineRecord(WebInspector.TimelineModel.RecordType.RecalculateStyles); |
+ InspectorTest.invokeAsyncWithTimeline("changeSubframeStylesAndDisplay", function() { |
+ var record = InspectorTest.findFirstTimelineRecord(WebInspector.TimelineModel.RecordType.RecalculateStyles); |
- var invalidations = record._event.invalidationTrackingEvents; |
- InspectorTest.assertEquals(invalidations.length, 2); |
- InspectorTest.assertEquals(invalidations[0].type, WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking); |
- InspectorTest.assertEquals(invalidations[0].nodeName, "BODY"); |
- InspectorTest.assertEquals(invalidations[0].reason, "StyleSheetChange"); |
- InspectorTest.assertGreaterOrEqual(invalidations[0].stackTrace.length, 1); |
- InspectorTest.assertEquals(invalidations[1].type, WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking); |
- InspectorTest.assertEquals(invalidations[1].nodeName, "DIV"); |
- InspectorTest.assertEquals(invalidations[1].reason, "StyleSheetChange"); |
- InspectorTest.assertGreaterOrEqual(invalidations[1].stackTrace.length, 1); |
- next(); |
+ var invalidations = record._event.invalidationTrackingEvents; |
+ InspectorTest.assertEquals(invalidations.length, 2); |
+ InspectorTest.assertEquals(invalidations[0].type, WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking); |
+ InspectorTest.assertEquals(invalidations[0].nodeName, "BODY"); |
+ InspectorTest.assertEquals(invalidations[0].reason, "StyleSheetChange"); |
+ InspectorTest.assertGreaterOrEqual(invalidations[0].stackTrace.length, 1); |
+ InspectorTest.assertEquals(invalidations[1].type, WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking); |
+ InspectorTest.assertEquals(invalidations[1].nodeName, "DIV"); |
+ InspectorTest.assertEquals(invalidations[1].reason, "StyleSheetChange"); |
+ InspectorTest.assertGreaterOrEqual(invalidations[1].stackTrace.length, 1); |
+ next(); |
+ }); |
} |
]); |
} |
@@ -73,7 +139,7 @@ function test() |
</head> |
<body onload="runTest()"> |
<p>Tests the Timeline API instrumentation of style recalc events with invalidations.</p> |
-<div id="testElement">PASS</div> |
+<div id="testElementOne">PASS</div><div id="testElementTwo">PASS</div><div id="testElementThree">PASS</div> |
<iframe src="resources/timeline-iframe-paint.html" style="position: absolute; left: 40px; top: 40px; width: 100px; height: 100px; border: none"></iframe> |
</body> |
</html> |