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

Unified Diff: Source/devtools/front_end/TimelineFrameController.js

Issue 61923003: Timeline: show impl-side frames on the Timeline overview (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebased, addressed review comments, added a test Created 7 years 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: Source/devtools/front_end/TimelineFrameController.js
diff --git a/Source/devtools/front_end/TimelineFrameController.js b/Source/devtools/front_end/TimelineFrameController.js
index 057d4a8c7c81d013ca24c216a5e8f3a21ac633e6..274116977a19c1728ba5c31387e0db8deaa740f7 100644
--- a/Source/devtools/front_end/TimelineFrameController.js
+++ b/Source/devtools/front_end/TimelineFrameController.js
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -36,7 +36,8 @@
*/
WebInspector.TimelineFrameController = function(model, overviewPane, presentationModel)
{
- this._lastFrame = null;
+ this._lastMainThreadFrame = null;
+ this._lastBackgroundFrame = null;
this._model = model;
this._overviewPane = overviewPane;
this._presentationModel = presentationModel;
@@ -56,19 +57,18 @@ WebInspector.TimelineFrameController.prototype = {
_onRecordsCleared: function()
{
- this._lastFrame = null;
+ this._lastMainThreadFrame = null;
+ this._lastBackgroundFrame = null;
},
_addRecord: function(record)
{
- if (record.isBackground)
- return;
var records;
var programRecord;
if (record.type === WebInspector.TimelineModel.RecordType.Program) {
programRecord = record;
- if (this._lastFrame)
- this._lastFrame.timeByCategory["other"] += WebInspector.TimelineModel.durationInSeconds(programRecord);
+ if (this._lastMainThreadFrame)
+ this._lastMainThreadFrame.timeByCategory["other"] += WebInspector.TimelineModel.durationInSeconds(programRecord);
records = record["children"] || [];
} else
records = [record];
@@ -83,34 +83,44 @@ WebInspector.TimelineFrameController.prototype = {
{
var isFrameRecord = record.type === WebInspector.TimelineModel.RecordType.BeginFrame;
var programTimeCarryover = isFrameRecord && programRecord ? WebInspector.TimelineModel.endTimeInSeconds(programRecord) - WebInspector.TimelineModel.startTimeInSeconds(record) : 0;
- if (isFrameRecord && this._lastFrame)
- this._flushFrame(record, programTimeCarryover);
- else {
- if (!this._lastFrame)
- this._lastFrame = this._createFrame(record, programTimeCarryover);
- if (!record.thread)
- WebInspector.TimelineModel.aggregateTimeForRecord(this._lastFrame.timeByCategory, record);
- var duration = WebInspector.TimelineModel.durationInSeconds(record);
- this._lastFrame.cpuTime += duration;
- this._lastFrame.timeByCategory["other"] -= duration;
+ var lastFrame = record.thread ? this._lastBackgroundFrame : this._lastMainThreadFrame;
+ if (isFrameRecord && lastFrame) {
+ this._flushFrame(lastFrame, record, programTimeCarryover);
+ lastFrame = this._createFrame(record, programTimeCarryover);
+ } else if (record.type === WebInspector.TimelineModel.RecordType.ActivateLayerTree) {
+ if (lastFrame)
+ lastFrame.mainThreadFrameId = record.data.id;
+ } else {
+ if (!lastFrame)
+ lastFrame = this._createFrame(record, programTimeCarryover);
+ if (!record.thread) {
+ WebInspector.TimelineModel.aggregateTimeForRecord(lastFrame.timeByCategory, record);
+ var duration = WebInspector.TimelineModel.durationInSeconds(record);
+ lastFrame.cpuTime += duration;
+ lastFrame.timeByCategory["other"] -= duration;
+ }
}
+ if (record.thread)
+ this._lastBackgroundFrame = lastFrame;
+ else
+ this._lastMainThreadFrame = lastFrame;
},
/**
+ * @param {WebInspector.TimelineFrame} frame
* @param {Object} record
* @param {number} programTimeCarryover
*/
- _flushFrame: function(record, programTimeCarryover)
+ _flushFrame: function(frame, record, programTimeCarryover)
{
- this._lastFrame.endTime = WebInspector.TimelineModel.startTimeInSeconds(record);
- this._lastFrame.duration = this._lastFrame.endTime - this._lastFrame.startTime;
- this._lastFrame.timeByCategory["other"] -= programTimeCarryover;
+ frame.endTime = WebInspector.TimelineModel.startTimeInSeconds(record);
+ frame.duration = frame.endTime - frame.startTime;
+ frame.timeByCategory["other"] -= programTimeCarryover;
// Alternatively, we could compute CPU time as sum of all Program events.
// This way it's a bit more flexible, as it works in case there's no program events.
- this._lastFrame.cpuTime += this._lastFrame.timeByCategory["other"];
- this._overviewPane.addFrame(this._lastFrame);
- this._presentationModel.addFrame(this._lastFrame);
- this._lastFrame = this._createFrame(record, programTimeCarryover);
+ frame.cpuTime += frame.timeByCategory["other"];
+ this._overviewPane.addFrame(frame);
+ this._presentationModel.addFrame(frame);
},
/**
@@ -123,6 +133,8 @@ WebInspector.TimelineFrameController.prototype = {
frame.startTime = WebInspector.TimelineModel.startTimeInSeconds(record);
frame.startTimeOffset = this._model.recordOffsetInSeconds(record);
frame.timeByCategory["other"] = programTimeCarryover;
+ frame.isBackground = !!record.thread;
+ frame.id = record.data && record.data["id"];
return frame;
},
@@ -169,4 +181,6 @@ WebInspector.TimelineFrame = function()
{
this.timeByCategory = {};
this.cpuTime = 0;
+ /** @type {string} */
+ this.mainThreadFrameId;
}
« no previous file with comments | « LayoutTests/inspector/timeline/timeline-frame-controller-expected.txt ('k') | Source/devtools/front_end/TimelineModel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698