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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « LayoutTests/inspector/tracing/timeline-style-recalc-with-invalidations-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @constructor 6 * @constructor
7 * @param {!WebInspector.TracingManager} tracingManager 7 * @param {!WebInspector.TracingManager} tracingManager
8 * @param {!WebInspector.TracingModel} tracingModel 8 * @param {!WebInspector.TracingModel} tracingModel
9 * @param {!WebInspector.TimelineModel.Filter} recordFilter 9 * @param {!WebInspector.TimelineModel.Filter} recordFilter
10 * @extends {WebInspector.TimelineModel} 10 * @extends {WebInspector.TimelineModel}
(...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 588
589 case recordTypes.FireAnimationFrame: 589 case recordTypes.FireAnimationFrame:
590 event.initiator = this._requestAnimationFrameEvents[event.args["data "]["id"]]; 590 event.initiator = this._requestAnimationFrameEvents[event.args["data "]["id"]];
591 break; 591 break;
592 592
593 case recordTypes.ScheduleStyleRecalculation: 593 case recordTypes.ScheduleStyleRecalculation:
594 this._lastScheduleStyleRecalculation[event.args["frame"]] = event; 594 this._lastScheduleStyleRecalculation[event.args["frame"]] = event;
595 break; 595 break;
596 596
597 case recordTypes.RecalculateStyles: 597 case recordTypes.RecalculateStyles:
598 this._invalidationTracker.didRecalcStyle(event);
598 event.initiator = this._lastScheduleStyleRecalculation[event.args["f rame"]]; 599 event.initiator = this._lastScheduleStyleRecalculation[event.args["f rame"]];
599 this._lastRecalculateStylesEvent = event; 600 this._lastRecalculateStylesEvent = event;
600 break; 601 break;
601 602
602 case recordTypes.StyleRecalcInvalidationTracking: 603 case recordTypes.StyleRecalcInvalidationTracking:
603 case recordTypes.LayoutInvalidationTracking: 604 case recordTypes.LayoutInvalidationTracking:
604 case recordTypes.LayerInvalidationTracking: 605 case recordTypes.LayerInvalidationTracking:
605 case recordTypes.PaintInvalidationTracking: 606 case recordTypes.PaintInvalidationTracking:
606 this._invalidationTracker.addInvalidation(event); 607 this._invalidationTracker.addInvalidation(event);
607 break; 608 break;
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after
1170 if (invalidationToUpdate.nodeId !== invalidation.nodeId) 1171 if (invalidationToUpdate.nodeId !== invalidation.nodeId)
1171 return; 1172 return;
1172 if (invalidationToUpdate.type === recordTypes.StyleRecalcInvalidatio nTracking 1173 if (invalidationToUpdate.type === recordTypes.StyleRecalcInvalidatio nTracking
1173 || invalidationToUpdate.type === recordTypes.LayoutInvalidat ionTracking) { 1174 || invalidationToUpdate.type === recordTypes.LayoutInvalidat ionTracking) {
1174 invalidationToUpdate.paintId = invalidation.paintId; 1175 invalidationToUpdate.paintId = invalidation.paintId;
1175 } 1176 }
1176 } 1177 }
1177 }, 1178 },
1178 1179
1179 /** 1180 /**
1181 * @param {!WebInspector.TracingModel.Event} styleRecalcEvent
1182 */
1183 didRecalcStyle: function(styleRecalcEvent)
1184 {
1185 var recalcFrameId = styleRecalcEvent.args["frame"];
1186 var index = this._lastStyleRecalcEventIndex;
1187 var invalidationCount = this._invalidationEvents.length;
1188 for (; index < invalidationCount; index++) {
1189 var invalidation = this._invalidationEvents[index];
1190 if (invalidation.type !== WebInspector.TracingTimelineModel.RecordTy pe.StyleRecalcInvalidationTracking)
1191 continue;
1192 if (invalidation.frameId === recalcFrameId)
1193 this._addInvalidationTrackingEvent(styleRecalcEvent, invalidatio n);
1194 }
1195
1196 this._lastStyleRecalcEventIndex = invalidationCount;
1197 },
1198
1199 /**
1180 * @param {!WebInspector.TracingModel.Event} paintEvent 1200 * @param {!WebInspector.TracingModel.Event} paintEvent
1181 */ 1201 */
1182 didPaint: function(paintEvent) 1202 didPaint: function(paintEvent)
1183 { 1203 {
1184 this._didPaint = true; 1204 this._didPaint = true;
1185 1205
1186 // If a paint doesn't have a corresponding graphics layer id, it paints 1206 // If a paint doesn't have a corresponding graphics layer id, it paints
1187 // into its parent so add an effectivePaintId to these events. 1207 // into its parent so add an effectivePaintId to these events.
1188 var layerId = paintEvent.args["data"]["layerId"]; 1208 var layerId = paintEvent.args["data"]["layerId"];
1189 if (layerId) 1209 if (layerId)
1190 this._lastPaintWithLayer = paintEvent; 1210 this._lastPaintWithLayer = paintEvent;
1191 if (!this._lastPaintWithLayer) { 1211 if (!this._lastPaintWithLayer) {
1192 console.error("Failed to find the paint container for a paint event. "); 1212 console.error("Failed to find the paint container for a paint event. ");
1193 return; 1213 return;
1194 } 1214 }
1195 1215
1196 var effectivePaintId = this._lastPaintWithLayer.args["data"]["nodeId"]; 1216 var effectivePaintId = this._lastPaintWithLayer.args["data"]["nodeId"];
1197 var frameId = paintEvent.args["data"]["frame"]; 1217 var frameId = paintEvent.args["data"]["frame"];
1198 this._invalidationEvents.forEach(recordInvalidationForPaint); 1218 this._invalidationEvents.forEach(recordInvalidationForPaint.bind(this));
1199 1219
1200 function recordInvalidationForPaint(invalidation) 1220 function recordInvalidationForPaint(invalidation)
1201 { 1221 {
1202 if (invalidation.paintId === effectivePaintId && invalidation.frameI d === frameId) { 1222 if (invalidation.paintId === effectivePaintId && invalidation.frameI d === frameId)
1203 if (!paintEvent.invalidationTrackingEvents) 1223 this._addInvalidationTrackingEvent(paintEvent, invalidation);
1204 paintEvent.invalidationTrackingEvents = [];
1205 paintEvent.invalidationTrackingEvents.push(invalidation);
1206 }
1207 } 1224 }
1208 }, 1225 },
1209 1226
1227 /**
1228 * @param {!WebInspector.TracingModel.Event} event
1229 * @param {!WebInspector.InvalidationTrackingEvent} invalidation
1230 */
1231 _addInvalidationTrackingEvent: function(event, invalidation)
1232 {
1233 if (!event.invalidationTrackingEvents)
1234 event.invalidationTrackingEvents = [ invalidation ];
1235 else
1236 event.invalidationTrackingEvents.push(invalidation);
1237 },
1238
1210 _startNewFrameIfNeeded: function() 1239 _startNewFrameIfNeeded: function()
1211 { 1240 {
1212 if (!this._didPaint) 1241 if (!this._didPaint)
1213 return; 1242 return;
1214 1243
1215 this._initializePerFrameState(); 1244 this._initializePerFrameState();
1216 }, 1245 },
1217 1246
1218 _initializePerFrameState: function() 1247 _initializePerFrameState: function()
1219 { 1248 {
1220 this._invalidationEvents = []; 1249 this._invalidationEvents = [];
1250 this._lastStyleRecalcEventIndex = 0;
1221 this._lastPaintWithLayer = undefined; 1251 this._lastPaintWithLayer = undefined;
1222 this._didPaint = false; 1252 this._didPaint = false;
1223 } 1253 }
1224 } 1254 }
OLDNEW
« 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