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

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

Issue 2486923005: Timeline: add moar attributes in frame instrumentation (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 9f208af105ba31237757e51a37263efc32d237ca..052239ee4501844febdd908a245826676147be19 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
@@ -277,18 +277,8 @@ 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);
- }
+ var frames = ((event.args['data'] && event.args['data']['frames']) || []);
+ frames.forEach(payload => this._addPageFrame(event, payload));
} else if (event.name === WebInspector.TimelineModel.DevToolsMetadataEvent.TracingSessionIdForWorker) {
workersDevToolsMetadataEvents.push(event);
} else if (event.name === WebInspector.TimelineModel.DevToolsMetadataEvent.TracingStartedInBrowser) {
@@ -657,7 +647,10 @@ WebInspector.TimelineModel = class {
--timelineData.stackTrace[i].columnNumber;
}
}
-
+ var pageFrameId = WebInspector.TimelineModel.eventFrameId(event);
+ if (!pageFrameId && eventStack.length)
+ pageFrameId = WebInspector.TimelineData.forEvent(eventStack.peekLast()).frameId;
+ timelineData.frameId = pageFrameId || WebInspector.TimelineData.mainFrameId;
this._asyncEventTracker.processEvent(event);
switch (event.name) {
case recordTypes.ResourceSendRequest:
@@ -806,8 +799,7 @@ WebInspector.TimelineModel = class {
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 || ''});
+ this._addPageFrame(event, eventData);
}
var page = eventData['page'];
if (page && page !== this._currentPage)
@@ -923,6 +915,19 @@ WebInspector.TimelineModel = class {
}
}
+ /**
+ * @param {!WebInspector.TracingModel.Event} event
+ * @param {!Object} payload
+ */
+ _addPageFrame(event, payload) {
+ var processId = event.thread.process().id();
+ var pageFrame = new WebInspector.TimelineModel.PageFrame(this.targetByEvent(event), processId, payload);
+ this._pageFrames.set(pageFrame.id, pageFrame);
+ var parent = payload['parent'] && this._pageFrames.get(`${processId}.${payload['parent']}`);
+ if (parent)
+ parent.addChild(pageFrame);
+ }
+
reset() {
this._virtualThreads = [];
/** @type {!Array<!WebInspector.TracingModel.Event>} */
@@ -969,21 +974,21 @@ WebInspector.TimelineModel = class {
}
/**
- * @return {!Array.<!WebInspector.TracingModel.Event>}
+ * @return {!Array<!WebInspector.TracingModel.Event>}
*/
inspectedTargetEvents() {
return this._inspectedTargetEvents;
}
/**
- * @return {!Array.<!WebInspector.TracingModel.Event>}
+ * @return {!Array<!WebInspector.TracingModel.Event>}
*/
mainThreadEvents() {
return this._mainThreadEvents;
}
/**
- * @param {!Array.<!WebInspector.TracingModel.Event>} events
+ * @param {!Array<!WebInspector.TracingModel.Event>} events
*/
_setMainThreadEvents(events) {
this._mainThreadEvents = events;
@@ -997,7 +1002,7 @@ WebInspector.TimelineModel = class {
}
/**
- * @return {!Array.<!WebInspector.TimelineModel.VirtualThread>}
+ * @return {!Array<!WebInspector.TimelineModel.VirtualThread>}
*/
virtualThreads() {
return this._virtualThreads;
@@ -1352,8 +1357,32 @@ WebInspector.TimelineModel.Record = class {
WebInspector.TimelineModel.MetadataEvents;
-/** @typedef {!{url: string, processId: number, frameId: string, name: string}} */
-WebInspector.TimelineModel.PageFrame;
+WebInspector.TimelineModel.PageFrame = class {
+ /**
+ * @param {?WebInspector.Target} target
+ * @param {number} pid
+ * @param {!Object} payload
+ */
+ constructor(target, pid, payload) {
+ this.frameId = payload['frame'];
+ this.url = payload['url'];
+ this.name = payload['name'];
+ this.processId = pid;
+ this.children = [];
+ /** @type {?WebInspector.TimelineModel.PageFrame} */
+ this.parent = null;
+ this.id = `${this.processId}.${this.frameId}`;
+ this.ownerNode = target && payload['nodeId'] ? new WebInspector.DeferredDOMNode(target, payload['nodeId']) : null;
+ }
+
+ /**
+ * @param {!WebInspector.TimelineModel.PageFrame} child
+ */
+ addChild(child) {
+ this.children.push(child);
+ child.parent = this;
+ }
+};
/**
* @unrestricted
@@ -1870,6 +1899,7 @@ WebInspector.TimelineData = class {
this.picture = null;
/** @type {?WebInspector.TracingModel.Event} */
this._initiator = null;
+ this.frameId = '';
/** @type {number|undefined} */
this.timeWaitingForMainThread;
}
@@ -1922,4 +1952,5 @@ WebInspector.TimelineData = class {
}
};
+WebInspector.TimelineData.mainFrameId = '';
WebInspector.TimelineData._symbol = Symbol('timelineData');

Powered by Google App Engine
This is Rietveld 408576698