Chromium Code Reviews| Index: Source/devtools/front_end/timeline/TracingModel.js |
| diff --git a/Source/devtools/front_end/sdk/TracingModel.js b/Source/devtools/front_end/timeline/TracingModel.js |
| similarity index 90% |
| rename from Source/devtools/front_end/sdk/TracingModel.js |
| rename to Source/devtools/front_end/timeline/TracingModel.js |
| index 16c48114103a4da315c1eeb9229d0070b01d62cd..43d5ac9311417e6121dc07db219bedea7665bd14 100644 |
| --- a/Source/devtools/front_end/sdk/TracingModel.js |
| +++ b/Source/devtools/front_end/timeline/TracingModel.js |
| @@ -174,6 +174,7 @@ WebInspector.TracingModel.prototype = { |
| _tracingComplete: function() |
| { |
| + this._bindings = new WebInspector.TracingModel.EventBindings(this); |
| this._active = false; |
| if (!this._pendingStopCallback) |
| return; |
| @@ -181,6 +182,14 @@ WebInspector.TracingModel.prototype = { |
| this._pendingStopCallback = null; |
| }, |
| + /** |
| + * @return {!WebInspector.TracingModel.EventBindings} |
| + */ |
| + bindings: function() |
| + { |
| + return this._bindings; |
| + }, |
| + |
| reset: function() |
| { |
| this._processById = {}; |
| @@ -192,6 +201,7 @@ WebInspector.TracingModel.prototype = { |
| this._inspectedTargetMainThreadEvents = []; |
| this._inspectedTargetLayerTreeHostId = 0; |
| this._frameLifecycleEvents = []; |
| + this._eventToWarning = new Map(); |
|
caseq
2014/05/08 09:03:53
remove?
yurys
2014/05/08 09:47:31
Done.
|
| }, |
| /** |
| @@ -291,6 +301,42 @@ WebInspector.TracingModel.prototype = { |
| } |
| /** |
| + * @param {!WebInspector.TracingModel} model |
| + * @constructor |
| + */ |
| +WebInspector.TracingModel.EventBindings = function(model) { |
| + this._eventToWarning = new Map(); |
| + this._model = model; |
| + this._calculateWarnings(); |
| +} |
| + |
| +WebInspector.TracingModel.EventBindings.prototype = { |
| + /** |
| + * @param {!WebInspector.TracingModel.Event} event |
| + * @return {string|undefined} |
| + */ |
| + eventWarning: function(event) |
| + { |
| + return this._eventToWarning.get(event); |
| + }, |
| + |
| + _calculateWarnings: function() |
| + { |
| + var events = this._model.inspectedTargetMainThreadEvents(); |
| + var currentScriptEvent = null; |
| + for (var i = 0, l = events.length; i < l; i++) { |
|
caseq
2014/05/08 09:03:53
Lowercase l looks bad as identifier, let's use jus
yurys
2014/05/08 09:47:31
Done.
|
| + var event = events[i]; |
| + if (currentScriptEvent && event.startTime > currentScriptEvent.endTime) |
|
caseq
2014/05/08 09:03:53
Are script events never nested?
yurys
2014/05/08 09:47:31
They are but we just need to know if there is at l
|
| + currentScriptEvent = null; |
| + if (event.name === WebInspector.TimelineModel.RecordType.Layout && currentScriptEvent) |
| + this._eventToWarning.put(event, WebInspector.UIString("Forced synchronous layout is a possible performance bottleneck.")); |
| + if (event.name === WebInspector.TimelineModel.RecordType.EvaluateScript || event.name === WebInspector.TimelineModel.RecordType.FunctionCall) |
| + currentScriptEvent = event; |
| + } |
| + } |
| +} |
| + |
| +/** |
| * @constructor |
| * @param {!WebInspector.TracingModel.EventPayload} payload |
| * @param {number} level |