Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1246)

Unified Diff: Source/devtools/front_end/timeline/TracingTimelineModel.js

Issue 653283005: Implement style recalc invalidation tracking in devtools (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix minor typeo: _addInvalidationTrackingEvent Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « LayoutTests/inspector/tracing/timeline-style-recalc-with-invalidations-expected.txt ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/devtools/front_end/timeline/TracingTimelineModel.js
diff --git a/Source/devtools/front_end/timeline/TracingTimelineModel.js b/Source/devtools/front_end/timeline/TracingTimelineModel.js
index e0cdd3b6e7250d79969fd21539863c23ac658997..461ab7d5c5ba332ecfc2f0bff67c2b01baa068a1 100644
--- a/Source/devtools/front_end/timeline/TracingTimelineModel.js
+++ b/Source/devtools/front_end/timeline/TracingTimelineModel.js
@@ -595,6 +595,7 @@ WebInspector.TracingTimelineModel.prototype = {
break;
case recordTypes.RecalculateStyles:
+ this._invalidationTracker.didRecalcStyle(event);
event.initiator = this._lastScheduleStyleRecalculation[event.args["frame"]];
this._lastRecalculateStylesEvent = event;
break;
@@ -1177,6 +1178,25 @@ WebInspector.InvalidationTracker.prototype = {
},
/**
+ * @param {!WebInspector.TracingModel.Event} styleRecalcEvent
+ */
+ didRecalcStyle: function(styleRecalcEvent)
+ {
+ var recalcFrameId = styleRecalcEvent.args["frame"];
+ var index = this._lastStyleRecalcEventIndex;
+ var invalidationCount = this._invalidationEvents.length;
+ for (; index < invalidationCount; index++) {
+ var invalidation = this._invalidationEvents[index];
+ if (invalidation.type !== WebInspector.TracingTimelineModel.RecordType.StyleRecalcInvalidationTracking)
+ continue;
+ if (invalidation.frameId === recalcFrameId)
+ this._addInvalidationTrackingEvent(styleRecalcEvent, invalidation);
+ }
+
+ this._lastStyleRecalcEventIndex = invalidationCount;
+ },
+
+ /**
* @param {!WebInspector.TracingModel.Event} paintEvent
*/
didPaint: function(paintEvent)
@@ -1195,18 +1215,27 @@ WebInspector.InvalidationTracker.prototype = {
var effectivePaintId = this._lastPaintWithLayer.args["data"]["nodeId"];
var frameId = paintEvent.args["data"]["frame"];
- this._invalidationEvents.forEach(recordInvalidationForPaint);
+ this._invalidationEvents.forEach(recordInvalidationForPaint.bind(this));
function recordInvalidationForPaint(invalidation)
{
- if (invalidation.paintId === effectivePaintId && invalidation.frameId === frameId) {
- if (!paintEvent.invalidationTrackingEvents)
- paintEvent.invalidationTrackingEvents = [];
- paintEvent.invalidationTrackingEvents.push(invalidation);
- }
+ if (invalidation.paintId === effectivePaintId && invalidation.frameId === frameId)
+ this._addInvalidationTrackingEvent(paintEvent, invalidation);
}
},
+ /**
+ * @param {!WebInspector.TracingModel.Event} event
+ * @param {!WebInspector.InvalidationTrackingEvent} invalidation
+ */
+ _addInvalidationTrackingEvent: function(event, invalidation)
+ {
+ if (!event.invalidationTrackingEvents)
+ event.invalidationTrackingEvents = [ invalidation ];
+ else
+ event.invalidationTrackingEvents.push(invalidation);
+ },
+
_startNewFrameIfNeeded: function()
{
if (!this._didPaint)
@@ -1218,6 +1247,7 @@ WebInspector.InvalidationTracker.prototype = {
_initializePerFrameState: function()
{
this._invalidationEvents = [];
+ this._lastStyleRecalcEventIndex = 0;
this._lastPaintWithLayer = undefined;
this._didPaint = false;
}
« no previous file with comments | « LayoutTests/inspector/tracing/timeline-style-recalc-with-invalidations-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698