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

Unified Diff: third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineModel.js

Issue 2473283003: DevTools: add per-frame grouping into aggregated timeline details (Closed)
Patch Set: rebased Created 4 years, 1 month 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
Index: third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineModel.js
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineModel.js b/third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineModel.js
index 3257281bba69db6dbe9b6d428808b5604d93774b..987ae4ddad0064d1474195ebc91bdae49ed3cbcc 100644
--- a/third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineModel.js
+++ b/third_party/WebKit/Source/devtools/front_end/timeline_model/TimelineModel.js
@@ -118,6 +118,19 @@ WebInspector.TimelineModel = class {
}
/**
+ * @param {!WebInspector.TracingModel.Event} event
+ * @return {string}
+ */
+ static eventFrameId(event) {
+ var data = event.args['data'] || event.args['beginData'];
+ var frame = data && data['frame'];
+ if (!frame)
+ return '';
+ var processId = event.thread.process().id();
+ return `${processId}.${frame}`;
+ }
+
+ /**
* @deprecated Test use only!
* @param {?function(!WebInspector.TimelineModel.Record)|?function(!WebInspector.TimelineModel.Record,number)} preOrderCallback
* @param {function(!WebInspector.TimelineModel.Record)|function(!WebInspector.TimelineModel.Record,number)=} postOrderCallback
@@ -264,6 +277,18 @@ WebInspector.TimelineModel = class {
for (var event of metadataEvents) {
if (event.name === WebInspector.TimelineModel.DevToolsMetadataEvent.TracingStartedInPage) {
pageDevToolsMetadataEvents.push(event);
+ var frames = (event.args['data'] && event.args['data']['frames']) || [];
+ for (var frame of frames) {
+ var processId = event.thread.process().id();
+ var frameId = `${processId}.${frame.frame}`;
+ var frameData = {
+ url: frame['url'] || '',
+ name: frame['name'] || '',
+ processId: processId,
+ frameId: frame['frame']
+ };
+ this._pageFrames.set(frameId, frameData);
+ }
} else if (event.name === WebInspector.TimelineModel.DevToolsMetadataEvent.TracingSessionIdForWorker) {
workersDevToolsMetadataEvents.push(event);
} else if (event.name === WebInspector.TimelineModel.DevToolsMetadataEvent.TracingStartedInBrowser) {
@@ -779,6 +804,15 @@ WebInspector.TimelineModel = class {
break;
case recordTypes.CommitLoad:
+ var frameId = WebInspector.TimelineModel.eventFrameId(event);
+ var pageFrame = this._pageFrames.get(frameId);
+ if (pageFrame) {
+ pageFrame.url = eventData.url || '';
+ pageFrame.name = eventData.name || '';
+ } else {
+ var processId = event.thread.process().id();
+ this._pageFrames.set(frameId, {url: eventData.url || '', processId: processId, frameId: eventData.frame, name: eventData.name || ''});
+ }
var page = eventData['page'];
if (page && page !== this._currentPage)
return false;
@@ -917,6 +951,9 @@ WebInspector.TimelineModel = class {
this._cpuProfiles = [];
/** @type {!WeakMap<!WebInspector.TracingModel.Thread, string>} */
this._workerIdByThread = new WeakMap();
+ /** @type {!Map<string, !WebInspector.TimelineModel.PageFrame>} */
+ this._pageFrames = new Map();
+
this._minimumRecordTime = 0;
this._maximumRecordTime = 0;
}
@@ -999,6 +1036,14 @@ WebInspector.TimelineModel = class {
}
/**
+ * @param {string} frameId
+ * @return {?WebInspector.TimelineModel.PageFrame}
+ */
+ pageFrameById(frameId) {
+ return frameId ? this._pageFrames.get(frameId) || null : null;
+ }
+
+ /**
* @return {!Array<!WebInspector.TimelineModel.NetworkRequest>}
*/
networkRequests() {
@@ -1331,6 +1376,9 @@ WebInspector.TimelineModel.Record = class {
WebInspector.TimelineModel.MetadataEvents;
+/** @typedef {!{url: string, processId: number, frameId: string, name: string}} */
+WebInspector.TimelineModel.PageFrame;
+
/**
* @unrestricted
*/

Powered by Google App Engine
This is Rietveld 408576698