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

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

Issue 311113002: Move inspected target events calculation into TracingTimelineModel (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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
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 3e1c67cac7b5f8d4d36e227f0d75f06b039f14f8..9242a642745d81ee2377f0f4363eb6c57cf11800 100644
--- a/Source/devtools/front_end/timeline/TracingTimelineModel.js
+++ b/Source/devtools/front_end/timeline/TracingTimelineModel.js
@@ -10,6 +10,7 @@ WebInspector.TracingTimelineModel = function(tracingModel)
{
this._tracingModel = tracingModel;
this._mainThreadEvents = [];
+ this._inspectedTargetEvents = [];
}
WebInspector.TracingTimelineModel.RecordType = {
@@ -88,20 +89,35 @@ WebInspector.TracingTimelineModel.RecordType = {
LayerTreeHostImplSnapshot: "cc::LayerTreeHostImpl"
};
-
WebInspector.TracingTimelineModel.prototype = {
willStartRecordingTraceEvents: function()
caseq 2014/06/04 13:08:59 nit: I wonder if we really need this one?
yurys 2014/06/04 13:22:16 This will be merged with one on TimelineModel even
{
this._mainThreadEvents = [];
+ this._inspectedTargetEvents = [];
},
didStopRecordingTraceEvents: function()
caseq 2014/06/04 13:08:59 Can we get it as an event from TracingModel instea
yurys 2014/06/04 13:22:16 I was going to do this in a separate change. Timel
{
- var events = this._tracingModel.inspectedTargetEvents();
+ var events = this._tracingModel.devtoolsMetadataEvents();
+ events.sort(WebInspector.TracingModel.Event.compareStartTime);
+
this._resetProcessingState();
- for (var i = 0, length = events.length; i < length; i++)
- this._processEvent(events[i]);
+ for (var i = 0, length = events.length; i < length; i++) {
+ var event = events[i];
+ var process = event.thread.process();
+ var startTime = event.startTime;
+
+ var endTime = null;
caseq 2014/06/04 13:08:59 nit: endTime = Infinity, so that you don't have sp
yurys 2014/06/04 13:22:16 Done.
+ if (i + 1 < length)
+ endTime = events[i + 1].startTime;
+
+ this._mainThread = event.thread;
caseq 2014/06/04 13:08:59 Can we rather bind this to processThreadEvents as
yurys 2014/06/04 13:22:16 Done.
+ process.sortedThreads().forEach(this._processThreadEvents.bind(this, startTime, endTime));
+ this._mainThread = null;
+ }
this._resetProcessingState();
+
+ this._inspectedTargetEvents.sort(WebInspector.TracingModel.Event.compareStartTime);
},
/**
@@ -125,7 +141,7 @@ WebInspector.TracingTimelineModel.prototype = {
*/
inspectedTargetEvents: function()
{
- return this._tracingModel.inspectedTargetEvents();
+ return this._inspectedTargetEvents;
},
/**
@@ -138,6 +154,8 @@ WebInspector.TracingTimelineModel.prototype = {
_resetProcessingState: function()
{
+ this._mainThread = null;
+
this._sendRequestEvents = {};
this._timerEvents = {};
this._requestAnimationFrameEvents = {};
@@ -152,6 +170,31 @@ WebInspector.TracingTimelineModel.prototype = {
},
/**
+ * @param {number} startTime
+ * @param {?number} endTime
+ * @param {!WebInspector.TracingModel.Thread} thread
+ */
+ _processThreadEvents: function(startTime, endTime, thread)
+ {
+ var events = thread.events();
+ var i = 0
+ var length = events.length;
+ while (i < length && events[i].startTime < startTime)
caseq 2014/06/04 13:08:59 nit: i = events.upperBound(startTime, function (ti
yurys 2014/06/04 13:22:16 Done. Changed to use lowerBound
+ i++;
+
+ this._eventStack = [];
caseq 2014/06/04 13:08:59 unused?
yurys 2014/06/04 13:22:16 It is used. This is to make sure that event stack
+ for (; i < length; i++) {
+ var event = events[i];
+ if (endTime && event.startTime >= endTime)
+ break;
+ this._processEvent(event);
+ if (thread === this._mainThread)
+ this._mainThreadEvents.push(event);
+ this._inspectedTargetEvents.push(event);
+ }
+ },
+
+ /**
* @param {!WebInspector.TracingModel.Event} event
*/
_processEvent: function(event)
@@ -258,10 +301,6 @@ WebInspector.TracingTimelineModel.prototype = {
this._inspectedTargetLayerTreeId = event.args["layerTreeId"];
break;
- case recordTypes.TracingStartedInPage:
- this._mainThread = event.thread;
- break;
-
case recordTypes.Paint:
case recordTypes.ScrollLayer:
event.backendNodeId = event.args["data"]["nodeId"];
@@ -294,8 +333,6 @@ WebInspector.TracingTimelineModel.prototype = {
event.imageURL = paintImageEvent.imageURL;
break;
}
- if (this._mainThread === event.thread)
- this._mainThreadEvents.push(event);
},
/**

Powered by Google App Engine
This is Rietveld 408576698