Index: third_party/WebKit/Source/devtools/front_end/extensions/ExtensionServer.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/extensions/ExtensionServer.js b/third_party/WebKit/Source/devtools/front_end/extensions/ExtensionServer.js |
index 92fde8b013f621b9097e0b0288aa7a474221b7f4..9a6d62a741068a2bf566b70b46f77f7db580d139 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/extensions/ExtensionServer.js |
+++ b/third_party/WebKit/Source/devtools/front_end/extensions/ExtensionServer.js |
@@ -49,11 +49,16 @@ WebInspector.ExtensionServer = function() |
this._sidebarPanes = []; |
/** @type {!Array.<!WebInspector.ExtensionAuditCategory>} */ |
this._auditCategories = []; |
+ /** @type {!Array.<!WebInspector.ExtensionTraceProvider>} */ |
+ this._traceProviders = []; |
+ |
var commands = WebInspector.extensionAPI.Commands; |
this._registerHandler(commands.AddAuditCategory, this._onAddAuditCategory.bind(this)); |
this._registerHandler(commands.AddAuditResult, this._onAddAuditResult.bind(this)); |
+ this._registerHandler(commands.AddTraceProvider, this._onAddTraceProvider.bind(this)); |
+ this._registerHandler(commands.AddTraceData, this._onAddTraceData.bind(this)); |
this._registerHandler(commands.AddRequestHeaders, this._onAddRequestHeaders.bind(this)); |
this._registerHandler(commands.ApplyStyleSheet, this._onApplyStyleSheet.bind(this)); |
this._registerHandler(commands.CreatePanel, this._onCreatePanel.bind(this)); |
@@ -87,7 +92,8 @@ WebInspector.ExtensionServer = function() |
WebInspector.ExtensionServer.Events = { |
SidebarPaneAdded: "SidebarPaneAdded", |
- AuditCategoryAdded: "AuditCategoryAdded" |
+ AuditCategoryAdded: "AuditCategoryAdded", |
+ TraceProviderAdded: "TraceProviderAdded" |
} |
WebInspector.ExtensionServer.prototype = { |
@@ -170,6 +176,23 @@ WebInspector.ExtensionServer.prototype = { |
}, |
/** |
+ * @param {string} traceProviderId |
+ */ |
+ startTraceRecording: function(traceProviderId) |
+ { |
+ this._postNotification("trace-recording-started-" + traceProviderId); |
+ }, |
+ |
+ /** |
+ * @param {string} traceProviderId |
+ * @param {!WebInspector.ExtensionTraceData} traceData |
+ */ |
+ stopTraceRecording: function(traceProviderId, traceData) |
+ { |
+ this._postNotification("trace-recording-stopped-" + traceProviderId, traceData.id()); |
+ }, |
+ |
+ /** |
* @param {string} type |
* @return {boolean} |
*/ |
@@ -582,6 +605,22 @@ WebInspector.ExtensionServer.prototype = { |
this.dispatchEventToListeners(WebInspector.ExtensionServer.Events.AuditCategoryAdded, category); |
}, |
+ _onAddTraceProvider: function(message, port) |
+ { |
+ var provider = new WebInspector.ExtensionTraceProvider(port._extensionOrigin, message.id, message.categoryName, message.categoryTooltip); |
+ this._clientObjects[message.id] = provider; |
+ this._traceProviders.push(provider); |
+ this.dispatchEventToListeners(WebInspector.ExtensionServer.Events.TraceProviderAdded, provider); |
+ }, |
+ |
+ /** |
+ * @return {!Array.<!WebInspector.ExtensionTraceProvider>} |
+ */ |
+ traceProviders: function() |
+ { |
+ return this._traceProviders; |
+ }, |
+ |
/** |
* @return {!Array.<!WebInspector.ExtensionAuditCategory>} |
*/ |
@@ -603,6 +642,20 @@ WebInspector.ExtensionServer.prototype = { |
return this._status.OK(); |
}, |
+ _onAddTraceData: function(message) |
+ { |
+ var traceProvider = /** {!WebInspector.ExtensionTraceProvider} */ (this._clientObjects[message.traceProviderId]); |
+ if (!traceProvider) |
+ return this._status.E_NOTFOUND(message.traceProviderId); |
+ var traceData = traceProvider.traceData; |
+ try { |
+ traceData.addTraceData(message.threadName, message.events); |
+ } catch (e) { |
+ return e; |
+ } |
+ return this._status.OK(); |
+ }, |
+ |
_onUpdateAuditProgress: function(message) |
{ |
var auditResult = /** {!WebInspector.ExtensionAuditCategoryResults} */ (this._clientObjects[message.resultId]); |