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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/extensions/ExtensionServer.js

Issue 2493373002: DevTools: rename WebInspector into modules. (Closed)
Patch Set: for bots Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 13 matching lines...) Expand all
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 /** 31 /**
32 * @unrestricted 32 * @unrestricted
33 */ 33 */
34 WebInspector.ExtensionServer = class extends WebInspector.Object { 34 Extensions.ExtensionServer = class extends Common.Object {
35 /** 35 /**
36 * @suppressGlobalPropertiesCheck 36 * @suppressGlobalPropertiesCheck
37 */ 37 */
38 constructor() { 38 constructor() {
39 super(); 39 super();
40 this._clientObjects = {}; 40 this._clientObjects = {};
41 this._handlers = {}; 41 this._handlers = {};
42 this._subscribers = {}; 42 this._subscribers = {};
43 this._subscriptionStartHandlers = {}; 43 this._subscriptionStartHandlers = {};
44 this._subscriptionStopHandlers = {}; 44 this._subscriptionStopHandlers = {};
45 this._extraHeaders = {}; 45 this._extraHeaders = {};
46 this._requests = {}; 46 this._requests = {};
47 this._lastRequestId = 0; 47 this._lastRequestId = 0;
48 this._registeredExtensions = {}; 48 this._registeredExtensions = {};
49 this._status = new WebInspector.ExtensionStatus(); 49 this._status = new Extensions.ExtensionStatus();
50 /** @type {!Array.<!WebInspector.ExtensionSidebarPane>} */ 50 /** @type {!Array.<!Extensions.ExtensionSidebarPane>} */
51 this._sidebarPanes = []; 51 this._sidebarPanes = [];
52 /** @type {!Array.<!WebInspector.ExtensionAuditCategory>} */ 52 /** @type {!Array.<!Extensions.ExtensionAuditCategory>} */
53 this._auditCategories = []; 53 this._auditCategories = [];
54 /** @type {!Array.<!WebInspector.ExtensionTraceProvider>} */ 54 /** @type {!Array.<!Extensions.ExtensionTraceProvider>} */
55 this._traceProviders = []; 55 this._traceProviders = [];
56 56
57 var commands = WebInspector.extensionAPI.Commands; 57 var commands = Extensions.extensionAPI.Commands;
58 58
59 this._registerHandler(commands.AddAuditCategory, this._onAddAuditCategory.bi nd(this)); 59 this._registerHandler(commands.AddAuditCategory, this._onAddAuditCategory.bi nd(this));
60 this._registerHandler(commands.AddAuditResult, this._onAddAuditResult.bind(t his)); 60 this._registerHandler(commands.AddAuditResult, this._onAddAuditResult.bind(t his));
61 this._registerHandler(commands.AddRequestHeaders, this._onAddRequestHeaders. bind(this)); 61 this._registerHandler(commands.AddRequestHeaders, this._onAddRequestHeaders. bind(this));
62 this._registerHandler(commands.AddTraceProvider, this._onAddTraceProvider.bi nd(this)); 62 this._registerHandler(commands.AddTraceProvider, this._onAddTraceProvider.bi nd(this));
63 this._registerHandler(commands.ApplyStyleSheet, this._onApplyStyleSheet.bind (this)); 63 this._registerHandler(commands.ApplyStyleSheet, this._onApplyStyleSheet.bind (this));
64 this._registerHandler(commands.CreatePanel, this._onCreatePanel.bind(this)); 64 this._registerHandler(commands.CreatePanel, this._onCreatePanel.bind(this));
65 this._registerHandler(commands.CreateSidebarPane, this._onCreateSidebarPane. bind(this)); 65 this._registerHandler(commands.CreateSidebarPane, this._onCreateSidebarPane. bind(this));
66 this._registerHandler(commands.CreateToolbarButton, this._onCreateToolbarBut ton.bind(this)); 66 this._registerHandler(commands.CreateToolbarButton, this._onCreateToolbarBut ton.bind(this));
67 this._registerHandler(commands.EvaluateOnInspectedPage, this._onEvaluateOnIn spectedPage.bind(this)); 67 this._registerHandler(commands.EvaluateOnInspectedPage, this._onEvaluateOnIn spectedPage.bind(this));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 hasExtensions() { 107 hasExtensions() {
108 return !!Object.keys(this._registeredExtensions).length; 108 return !!Object.keys(this._registeredExtensions).length;
109 } 109 }
110 110
111 /** 111 /**
112 * @param {string} panelId 112 * @param {string} panelId
113 * @param {string} action 113 * @param {string} action
114 * @param {string=} searchString 114 * @param {string=} searchString
115 */ 115 */
116 notifySearchAction(panelId, action, searchString) { 116 notifySearchAction(panelId, action, searchString) {
117 this._postNotification(WebInspector.extensionAPI.Events.PanelSearch + panelI d, action, searchString); 117 this._postNotification(Extensions.extensionAPI.Events.PanelSearch + panelId, action, searchString);
118 } 118 }
119 119
120 /** 120 /**
121 * @param {string} identifier 121 * @param {string} identifier
122 * @param {number=} frameIndex 122 * @param {number=} frameIndex
123 */ 123 */
124 notifyViewShown(identifier, frameIndex) { 124 notifyViewShown(identifier, frameIndex) {
125 this._postNotification(WebInspector.extensionAPI.Events.ViewShown + identifi er, frameIndex); 125 this._postNotification(Extensions.extensionAPI.Events.ViewShown + identifier , frameIndex);
126 } 126 }
127 127
128 /** 128 /**
129 * @param {string} identifier 129 * @param {string} identifier
130 */ 130 */
131 notifyViewHidden(identifier) { 131 notifyViewHidden(identifier) {
132 this._postNotification(WebInspector.extensionAPI.Events.ViewHidden + identif ier); 132 this._postNotification(Extensions.extensionAPI.Events.ViewHidden + identifie r);
133 } 133 }
134 134
135 /** 135 /**
136 * @param {string} identifier 136 * @param {string} identifier
137 */ 137 */
138 notifyButtonClicked(identifier) { 138 notifyButtonClicked(identifier) {
139 this._postNotification(WebInspector.extensionAPI.Events.ButtonClicked + iden tifier); 139 this._postNotification(Extensions.extensionAPI.Events.ButtonClicked + identi fier);
140 } 140 }
141 141
142 _inspectedURLChanged(event) { 142 _inspectedURLChanged(event) {
143 if (event.data !== WebInspector.targetManager.mainTarget()) 143 if (event.data !== SDK.targetManager.mainTarget())
144 return; 144 return;
145 this._requests = {}; 145 this._requests = {};
146 var url = event.data.inspectedURL(); 146 var url = event.data.inspectedURL();
147 this._postNotification(WebInspector.extensionAPI.Events.InspectedURLChanged, url); 147 this._postNotification(Extensions.extensionAPI.Events.InspectedURLChanged, u rl);
148 } 148 }
149 149
150 /** 150 /**
151 * @param {string} categoryId 151 * @param {string} categoryId
152 * @param {!WebInspector.ExtensionAuditCategoryResults} auditResults 152 * @param {!Extensions.ExtensionAuditCategoryResults} auditResults
153 */ 153 */
154 startAuditRun(categoryId, auditResults) { 154 startAuditRun(categoryId, auditResults) {
155 this._clientObjects[auditResults.id()] = auditResults; 155 this._clientObjects[auditResults.id()] = auditResults;
156 this._postNotification('audit-started-' + categoryId, auditResults.id()); 156 this._postNotification('audit-started-' + categoryId, auditResults.id());
157 } 157 }
158 158
159 /** 159 /**
160 * @param {!WebInspector.ExtensionAuditCategoryResults} auditResults 160 * @param {!Extensions.ExtensionAuditCategoryResults} auditResults
161 */ 161 */
162 stopAuditRun(auditResults) { 162 stopAuditRun(auditResults) {
163 delete this._clientObjects[auditResults.id()]; 163 delete this._clientObjects[auditResults.id()];
164 } 164 }
165 165
166 /** 166 /**
167 * @param {string} traceProviderId 167 * @param {string} traceProviderId
168 */ 168 */
169 startTraceRecording(traceProviderId) { 169 startTraceRecording(traceProviderId) {
170 this._postNotification('trace-recording-started-' + traceProviderId); 170 this._postNotification('trace-recording-started-' + traceProviderId);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 extensionHeaders[name] = message.headers[name]; 234 extensionHeaders[name] = message.headers[name];
235 var allHeaders = /** @type {!Protocol.Network.Headers} */ ({}); 235 var allHeaders = /** @type {!Protocol.Network.Headers} */ ({});
236 for (var extension in this._extraHeaders) { 236 for (var extension in this._extraHeaders) {
237 var headers = this._extraHeaders[extension]; 237 var headers = this._extraHeaders[extension];
238 for (name in headers) { 238 for (name in headers) {
239 if (typeof headers[name] === 'string') 239 if (typeof headers[name] === 'string')
240 allHeaders[name] = headers[name]; 240 allHeaders[name] = headers[name];
241 } 241 }
242 } 242 }
243 243
244 WebInspector.multitargetNetworkManager.setExtraHTTPHeaders(allHeaders); 244 SDK.multitargetNetworkManager.setExtraHTTPHeaders(allHeaders);
245 } 245 }
246 246
247 /** 247 /**
248 * @param {*} message 248 * @param {*} message
249 * @suppressGlobalPropertiesCheck 249 * @suppressGlobalPropertiesCheck
250 */ 250 */
251 _onApplyStyleSheet(message) { 251 _onApplyStyleSheet(message) {
252 if (!Runtime.experiments.isEnabled('applyCustomStylesheet')) 252 if (!Runtime.experiments.isEnabled('applyCustomStylesheet'))
253 return; 253 return;
254 var styleSheet = createElement('style'); 254 var styleSheet = createElement('style');
255 styleSheet.textContent = message.styleSheet; 255 styleSheet.textContent = message.styleSheet;
256 document.head.appendChild(styleSheet); 256 document.head.appendChild(styleSheet);
257 } 257 }
258 258
259 _onCreatePanel(message, port) { 259 _onCreatePanel(message, port) {
260 var id = message.id; 260 var id = message.id;
261 // The ids are generated on the client API side and must be unique, so the c heck below 261 // The ids are generated on the client API side and must be unique, so the c heck below
262 // shouldn't be hit unless someone is bypassing the API. 262 // shouldn't be hit unless someone is bypassing the API.
263 if (id in this._clientObjects || WebInspector.inspectorView.hasPanel(id)) 263 if (id in this._clientObjects || UI.inspectorView.hasPanel(id))
264 return this._status.E_EXISTS(id); 264 return this._status.E_EXISTS(id);
265 265
266 var page = this._expandResourcePath(port._extensionOrigin, message.page); 266 var page = this._expandResourcePath(port._extensionOrigin, message.page);
267 var persistentId = port._extensionOrigin + message.title; 267 var persistentId = port._extensionOrigin + message.title;
268 persistentId = persistentId.replace(/\s/g, ''); 268 persistentId = persistentId.replace(/\s/g, '');
269 var panelView = new WebInspector.ExtensionServerPanelView( 269 var panelView = new Extensions.ExtensionServerPanelView(
270 persistentId, message.title, new WebInspector.ExtensionPanel(this, persi stentId, id, page)); 270 persistentId, message.title, new Extensions.ExtensionPanel(this, persist entId, id, page));
271 this._clientObjects[id] = panelView; 271 this._clientObjects[id] = panelView;
272 WebInspector.inspectorView.addPanel(panelView); 272 UI.inspectorView.addPanel(panelView);
273 return this._status.OK(); 273 return this._status.OK();
274 } 274 }
275 275
276 _onShowPanel(message) { 276 _onShowPanel(message) {
277 var panelViewId = message.id; 277 var panelViewId = message.id;
278 var panelView = this._clientObjects[message.id]; 278 var panelView = this._clientObjects[message.id];
279 if (panelView && panelView instanceof WebInspector.ExtensionServerPanelView) 279 if (panelView && panelView instanceof Extensions.ExtensionServerPanelView)
280 panelViewId = panelView.viewId(); 280 panelViewId = panelView.viewId();
281 WebInspector.inspectorView.showPanel(panelViewId); 281 UI.inspectorView.showPanel(panelViewId);
282 } 282 }
283 283
284 _onCreateToolbarButton(message, port) { 284 _onCreateToolbarButton(message, port) {
285 var panelView = this._clientObjects[message.panel]; 285 var panelView = this._clientObjects[message.panel];
286 if (!panelView || !(panelView instanceof WebInspector.ExtensionServerPanelVi ew)) 286 if (!panelView || !(panelView instanceof Extensions.ExtensionServerPanelView ))
287 return this._status.E_NOTFOUND(message.panel); 287 return this._status.E_NOTFOUND(message.panel);
288 var button = new WebInspector.ExtensionButton( 288 var button = new Extensions.ExtensionButton(
289 this, message.id, this._expandResourcePath(port._extensionOrigin, messag e.icon), message.tooltip, 289 this, message.id, this._expandResourcePath(port._extensionOrigin, messag e.icon), message.tooltip,
290 message.disabled); 290 message.disabled);
291 this._clientObjects[message.id] = button; 291 this._clientObjects[message.id] = button;
292 292
293 panelView.widget().then(appendButton); 293 panelView.widget().then(appendButton);
294 294
295 /** 295 /**
296 * @param {!WebInspector.Widget} panel 296 * @param {!UI.Widget} panel
297 */ 297 */
298 function appendButton(panel) { 298 function appendButton(panel) {
299 /** @type {!WebInspector.ExtensionPanel} panel*/ (panel).addToolbarItem(bu tton.toolbarButton()); 299 /** @type {!Extensions.ExtensionPanel} panel*/ (panel).addToolbarItem(butt on.toolbarButton());
300 } 300 }
301 301
302 return this._status.OK(); 302 return this._status.OK();
303 } 303 }
304 304
305 _onUpdateButton(message, port) { 305 _onUpdateButton(message, port) {
306 var button = this._clientObjects[message.id]; 306 var button = this._clientObjects[message.id];
307 if (!button || !(button instanceof WebInspector.ExtensionButton)) 307 if (!button || !(button instanceof Extensions.ExtensionButton))
308 return this._status.E_NOTFOUND(message.id); 308 return this._status.E_NOTFOUND(message.id);
309 button.update(this._expandResourcePath(port._extensionOrigin, message.icon), message.tooltip, message.disabled); 309 button.update(this._expandResourcePath(port._extensionOrigin, message.icon), message.tooltip, message.disabled);
310 return this._status.OK(); 310 return this._status.OK();
311 } 311 }
312 312
313 _onCreateSidebarPane(message) { 313 _onCreateSidebarPane(message) {
314 if (message.panel !== 'elements' && message.panel !== 'sources') 314 if (message.panel !== 'elements' && message.panel !== 'sources')
315 return this._status.E_NOTFOUND(message.panel); 315 return this._status.E_NOTFOUND(message.panel);
316 var id = message.id; 316 var id = message.id;
317 var sidebar = new WebInspector.ExtensionSidebarPane(this, message.panel, mes sage.title, id); 317 var sidebar = new Extensions.ExtensionSidebarPane(this, message.panel, messa ge.title, id);
318 this._sidebarPanes.push(sidebar); 318 this._sidebarPanes.push(sidebar);
319 this._clientObjects[id] = sidebar; 319 this._clientObjects[id] = sidebar;
320 this.dispatchEventToListeners(WebInspector.ExtensionServer.Events.SidebarPan eAdded, sidebar); 320 this.dispatchEventToListeners(Extensions.ExtensionServer.Events.SidebarPaneA dded, sidebar);
321 321
322 return this._status.OK(); 322 return this._status.OK();
323 } 323 }
324 324
325 /** 325 /**
326 * @return {!Array.<!WebInspector.ExtensionSidebarPane>} 326 * @return {!Array.<!Extensions.ExtensionSidebarPane>}
327 */ 327 */
328 sidebarPanes() { 328 sidebarPanes() {
329 return this._sidebarPanes; 329 return this._sidebarPanes;
330 } 330 }
331 331
332 _onSetSidebarHeight(message) { 332 _onSetSidebarHeight(message) {
333 var sidebar = this._clientObjects[message.id]; 333 var sidebar = this._clientObjects[message.id];
334 if (!sidebar) 334 if (!sidebar)
335 return this._status.E_NOTFOUND(message.id); 335 return this._status.E_NOTFOUND(message.id);
336 sidebar.setHeight(message.height); 336 sidebar.setHeight(message.height);
337 return this._status.OK(); 337 return this._status.OK();
338 } 338 }
339 339
340 _onSetSidebarContent(message, port) { 340 _onSetSidebarContent(message, port) {
341 var sidebar = this._clientObjects[message.id]; 341 var sidebar = this._clientObjects[message.id];
342 if (!sidebar) 342 if (!sidebar)
343 return this._status.E_NOTFOUND(message.id); 343 return this._status.E_NOTFOUND(message.id);
344 344
345 /** 345 /**
346 * @this {WebInspector.ExtensionServer} 346 * @this {Extensions.ExtensionServer}
347 */ 347 */
348 function callback(error) { 348 function callback(error) {
349 var result = error ? this._status.E_FAILED(error) : this._status.OK(); 349 var result = error ? this._status.E_FAILED(error) : this._status.OK();
350 this._dispatchCallback(message.requestId, port, result); 350 this._dispatchCallback(message.requestId, port, result);
351 } 351 }
352 if (message.evaluateOnPage) 352 if (message.evaluateOnPage)
353 return sidebar.setExpression( 353 return sidebar.setExpression(
354 message.expression, message.rootTitle, message.evaluateOptions, port._ extensionOrigin, callback.bind(this)); 354 message.expression, message.rootTitle, message.evaluateOptions, port._ extensionOrigin, callback.bind(this));
355 sidebar.setObject(message.expression, message.rootTitle, callback.bind(this) ); 355 sidebar.setObject(message.expression, message.rootTitle, callback.bind(this) );
356 } 356 }
357 357
358 _onSetSidebarPage(message, port) { 358 _onSetSidebarPage(message, port) {
359 var sidebar = this._clientObjects[message.id]; 359 var sidebar = this._clientObjects[message.id];
360 if (!sidebar) 360 if (!sidebar)
361 return this._status.E_NOTFOUND(message.id); 361 return this._status.E_NOTFOUND(message.id);
362 sidebar.setPage(this._expandResourcePath(port._extensionOrigin, message.page )); 362 sidebar.setPage(this._expandResourcePath(port._extensionOrigin, message.page ));
363 } 363 }
364 364
365 _onOpenResource(message) { 365 _onOpenResource(message) {
366 var uiSourceCode = WebInspector.networkMapping.uiSourceCodeForURLForAnyTarge t(message.url); 366 var uiSourceCode = Bindings.networkMapping.uiSourceCodeForURLForAnyTarget(me ssage.url);
367 if (uiSourceCode) { 367 if (uiSourceCode) {
368 WebInspector.Revealer.reveal(uiSourceCode.uiLocation(message.lineNumber, 0 )); 368 Common.Revealer.reveal(uiSourceCode.uiLocation(message.lineNumber, 0));
369 return this._status.OK(); 369 return this._status.OK();
370 } 370 }
371 371
372 var resource = WebInspector.resourceForURL(message.url); 372 var resource = Bindings.resourceForURL(message.url);
373 if (resource) { 373 if (resource) {
374 WebInspector.Revealer.reveal(resource); 374 Common.Revealer.reveal(resource);
375 return this._status.OK(); 375 return this._status.OK();
376 } 376 }
377 377
378 var request = WebInspector.NetworkLog.requestForURL(message.url); 378 var request = SDK.NetworkLog.requestForURL(message.url);
379 if (request) { 379 if (request) {
380 WebInspector.Revealer.reveal(request); 380 Common.Revealer.reveal(request);
381 return this._status.OK(); 381 return this._status.OK();
382 } 382 }
383 383
384 return this._status.E_NOTFOUND(message.url); 384 return this._status.E_NOTFOUND(message.url);
385 } 385 }
386 386
387 _onSetOpenResourceHandler(message, port) { 387 _onSetOpenResourceHandler(message, port) {
388 var name = this._registeredExtensions[port._extensionOrigin].name || ('Exten sion ' + port._extensionOrigin); 388 var name = this._registeredExtensions[port._extensionOrigin].name || ('Exten sion ' + port._extensionOrigin);
389 if (message.handlerPresent) 389 if (message.handlerPresent)
390 WebInspector.openAnchorLocationRegistry.registerHandler(name, this._handle OpenURL.bind(this, port)); 390 Components.openAnchorLocationRegistry.registerHandler(name, this._handleOp enURL.bind(this, port));
391 else 391 else
392 WebInspector.openAnchorLocationRegistry.unregisterHandler(name); 392 Components.openAnchorLocationRegistry.unregisterHandler(name);
393 } 393 }
394 394
395 _handleOpenURL(port, details) { 395 _handleOpenURL(port, details) {
396 var url = /** @type {string} */ (details.url); 396 var url = /** @type {string} */ (details.url);
397 var contentProvider = WebInspector.workspace.uiSourceCodeForURL(url) || WebI nspector.resourceForURL(url); 397 var contentProvider = Workspace.workspace.uiSourceCodeForURL(url) || Binding s.resourceForURL(url);
398 if (!contentProvider) 398 if (!contentProvider)
399 return false; 399 return false;
400 400
401 var lineNumber = details.lineNumber; 401 var lineNumber = details.lineNumber;
402 if (typeof lineNumber === 'number') 402 if (typeof lineNumber === 'number')
403 lineNumber += 1; 403 lineNumber += 1;
404 port.postMessage({command: 'open-resource', resource: this._makeResource(con tentProvider), lineNumber: lineNumber}); 404 port.postMessage({command: 'open-resource', resource: this._makeResource(con tentProvider), lineNumber: lineNumber});
405 return true; 405 return true;
406 } 406 }
407 407
408 _onReload(message) { 408 _onReload(message) {
409 var options = /** @type {!ExtensionReloadOptions} */ (message.options || {}) ; 409 var options = /** @type {!ExtensionReloadOptions} */ (message.options || {}) ;
410 410
411 WebInspector.multitargetNetworkManager.setUserAgentOverride( 411 SDK.multitargetNetworkManager.setUserAgentOverride(
412 typeof options.userAgent === 'string' ? options.userAgent : ''); 412 typeof options.userAgent === 'string' ? options.userAgent : '');
413 var injectedScript; 413 var injectedScript;
414 if (options.injectedScript) 414 if (options.injectedScript)
415 injectedScript = '(function(){' + options.injectedScript + '})()'; 415 injectedScript = '(function(){' + options.injectedScript + '})()';
416 WebInspector.targetManager.reloadPage(!!options.ignoreCache, injectedScript) ; 416 SDK.targetManager.reloadPage(!!options.ignoreCache, injectedScript);
417 return this._status.OK(); 417 return this._status.OK();
418 } 418 }
419 419
420 _onEvaluateOnInspectedPage(message, port) { 420 _onEvaluateOnInspectedPage(message, port) {
421 /** 421 /**
422 * @param {?Protocol.Error} error 422 * @param {?Protocol.Error} error
423 * @param {?WebInspector.RemoteObject} remoteObject 423 * @param {?SDK.RemoteObject} remoteObject
424 * @param {boolean=} wasThrown 424 * @param {boolean=} wasThrown
425 * @this {WebInspector.ExtensionServer} 425 * @this {Extensions.ExtensionServer}
426 */ 426 */
427 function callback(error, remoteObject, wasThrown) { 427 function callback(error, remoteObject, wasThrown) {
428 var result; 428 var result;
429 if (error || !remoteObject) 429 if (error || !remoteObject)
430 result = this._status.E_PROTOCOLERROR(error.toString()); 430 result = this._status.E_PROTOCOLERROR(error.toString());
431 else if (wasThrown) 431 else if (wasThrown)
432 result = {isException: true, value: remoteObject.description}; 432 result = {isException: true, value: remoteObject.description};
433 else 433 else
434 result = {value: remoteObject.value}; 434 result = {value: remoteObject.value};
435 435
436 this._dispatchCallback(message.requestId, port, result); 436 this._dispatchCallback(message.requestId, port, result);
437 } 437 }
438 return this.evaluate( 438 return this.evaluate(
439 message.expression, true, true, message.evaluateOptions, port._extension Origin, callback.bind(this)); 439 message.expression, true, true, message.evaluateOptions, port._extension Origin, callback.bind(this));
440 } 440 }
441 441
442 _onGetHAR() { 442 _onGetHAR() {
443 var requests = WebInspector.NetworkLog.requests(); 443 var requests = SDK.NetworkLog.requests();
444 var harLog = (new WebInspector.HARLog(requests)).build(); 444 var harLog = (new SDK.HARLog(requests)).build();
445 for (var i = 0; i < harLog.entries.length; ++i) 445 for (var i = 0; i < harLog.entries.length; ++i)
446 harLog.entries[i]._requestId = this._requestId(requests[i]); 446 harLog.entries[i]._requestId = this._requestId(requests[i]);
447 return harLog; 447 return harLog;
448 } 448 }
449 449
450 /** 450 /**
451 * @param {!WebInspector.ContentProvider} contentProvider 451 * @param {!Common.ContentProvider} contentProvider
452 */ 452 */
453 _makeResource(contentProvider) { 453 _makeResource(contentProvider) {
454 return {url: contentProvider.contentURL(), type: contentProvider.contentType ().name()}; 454 return {url: contentProvider.contentURL(), type: contentProvider.contentType ().name()};
455 } 455 }
456 456
457 /** 457 /**
458 * @return {!Array<!WebInspector.ContentProvider>} 458 * @return {!Array<!Common.ContentProvider>}
459 */ 459 */
460 _onGetPageResources() { 460 _onGetPageResources() {
461 /** @type {!Map<string, !WebInspector.ContentProvider>} */ 461 /** @type {!Map<string, !Common.ContentProvider>} */
462 var resources = new Map(); 462 var resources = new Map();
463 463
464 /** 464 /**
465 * @this {WebInspector.ExtensionServer} 465 * @this {Extensions.ExtensionServer}
466 */ 466 */
467 function pushResourceData(contentProvider) { 467 function pushResourceData(contentProvider) {
468 if (!resources.has(contentProvider.contentURL())) 468 if (!resources.has(contentProvider.contentURL()))
469 resources.set(contentProvider.contentURL(), this._makeResource(contentPr ovider)); 469 resources.set(contentProvider.contentURL(), this._makeResource(contentPr ovider));
470 } 470 }
471 var uiSourceCodes = WebInspector.workspace.uiSourceCodesForProjectType(WebIn spector.projectTypes.Network); 471 var uiSourceCodes = Workspace.workspace.uiSourceCodesForProjectType(Workspac e.projectTypes.Network);
472 uiSourceCodes = uiSourceCodes.concat( 472 uiSourceCodes = uiSourceCodes.concat(
473 WebInspector.workspace.uiSourceCodesForProjectType(WebInspector.projectT ypes.ContentScripts)); 473 Workspace.workspace.uiSourceCodesForProjectType(Workspace.projectTypes.C ontentScripts));
474 uiSourceCodes.forEach(pushResourceData.bind(this)); 474 uiSourceCodes.forEach(pushResourceData.bind(this));
475 for (var target of WebInspector.targetManager.targets(WebInspector.Target.Ca pability.DOM)) 475 for (var target of SDK.targetManager.targets(SDK.Target.Capability.DOM))
476 WebInspector.ResourceTreeModel.fromTarget(target).forAllResources(pushReso urceData.bind(this)); 476 SDK.ResourceTreeModel.fromTarget(target).forAllResources(pushResourceData. bind(this));
477 return resources.valuesArray(); 477 return resources.valuesArray();
478 } 478 }
479 479
480 /** 480 /**
481 * @param {!WebInspector.ContentProvider} contentProvider 481 * @param {!Common.ContentProvider} contentProvider
482 * @param {!Object} message 482 * @param {!Object} message
483 * @param {!MessagePort} port 483 * @param {!MessagePort} port
484 */ 484 */
485 _getResourceContent(contentProvider, message, port) { 485 _getResourceContent(contentProvider, message, port) {
486 /** 486 /**
487 * @param {?string} content 487 * @param {?string} content
488 * @this {WebInspector.ExtensionServer} 488 * @this {Extensions.ExtensionServer}
489 */ 489 */
490 function onContentAvailable(content) { 490 function onContentAvailable(content) {
491 var contentEncoded = false; 491 var contentEncoded = false;
492 if (contentProvider instanceof WebInspector.Resource) 492 if (contentProvider instanceof SDK.Resource)
493 contentEncoded = contentProvider.contentEncoded; 493 contentEncoded = contentProvider.contentEncoded;
494 if (contentProvider instanceof WebInspector.NetworkRequest) 494 if (contentProvider instanceof SDK.NetworkRequest)
495 contentEncoded = contentProvider.contentEncoded; 495 contentEncoded = contentProvider.contentEncoded;
496 var response = {encoding: contentEncoded && content ? 'base64' : '', conte nt: content}; 496 var response = {encoding: contentEncoded && content ? 'base64' : '', conte nt: content};
497 this._dispatchCallback(message.requestId, port, response); 497 this._dispatchCallback(message.requestId, port, response);
498 } 498 }
499 499
500 contentProvider.requestContent().then(onContentAvailable.bind(this)); 500 contentProvider.requestContent().then(onContentAvailable.bind(this));
501 } 501 }
502 502
503 _onGetRequestContent(message, port) { 503 _onGetRequestContent(message, port) {
504 var request = this._requestById(message.id); 504 var request = this._requestById(message.id);
505 if (!request) 505 if (!request)
506 return this._status.E_NOTFOUND(message.id); 506 return this._status.E_NOTFOUND(message.id);
507 this._getResourceContent(request, message, port); 507 this._getResourceContent(request, message, port);
508 } 508 }
509 509
510 _onGetResourceContent(message, port) { 510 _onGetResourceContent(message, port) {
511 var url = /** @type {string} */ (message.url); 511 var url = /** @type {string} */ (message.url);
512 var contentProvider = WebInspector.workspace.uiSourceCodeForURL(url) || WebI nspector.resourceForURL(url); 512 var contentProvider = Workspace.workspace.uiSourceCodeForURL(url) || Binding s.resourceForURL(url);
513 if (!contentProvider) 513 if (!contentProvider)
514 return this._status.E_NOTFOUND(url); 514 return this._status.E_NOTFOUND(url);
515 this._getResourceContent(contentProvider, message, port); 515 this._getResourceContent(contentProvider, message, port);
516 } 516 }
517 517
518 _onSetResourceContent(message, port) { 518 _onSetResourceContent(message, port) {
519 /** 519 /**
520 * @param {?Protocol.Error} error 520 * @param {?Protocol.Error} error
521 * @this {WebInspector.ExtensionServer} 521 * @this {Extensions.ExtensionServer}
522 */ 522 */
523 function callbackWrapper(error) { 523 function callbackWrapper(error) {
524 var response = error ? this._status.E_FAILED(error) : this._status.OK(); 524 var response = error ? this._status.E_FAILED(error) : this._status.OK();
525 this._dispatchCallback(message.requestId, port, response); 525 this._dispatchCallback(message.requestId, port, response);
526 } 526 }
527 527
528 var url = /** @type {string} */ (message.url); 528 var url = /** @type {string} */ (message.url);
529 var uiSourceCode = WebInspector.workspace.uiSourceCodeForURL(url); 529 var uiSourceCode = Workspace.workspace.uiSourceCodeForURL(url);
530 if (!uiSourceCode || !uiSourceCode.contentType().isDocumentOrScriptOrStyleSh eet()) { 530 if (!uiSourceCode || !uiSourceCode.contentType().isDocumentOrScriptOrStyleSh eet()) {
531 var resource = WebInspector.ResourceTreeModel.resourceForURL(url); 531 var resource = SDK.ResourceTreeModel.resourceForURL(url);
532 if (!resource) 532 if (!resource)
533 return this._status.E_NOTFOUND(url); 533 return this._status.E_NOTFOUND(url);
534 return this._status.E_NOTSUPPORTED('Resource is not editable'); 534 return this._status.E_NOTSUPPORTED('Resource is not editable');
535 } 535 }
536 uiSourceCode.setWorkingCopy(message.content); 536 uiSourceCode.setWorkingCopy(message.content);
537 if (message.commit) 537 if (message.commit)
538 uiSourceCode.commitWorkingCopy(); 538 uiSourceCode.commitWorkingCopy();
539 callbackWrapper.call(this, null); 539 callbackWrapper.call(this, null);
540 } 540 }
541 541
542 _requestId(request) { 542 _requestId(request) {
543 if (!request._extensionRequestId) { 543 if (!request._extensionRequestId) {
544 request._extensionRequestId = ++this._lastRequestId; 544 request._extensionRequestId = ++this._lastRequestId;
545 this._requests[request._extensionRequestId] = request; 545 this._requests[request._extensionRequestId] = request;
546 } 546 }
547 return request._extensionRequestId; 547 return request._extensionRequestId;
548 } 548 }
549 549
550 _requestById(id) { 550 _requestById(id) {
551 return this._requests[id]; 551 return this._requests[id];
552 } 552 }
553 553
554 _onAddAuditCategory(message, port) { 554 _onAddAuditCategory(message, port) {
555 var category = new WebInspector.ExtensionAuditCategory( 555 var category = new Extensions.ExtensionAuditCategory(
556 port._extensionOrigin, message.id, message.displayName, message.resultCo unt); 556 port._extensionOrigin, message.id, message.displayName, message.resultCo unt);
557 this._clientObjects[message.id] = category; 557 this._clientObjects[message.id] = category;
558 this._auditCategories.push(category); 558 this._auditCategories.push(category);
559 this.dispatchEventToListeners(WebInspector.ExtensionServer.Events.AuditCateg oryAdded, category); 559 this.dispatchEventToListeners(Extensions.ExtensionServer.Events.AuditCategor yAdded, category);
560 } 560 }
561 561
562 /** 562 /**
563 * @param {!Object} message 563 * @param {!Object} message
564 * @param {!MessagePort} port 564 * @param {!MessagePort} port
565 */ 565 */
566 _onAddTraceProvider(message, port) { 566 _onAddTraceProvider(message, port) {
567 var provider = new WebInspector.ExtensionTraceProvider( 567 var provider = new Extensions.ExtensionTraceProvider(
568 port._extensionOrigin, message.id, message.categoryName, message.categor yTooltip); 568 port._extensionOrigin, message.id, message.categoryName, message.categor yTooltip);
569 this._clientObjects[message.id] = provider; 569 this._clientObjects[message.id] = provider;
570 this._traceProviders.push(provider); 570 this._traceProviders.push(provider);
571 } 571 }
572 572
573 /** 573 /**
574 * @return {!Array<!WebInspector.ExtensionTraceProvider>} 574 * @return {!Array<!Extensions.ExtensionTraceProvider>}
575 */ 575 */
576 traceProviders() { 576 traceProviders() {
577 return this._traceProviders; 577 return this._traceProviders;
578 } 578 }
579 579
580 /** 580 /**
581 * @return {!Array.<!WebInspector.ExtensionAuditCategory>} 581 * @return {!Array.<!Extensions.ExtensionAuditCategory>}
582 */ 582 */
583 auditCategories() { 583 auditCategories() {
584 return this._auditCategories; 584 return this._auditCategories;
585 } 585 }
586 586
587 _onAddAuditResult(message) { 587 _onAddAuditResult(message) {
588 var auditResult = /** {!WebInspector.ExtensionAuditCategoryResults} */ (this ._clientObjects[message.resultId]); 588 var auditResult = /** {!Extensions.ExtensionAuditCategoryResults} */ (this._ clientObjects[message.resultId]);
589 if (!auditResult) 589 if (!auditResult)
590 return this._status.E_NOTFOUND(message.resultId); 590 return this._status.E_NOTFOUND(message.resultId);
591 try { 591 try {
592 auditResult.addResult(message.displayName, message.description, message.se verity, message.details); 592 auditResult.addResult(message.displayName, message.description, message.se verity, message.details);
593 } catch (e) { 593 } catch (e) {
594 return e; 594 return e;
595 } 595 }
596 return this._status.OK(); 596 return this._status.OK();
597 } 597 }
598 598
599 _onUpdateAuditProgress(message) { 599 _onUpdateAuditProgress(message) {
600 var auditResult = /** {!WebInspector.ExtensionAuditCategoryResults} */ (this ._clientObjects[message.resultId]); 600 var auditResult = /** {!Extensions.ExtensionAuditCategoryResults} */ (this._ clientObjects[message.resultId]);
601 if (!auditResult) 601 if (!auditResult)
602 return this._status.E_NOTFOUND(message.resultId); 602 return this._status.E_NOTFOUND(message.resultId);
603 auditResult.updateProgress(Math.min(Math.max(0, message.progress), 1)); 603 auditResult.updateProgress(Math.min(Math.max(0, message.progress), 1));
604 } 604 }
605 605
606 _onStopAuditCategoryRun(message) { 606 _onStopAuditCategoryRun(message) {
607 var auditRun = /** {!WebInspector.ExtensionAuditCategoryResults} */ (this._c lientObjects[message.resultId]); 607 var auditRun = /** {!Extensions.ExtensionAuditCategoryResults} */ (this._cli entObjects[message.resultId]);
608 if (!auditRun) 608 if (!auditRun)
609 return this._status.E_NOTFOUND(message.resultId); 609 return this._status.E_NOTFOUND(message.resultId);
610 auditRun.done(); 610 auditRun.done();
611 } 611 }
612 612
613 _onForwardKeyboardEvent(message) { 613 _onForwardKeyboardEvent(message) {
614 message.entries.forEach(handleEventEntry); 614 message.entries.forEach(handleEventEntry);
615 615
616 /** 616 /**
617 * @param {*} entry 617 * @param {*} entry
(...skipping 29 matching lines...) Expand all
647 } 647 }
648 } 648 }
649 649
650 _dispatchCallback(requestId, port, result) { 650 _dispatchCallback(requestId, port, result) {
651 if (requestId) 651 if (requestId)
652 port.postMessage({command: 'callback', requestId: requestId, result: resul t}); 652 port.postMessage({command: 'callback', requestId: requestId, result: resul t});
653 } 653 }
654 654
655 _initExtensions() { 655 _initExtensions() {
656 this._registerAutosubscriptionHandler( 656 this._registerAutosubscriptionHandler(
657 WebInspector.extensionAPI.Events.ResourceAdded, WebInspector.workspace, 657 Extensions.extensionAPI.Events.ResourceAdded, Workspace.workspace,
658 WebInspector.Workspace.Events.UISourceCodeAdded, this._notifyResourceAdd ed); 658 Workspace.Workspace.Events.UISourceCodeAdded, this._notifyResourceAdded) ;
659 this._registerAutosubscriptionTargetManagerHandler( 659 this._registerAutosubscriptionTargetManagerHandler(
660 WebInspector.extensionAPI.Events.NetworkRequestFinished, WebInspector.Ne tworkManager, 660 Extensions.extensionAPI.Events.NetworkRequestFinished, SDK.NetworkManage r,
661 WebInspector.NetworkManager.Events.RequestFinished, this._notifyRequestF inished); 661 SDK.NetworkManager.Events.RequestFinished, this._notifyRequestFinished);
662 662
663 /** 663 /**
664 * @this {WebInspector.ExtensionServer} 664 * @this {Extensions.ExtensionServer}
665 */ 665 */
666 function onElementsSubscriptionStarted() { 666 function onElementsSubscriptionStarted() {
667 WebInspector.context.addFlavorChangeListener(WebInspector.DOMNode, this._n otifyElementsSelectionChanged, this); 667 UI.context.addFlavorChangeListener(SDK.DOMNode, this._notifyElementsSelect ionChanged, this);
668 } 668 }
669 669
670 /** 670 /**
671 * @this {WebInspector.ExtensionServer} 671 * @this {Extensions.ExtensionServer}
672 */ 672 */
673 function onElementsSubscriptionStopped() { 673 function onElementsSubscriptionStopped() {
674 WebInspector.context.removeFlavorChangeListener(WebInspector.DOMNode, this ._notifyElementsSelectionChanged, this); 674 UI.context.removeFlavorChangeListener(SDK.DOMNode, this._notifyElementsSel ectionChanged, this);
675 } 675 }
676 676
677 this._registerSubscriptionHandler( 677 this._registerSubscriptionHandler(
678 WebInspector.extensionAPI.Events.PanelObjectSelected + 'elements', onEle mentsSubscriptionStarted.bind(this), 678 Extensions.extensionAPI.Events.PanelObjectSelected + 'elements', onEleme ntsSubscriptionStarted.bind(this),
679 onElementsSubscriptionStopped.bind(this)); 679 onElementsSubscriptionStopped.bind(this));
680 this._registerResourceContentCommittedHandler(this._notifyUISourceCodeConten tCommitted); 680 this._registerResourceContentCommittedHandler(this._notifyUISourceCodeConten tCommitted);
681 681
682 WebInspector.targetManager.addEventListener( 682 SDK.targetManager.addEventListener(
683 WebInspector.TargetManager.Events.InspectedURLChanged, this._inspectedUR LChanged, this); 683 SDK.TargetManager.Events.InspectedURLChanged, this._inspectedURLChanged, this);
684 684
685 InspectorExtensionRegistry.getExtensionsAsync(); 685 InspectorExtensionRegistry.getExtensionsAsync();
686 } 686 }
687 687
688 _notifyResourceAdded(event) { 688 _notifyResourceAdded(event) {
689 var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data); 689 var uiSourceCode = /** @type {!Workspace.UISourceCode} */ (event.data);
690 this._postNotification(WebInspector.extensionAPI.Events.ResourceAdded, this. _makeResource(uiSourceCode)); 690 this._postNotification(Extensions.extensionAPI.Events.ResourceAdded, this._m akeResource(uiSourceCode));
691 } 691 }
692 692
693 _notifyUISourceCodeContentCommitted(event) { 693 _notifyUISourceCodeContentCommitted(event) {
694 var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data.uiS ourceCode); 694 var uiSourceCode = /** @type {!Workspace.UISourceCode} */ (event.data.uiSour ceCode);
695 var content = /** @type {string} */ (event.data.content); 695 var content = /** @type {string} */ (event.data.content);
696 this._postNotification( 696 this._postNotification(
697 WebInspector.extensionAPI.Events.ResourceContentCommitted, this._makeRes ource(uiSourceCode), content); 697 Extensions.extensionAPI.Events.ResourceContentCommitted, this._makeResou rce(uiSourceCode), content);
698 } 698 }
699 699
700 _notifyRequestFinished(event) { 700 _notifyRequestFinished(event) {
701 var request = /** @type {!WebInspector.NetworkRequest} */ (event.data); 701 var request = /** @type {!SDK.NetworkRequest} */ (event.data);
702 this._postNotification( 702 this._postNotification(
703 WebInspector.extensionAPI.Events.NetworkRequestFinished, this._requestId (request), 703 Extensions.extensionAPI.Events.NetworkRequestFinished, this._requestId(r equest),
704 (new WebInspector.HAREntry(request)).build()); 704 (new SDK.HAREntry(request)).build());
705 } 705 }
706 706
707 _notifyElementsSelectionChanged() { 707 _notifyElementsSelectionChanged() {
708 this._postNotification(WebInspector.extensionAPI.Events.PanelObjectSelected + 'elements'); 708 this._postNotification(Extensions.extensionAPI.Events.PanelObjectSelected + 'elements');
709 } 709 }
710 710
711 /** 711 /**
712 * @param {!WebInspector.Event} event 712 * @param {!Common.Event} event
713 */ 713 */
714 _addExtensions(event) { 714 _addExtensions(event) {
715 if (WebInspector.extensionServer._overridePlatformExtensionAPIForTest) 715 if (Extensions.extensionServer._overridePlatformExtensionAPIForTest)
716 window.buildPlatformExtensionAPI = WebInspector.extensionServer._overrideP latformExtensionAPIForTest; 716 window.buildPlatformExtensionAPI = Extensions.extensionServer._overridePla tformExtensionAPIForTest;
717 717
718 var extensionInfos = /** @type {!Array.<!ExtensionDescriptor>} */ (event.dat a); 718 var extensionInfos = /** @type {!Array.<!ExtensionDescriptor>} */ (event.dat a);
719 if (this._initializeCommandIssued) 719 if (this._initializeCommandIssued)
720 extensionInfos.forEach(this._addExtension, this); 720 extensionInfos.forEach(this._addExtension, this);
721 else 721 else
722 this._pendingExtensionInfos = extensionInfos; 722 this._pendingExtensionInfos = extensionInfos;
723 } 723 }
724 724
725 /** 725 /**
726 * @param {!WebInspector.Event} event 726 * @param {!Common.Event} event
727 */ 727 */
728 _setInspectedTabId(event) { 728 _setInspectedTabId(event) {
729 this._inspectedTabId = /** @type {string} */ (event.data); 729 this._inspectedTabId = /** @type {string} */ (event.data);
730 } 730 }
731 731
732 /** 732 /**
733 * @param {!ExtensionDescriptor} extensionInfo 733 * @param {!ExtensionDescriptor} extensionInfo
734 * @suppressGlobalPropertiesCheck 734 * @suppressGlobalPropertiesCheck
735 */ 735 */
736 _addExtension(extensionInfo) { 736 _addExtension(extensionInfo) {
737 const urlOriginRegExp = new RegExp('([^:]+:\/\/[^/]*)\/'); // Can't use reg exp literal here, MinJS chokes on it. 737 const urlOriginRegExp = new RegExp('([^:]+:\/\/[^/]*)\/'); // Can't use reg exp literal here, MinJS chokes on it.
738 var startPage = extensionInfo.startPage; 738 var startPage = extensionInfo.startPage;
739 var name = extensionInfo.name; 739 var name = extensionInfo.name;
740 740
741 try { 741 try {
742 var originMatch = urlOriginRegExp.exec(startPage); 742 var originMatch = urlOriginRegExp.exec(startPage);
743 if (!originMatch) { 743 if (!originMatch) {
744 console.error('Skipping extension with invalid URL: ' + startPage); 744 console.error('Skipping extension with invalid URL: ' + startPage);
745 return false; 745 return false;
746 } 746 }
747 var extensionOrigin = originMatch[1]; 747 var extensionOrigin = originMatch[1];
748 if (!this._registeredExtensions[extensionOrigin]) { 748 if (!this._registeredExtensions[extensionOrigin]) {
749 // See ExtensionAPI.js for details. 749 // See ExtensionAPI.js for details.
750 var injectedAPI = buildExtensionAPIInjectedScript( 750 var injectedAPI = buildExtensionAPIInjectedScript(
751 extensionInfo, this._inspectedTabId, WebInspector.themeSupport.theme Name(), 751 extensionInfo, this._inspectedTabId, UI.themeSupport.themeName(),
752 WebInspector.extensionServer['_extensionAPITestHook']); 752 Extensions.extensionServer['_extensionAPITestHook']);
753 InspectorFrontendHost.setInjectedScriptForOrigin(extensionOrigin, inject edAPI); 753 InspectorFrontendHost.setInjectedScriptForOrigin(extensionOrigin, inject edAPI);
754 this._registeredExtensions[extensionOrigin] = {name: name}; 754 this._registeredExtensions[extensionOrigin] = {name: name};
755 } 755 }
756 var iframe = createElement('iframe'); 756 var iframe = createElement('iframe');
757 iframe.src = startPage; 757 iframe.src = startPage;
758 iframe.style.display = 'none'; 758 iframe.style.display = 'none';
759 document.body.appendChild(iframe); // Only for main window. 759 document.body.appendChild(iframe); // Only for main window.
760 } catch (e) { 760 } catch (e) {
761 console.error('Failed to initialize extension ' + startPage + ':' + e); 761 console.error('Failed to initialize extension ' + startPage + ':' + e);
762 return false; 762 return false;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 800
801 _registerSubscriptionHandler(eventTopic, onSubscribeFirst, onUnsubscribeLast) { 801 _registerSubscriptionHandler(eventTopic, onSubscribeFirst, onUnsubscribeLast) {
802 this._subscriptionStartHandlers[eventTopic] = onSubscribeFirst; 802 this._subscriptionStartHandlers[eventTopic] = onSubscribeFirst;
803 this._subscriptionStopHandlers[eventTopic] = onUnsubscribeLast; 803 this._subscriptionStopHandlers[eventTopic] = onUnsubscribeLast;
804 } 804 }
805 805
806 /** 806 /**
807 * @param {string} eventTopic 807 * @param {string} eventTopic
808 * @param {!Object} eventTarget 808 * @param {!Object} eventTarget
809 * @param {string} frontendEventType 809 * @param {string} frontendEventType
810 * @param {function(!WebInspector.Event)} handler 810 * @param {function(!Common.Event)} handler
811 */ 811 */
812 _registerAutosubscriptionHandler(eventTopic, eventTarget, frontendEventType, h andler) { 812 _registerAutosubscriptionHandler(eventTopic, eventTarget, frontendEventType, h andler) {
813 this._registerSubscriptionHandler( 813 this._registerSubscriptionHandler(
814 eventTopic, eventTarget.addEventListener.bind(eventTarget, frontendEvent Type, handler, this), 814 eventTopic, eventTarget.addEventListener.bind(eventTarget, frontendEvent Type, handler, this),
815 eventTarget.removeEventListener.bind(eventTarget, frontendEventType, han dler, this)); 815 eventTarget.removeEventListener.bind(eventTarget, frontendEventType, han dler, this));
816 } 816 }
817 817
818 /** 818 /**
819 * @param {string} eventTopic 819 * @param {string} eventTopic
820 * @param {!Function} modelClass 820 * @param {!Function} modelClass
821 * @param {string} frontendEventType 821 * @param {string} frontendEventType
822 * @param {function(!WebInspector.Event)} handler 822 * @param {function(!Common.Event)} handler
823 */ 823 */
824 _registerAutosubscriptionTargetManagerHandler(eventTopic, modelClass, frontend EventType, handler) { 824 _registerAutosubscriptionTargetManagerHandler(eventTopic, modelClass, frontend EventType, handler) {
825 this._registerSubscriptionHandler( 825 this._registerSubscriptionHandler(
826 eventTopic, WebInspector.targetManager.addModelListener.bind( 826 eventTopic, SDK.targetManager.addModelListener.bind(
827 WebInspector.targetManager, modelClass, frontendEventTyp e, handler, this), 827 SDK.targetManager, modelClass, frontendEventType, handle r, this),
828 WebInspector.targetManager.removeModelListener.bind( 828 SDK.targetManager.removeModelListener.bind(
829 WebInspector.targetManager, modelClass, frontendEventType, handler, this)); 829 SDK.targetManager, modelClass, frontendEventType, handler, this));
830 } 830 }
831 831
832 _registerResourceContentCommittedHandler(handler) { 832 _registerResourceContentCommittedHandler(handler) {
833 /** 833 /**
834 * @this {WebInspector.ExtensionServer} 834 * @this {Extensions.ExtensionServer}
835 */ 835 */
836 function addFirstEventListener() { 836 function addFirstEventListener() {
837 WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.Work ingCopyCommittedByUser, handler, this); 837 Workspace.workspace.addEventListener(Workspace.Workspace.Events.WorkingCop yCommittedByUser, handler, this);
838 WebInspector.workspace.setHasResourceContentTrackingExtensions(true); 838 Workspace.workspace.setHasResourceContentTrackingExtensions(true);
839 } 839 }
840 840
841 /** 841 /**
842 * @this {WebInspector.ExtensionServer} 842 * @this {Extensions.ExtensionServer}
843 */ 843 */
844 function removeLastEventListener() { 844 function removeLastEventListener() {
845 WebInspector.workspace.setHasResourceContentTrackingExtensions(false); 845 Workspace.workspace.setHasResourceContentTrackingExtensions(false);
846 WebInspector.workspace.removeEventListener( 846 Workspace.workspace.removeEventListener(
847 WebInspector.Workspace.Events.WorkingCopyCommittedByUser, handler, thi s); 847 Workspace.Workspace.Events.WorkingCopyCommittedByUser, handler, this);
848 } 848 }
849 849
850 this._registerSubscriptionHandler( 850 this._registerSubscriptionHandler(
851 WebInspector.extensionAPI.Events.ResourceContentCommitted, addFirstEvent Listener.bind(this), 851 Extensions.extensionAPI.Events.ResourceContentCommitted, addFirstEventLi stener.bind(this),
852 removeLastEventListener.bind(this)); 852 removeLastEventListener.bind(this));
853 } 853 }
854 854
855 _expandResourcePath(extensionPath, resourcePath) { 855 _expandResourcePath(extensionPath, resourcePath) {
856 if (!resourcePath) 856 if (!resourcePath)
857 return; 857 return;
858 return extensionPath + this._normalizePath(resourcePath); 858 return extensionPath + this._normalizePath(resourcePath);
859 } 859 }
860 860
861 _normalizePath(path) { 861 _normalizePath(path) {
(...skipping 13 matching lines...) Expand all
875 } 875 }
876 return '/' + result.join('/'); 876 return '/' + result.join('/');
877 } 877 }
878 878
879 /** 879 /**
880 * @param {string} expression 880 * @param {string} expression
881 * @param {boolean} exposeCommandLineAPI 881 * @param {boolean} exposeCommandLineAPI
882 * @param {boolean} returnByValue 882 * @param {boolean} returnByValue
883 * @param {?Object} options 883 * @param {?Object} options
884 * @param {string} securityOrigin 884 * @param {string} securityOrigin
885 * @param {function(?string, ?WebInspector.RemoteObject, boolean=)} callback 885 * @param {function(?string, ?SDK.RemoteObject, boolean=)} callback
886 * @return {!WebInspector.ExtensionStatus.Record|undefined} 886 * @return {!Extensions.ExtensionStatus.Record|undefined}
887 */ 887 */
888 evaluate(expression, exposeCommandLineAPI, returnByValue, options, securityOri gin, callback) { 888 evaluate(expression, exposeCommandLineAPI, returnByValue, options, securityOri gin, callback) {
889 var contextId; 889 var contextId;
890 890
891 /** 891 /**
892 * @param {string} url 892 * @param {string} url
893 * @return {boolean} 893 * @return {boolean}
894 */ 894 */
895 function resolveURLToFrame(url) { 895 function resolveURLToFrame(url) {
896 var found; 896 var found;
897 function hasMatchingURL(frame) { 897 function hasMatchingURL(frame) {
898 found = (frame.url === url) ? frame : null; 898 found = (frame.url === url) ? frame : null;
899 return found; 899 return found;
900 } 900 }
901 WebInspector.ResourceTreeModel.frames().some(hasMatchingURL); 901 SDK.ResourceTreeModel.frames().some(hasMatchingURL);
902 return found; 902 return found;
903 } 903 }
904 904
905 if (typeof options === 'object') { 905 if (typeof options === 'object') {
906 var frame; 906 var frame;
907 if (options.frameURL) { 907 if (options.frameURL) {
908 frame = resolveURLToFrame(options.frameURL); 908 frame = resolveURLToFrame(options.frameURL);
909 } else { 909 } else {
910 var target = WebInspector.targetManager.mainTarget(); 910 var target = SDK.targetManager.mainTarget();
911 var resourceTreeModel = target && WebInspector.ResourceTreeModel.fromTar get(target); 911 var resourceTreeModel = target && SDK.ResourceTreeModel.fromTarget(targe t);
912 frame = resourceTreeModel && resourceTreeModel.mainFrame; 912 frame = resourceTreeModel && resourceTreeModel.mainFrame;
913 } 913 }
914 if (!frame) { 914 if (!frame) {
915 if (options.frameURL) 915 if (options.frameURL)
916 console.warn('evaluate: there is no frame with URL ' + options.frameUR L); 916 console.warn('evaluate: there is no frame with URL ' + options.frameUR L);
917 else 917 else
918 console.warn('evaluate: the main frame is not yet available'); 918 console.warn('evaluate: the main frame is not yet available');
919 return this._status.E_NOTFOUND(options.frameURL || '<top>'); 919 return this._status.E_NOTFOUND(options.frameURL || '<top>');
920 } 920 }
921 921
(...skipping 21 matching lines...) Expand all
943 var executionContext = executionContexts[i]; 943 var executionContext = executionContexts[i];
944 if (executionContext.frameId === frame.id && executionContext.isDefaul t) 944 if (executionContext.frameId === frame.id && executionContext.isDefaul t)
945 context = executionContext; 945 context = executionContext;
946 } 946 }
947 if (!context) 947 if (!context)
948 return this._status.E_FAILED(frame.url + ' has no execution context'); 948 return this._status.E_FAILED(frame.url + ' has no execution context');
949 } 949 }
950 950
951 contextId = context.id; 951 contextId = context.id;
952 } 952 }
953 var target = target ? target : WebInspector.targetManager.mainTarget(); 953 var target = target ? target : SDK.targetManager.mainTarget();
954 if (!target) 954 if (!target)
955 return; 955 return;
956 956
957 target.runtimeAgent().evaluate( 957 target.runtimeAgent().evaluate(
958 expression, 'extension', exposeCommandLineAPI, true, contextId, returnBy Value, false, false, false, onEvalute); 958 expression, 'extension', exposeCommandLineAPI, true, contextId, returnBy Value, false, false, false, onEvalute);
959 959
960 /** 960 /**
961 * @param {?Protocol.Error} error 961 * @param {?Protocol.Error} error
962 * @param {!Protocol.Runtime.RemoteObject} result 962 * @param {!Protocol.Runtime.RemoteObject} result
963 * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails 963 * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails
964 */ 964 */
965 function onEvalute(error, result, exceptionDetails) { 965 function onEvalute(error, result, exceptionDetails) {
966 if (error) { 966 if (error) {
967 callback(error, null, !!exceptionDetails); 967 callback(error, null, !!exceptionDetails);
968 return; 968 return;
969 } 969 }
970 callback(error, target.runtimeModel.createRemoteObject(result), !!exceptio nDetails); 970 callback(error, target.runtimeModel.createRemoteObject(result), !!exceptio nDetails);
971 } 971 }
972 } 972 }
973 }; 973 };
974 974
975 /** @enum {symbol} */ 975 /** @enum {symbol} */
976 WebInspector.ExtensionServer.Events = { 976 Extensions.ExtensionServer.Events = {
977 SidebarPaneAdded: Symbol('SidebarPaneAdded'), 977 SidebarPaneAdded: Symbol('SidebarPaneAdded'),
978 AuditCategoryAdded: Symbol('AuditCategoryAdded') 978 AuditCategoryAdded: Symbol('AuditCategoryAdded')
979 }; 979 };
980 980
981 /** 981 /**
982 * @unrestricted 982 * @unrestricted
983 */ 983 */
984 WebInspector.ExtensionServerPanelView = class extends WebInspector.SimpleView { 984 Extensions.ExtensionServerPanelView = class extends UI.SimpleView {
985 /** 985 /**
986 * @param {string} name 986 * @param {string} name
987 * @param {string} title 987 * @param {string} title
988 * @param {!WebInspector.Panel} panel 988 * @param {!UI.Panel} panel
989 */ 989 */
990 constructor(name, title, panel) { 990 constructor(name, title, panel) {
991 super(title); 991 super(title);
992 this._name = name; 992 this._name = name;
993 this._panel = panel; 993 this._panel = panel;
994 } 994 }
995 995
996 /** 996 /**
997 * @override 997 * @override
998 * @return {string} 998 * @return {string}
999 */ 999 */
1000 viewId() { 1000 viewId() {
1001 return this._name; 1001 return this._name;
1002 } 1002 }
1003 1003
1004 /** 1004 /**
1005 * @override 1005 * @override
1006 * @return {!Promise.<!WebInspector.Widget>} 1006 * @return {!Promise.<!UI.Widget>}
1007 */ 1007 */
1008 widget() { 1008 widget() {
1009 return /** @type {!Promise.<!WebInspector.Widget>} */ (Promise.resolve(this. _panel)); 1009 return /** @type {!Promise.<!UI.Widget>} */ (Promise.resolve(this._panel));
1010 } 1010 }
1011 }; 1011 };
1012 1012
1013 /** 1013 /**
1014 * @unrestricted 1014 * @unrestricted
1015 */ 1015 */
1016 WebInspector.ExtensionStatus = class { 1016 Extensions.ExtensionStatus = class {
1017 constructor() { 1017 constructor() {
1018 /** 1018 /**
1019 * @param {string} code 1019 * @param {string} code
1020 * @param {string} description 1020 * @param {string} description
1021 * @return {!WebInspector.ExtensionStatus.Record} 1021 * @return {!Extensions.ExtensionStatus.Record}
1022 */ 1022 */
1023 function makeStatus(code, description) { 1023 function makeStatus(code, description) {
1024 var details = Array.prototype.slice.call(arguments, 2); 1024 var details = Array.prototype.slice.call(arguments, 2);
1025 var status = {code: code, description: description, details: details}; 1025 var status = {code: code, description: description, details: details};
1026 if (code !== 'OK') { 1026 if (code !== 'OK') {
1027 status.isError = true; 1027 status.isError = true;
1028 console.log('Extension server error: ' + String.vsprintf(description, de tails)); 1028 console.log('Extension server error: ' + String.vsprintf(description, de tails));
1029 } 1029 }
1030 return status; 1030 return status;
1031 } 1031 }
1032 1032
1033 this.OK = makeStatus.bind(null, 'OK', 'OK'); 1033 this.OK = makeStatus.bind(null, 'OK', 'OK');
1034 this.E_EXISTS = makeStatus.bind(null, 'E_EXISTS', 'Object already exists: %s '); 1034 this.E_EXISTS = makeStatus.bind(null, 'E_EXISTS', 'Object already exists: %s ');
1035 this.E_BADARG = makeStatus.bind(null, 'E_BADARG', 'Invalid argument %s: %s') ; 1035 this.E_BADARG = makeStatus.bind(null, 'E_BADARG', 'Invalid argument %s: %s') ;
1036 this.E_BADARGTYPE = makeStatus.bind(null, 'E_BADARGTYPE', 'Invalid type for argument %s: got %s, expected %s'); 1036 this.E_BADARGTYPE = makeStatus.bind(null, 'E_BADARGTYPE', 'Invalid type for argument %s: got %s, expected %s');
1037 this.E_NOTFOUND = makeStatus.bind(null, 'E_NOTFOUND', 'Object not found: %s' ); 1037 this.E_NOTFOUND = makeStatus.bind(null, 'E_NOTFOUND', 'Object not found: %s' );
1038 this.E_NOTSUPPORTED = makeStatus.bind(null, 'E_NOTSUPPORTED', 'Object does n ot support requested operation: %s'); 1038 this.E_NOTSUPPORTED = makeStatus.bind(null, 'E_NOTSUPPORTED', 'Object does n ot support requested operation: %s');
1039 this.E_PROTOCOLERROR = makeStatus.bind(null, 'E_PROTOCOLERROR', 'Inspector p rotocol error: %s'); 1039 this.E_PROTOCOLERROR = makeStatus.bind(null, 'E_PROTOCOLERROR', 'Inspector p rotocol error: %s');
1040 this.E_FAILED = makeStatus.bind(null, 'E_FAILED', 'Operation failed: %s'); 1040 this.E_FAILED = makeStatus.bind(null, 'E_FAILED', 'Operation failed: %s');
1041 } 1041 }
1042 }; 1042 };
1043 1043
1044 /** 1044 /**
1045 * @typedef {{code: string, description: string, details: !Array.<*>}} 1045 * @typedef {{code: string, description: string, details: !Array.<*>}}
1046 */ 1046 */
1047 WebInspector.ExtensionStatus.Record; 1047 Extensions.ExtensionStatus.Record;
1048 1048
1049 WebInspector.extensionAPI = {}; 1049 Extensions.extensionAPI = {};
1050 defineCommonExtensionSymbols(WebInspector.extensionAPI); 1050 defineCommonExtensionSymbols(Extensions.extensionAPI);
1051 1051
1052 /** @type {!WebInspector.ExtensionServer} */ 1052 /** @type {!Extensions.ExtensionServer} */
1053 WebInspector.extensionServer; 1053 Extensions.extensionServer;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698