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

Unified Diff: Source/devtools/front_end/sdk/TracingModel.js

Issue 1211613002: Timeline: check category presence in list, not string equality (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: fixed tracing-session-id.html Created 5 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/sdk/TracingModel.js
diff --git a/Source/devtools/front_end/sdk/TracingModel.js b/Source/devtools/front_end/sdk/TracingModel.js
index e5e1d7cdd0e40fa2c491873f76cc39c6d663ad05..d0e6b876a1b18e15c03ce4e8f3da928db7a56f70 100644
--- a/Source/devtools/front_end/sdk/TracingModel.js
+++ b/Source/devtools/front_end/sdk/TracingModel.js
@@ -122,8 +122,8 @@ WebInspector.TracingModel.isFlowPhase = function(phase)
*/
WebInspector.TracingModel.isTopLevelEvent = function(event)
{
- return event.category === WebInspector.TracingModel.TopLevelEventCategory ||
- event.category === WebInspector.TracingModel.DevToolsMetadataEventCategory && event.name === "Program"; // Older timelines may have this instead of toplevel.
+ return event.hasCategory(WebInspector.TracingModel.TopLevelEventCategory) ||
+ event.hasCategory(WebInspector.TracingModel.DevToolsMetadataEventCategory) && event.name === "Program"; // Older timelines may have this instead of toplevel.
}
/**
@@ -225,6 +225,8 @@ WebInspector.TracingModel.prototype = {
this._openAsyncEvents = new Map();
/** @type {!Map<string, !Array<!WebInspector.TracingModel.AsyncEvent>>} */
this._openNestableAsyncEvents = new Map();
+ /** @type {!Map<string, !Set<string>>} */
+ this._parsedCategories = new Map();
},
/**
@@ -234,7 +236,7 @@ WebInspector.TracingModel.prototype = {
{
var process = this._processById[payload.pid];
if (!process) {
- process = new WebInspector.TracingModel.Process(payload.pid);
+ process = new WebInspector.TracingModel.Process(this, payload.pid);
this._processById[payload.pid] = process;
}
@@ -269,11 +271,11 @@ WebInspector.TracingModel.prototype = {
this._asyncEvents.push(event);
event._setBackingStorage(backingStorage);
if (event.name === WebInspector.TracingModel.DevToolsMetadataEvent.TracingStartedInPage &&
- event.category === WebInspector.TracingModel.DevToolsMetadataEventCategory) {
+ event.hasCategory(WebInspector.TracingModel.DevToolsMetadataEventCategory)) {
this._devtoolsPageMetadataEvents.push(event);
}
if (event.name === WebInspector.TracingModel.DevToolsMetadataEvent.TracingSessionIdForWorker &&
- event.category === WebInspector.TracingModel.DevToolsMetadataEventCategory) {
+ event.hasCategory(WebInspector.TracingModel.DevToolsMetadataEventCategory)) {
this._devtoolsWorkerMetadataEvents.push(event);
}
return;
@@ -422,7 +424,7 @@ WebInspector.TracingModel.prototype = {
_addNestableAsyncEvent: function(event)
{
var phase = WebInspector.TracingModel.Phase;
- var key = event.category + "." + event.id;
+ var key = event.categoriesString + "." + event.id;
var openEventsStack = this._openNestableAsyncEvents.get(key);
switch (event.phase) {
@@ -459,7 +461,7 @@ WebInspector.TracingModel.prototype = {
_addAsyncEvent: function(event)
{
var phase = WebInspector.TracingModel.Phase;
- var key = event.category + "." + event.name + "." + event.id;
+ var key = event.categoriesString + "." + event.name + "." + event.id;
var asyncEvent = this._openAsyncEvents.get(key);
if (event.phase === phase.AsyncBegin) {
@@ -492,6 +494,20 @@ WebInspector.TracingModel.prototype = {
}
console.assert(false, "Invalid async event phase");
},
+
+ /**
+ * @param {string} str
+ * @return {!Set<string>}
+ */
+ _parsedCategoriesForString: function(str)
+ {
+ var parsedCategories = this._parsedCategories.get(str);
+ if (!parsedCategories) {
+ parsedCategories = new Set(str.split(","));
+ this._parsedCategories.set(str, parsedCategories);
+ }
+ return parsedCategories;
+ }
}
/**
@@ -527,16 +543,18 @@ WebInspector.TracingModel.Loader.prototype = {
/**
* @constructor
- * @param {string} category
+ * @param {string} categories
* @param {string} name
* @param {!WebInspector.TracingModel.Phase} phase
* @param {number} startTime
* @param {!WebInspector.TracingModel.Thread} thread
*/
-WebInspector.TracingModel.Event = function(category, name, phase, startTime, thread)
+WebInspector.TracingModel.Event = function(categories, name, phase, startTime, thread)
{
/** @type {string} */
- this.category = category;
+ this.categoriesString = categories;
+ /** @type {!Set<string>} */
+ this._parsedCategories = thread._model._parsedCategoriesForString(categories);
/** @type {string} */
this.name = name;
/** @type {!WebInspector.TracingModel.Phase} */
@@ -586,6 +604,15 @@ WebInspector.TracingModel.Event.fromPayload = function(payload, thread)
WebInspector.TracingModel.Event.prototype = {
/**
+ * @param {string} categoryName
+ * @return {boolean}
+ */
+ hasCategory: function(categoryName)
+ {
+ return this._parsedCategories.has(categoryName);
+ },
+
+ /**
* @param {number} endTime
*/
setEndTime: function(endTime)
@@ -749,7 +776,7 @@ WebInspector.TracingModel.ObjectSnapshot.prototype = {
*/
WebInspector.TracingModel.AsyncEvent = function(startEvent)
{
- WebInspector.TracingModel.Event.call(this, startEvent.category, startEvent.name, startEvent.phase, startEvent.startTime, startEvent.thread)
+ WebInspector.TracingModel.Event.call(this, startEvent.categoriesString, startEvent.name, startEvent.phase, startEvent.startTime, startEvent.thread)
this.addArgs(startEvent.args);
this.steps = [startEvent];
}
@@ -825,9 +852,10 @@ WebInspector.TracingModel.NamedObject._sort = function(array)
/**
* @constructor
* @extends {WebInspector.TracingModel.NamedObject}
+ * @param {!WebInspector.TracingModel} model
* @param {number} id
*/
-WebInspector.TracingModel.Process = function(id)
+WebInspector.TracingModel.Process = function(model, id)
{
WebInspector.TracingModel.NamedObject.call(this);
this._setName("Process " + id);
@@ -835,6 +863,7 @@ WebInspector.TracingModel.Process = function(id)
/** @type {!Object.<number, !WebInspector.TracingModel.Thread>} */
this._threads = {};
this._threadByName = new Map();
+ this._model = model;
}
WebInspector.TracingModel.Process.prototype = {
@@ -912,6 +941,7 @@ WebInspector.TracingModel.Thread = function(process, id)
this._events = [];
this._asyncEvents = [];
this._id = id;
+ this._model = process._model;
}
WebInspector.TracingModel.Thread.prototype = {
@@ -943,7 +973,7 @@ WebInspector.TracingModel.Thread.prototype = {
if (!stack.length)
continue;
var top = stack.pop();
- if (top.name !== e.name || top.category !== e.category)
+ if (top.name !== e.name || top.categoriesString !== e.categoriesString)
console.error("B/E events mismatch at " + top.startTime + " (" + top.name + ") vs. " + e.startTime + " (" + e.name + ")");
else
top._complete(e);
« no previous file with comments | « Source/devtools/front_end/components_lazy/FilmStripModel.js ('k') | Source/devtools/front_end/timeline/TimelineFlameChart.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698