Changeset 90621 in webkit
- Timestamp:
- Jul 8, 2011 4:56:56 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r90619 r90621 1 2011-07-08 Adam Barth <abarth@webkit.org> 2 3 Unreviewed, rolling out r90615. 4 http://trac.webkit.org/changeset/90615 5 https://bugs.webkit.org/show_bug.cgi?id=64158 6 7 broke inspector/extensions/extensions.html (Requested by caseq 8 on #webkit). 9 10 * inspector/front-end/ExtensionAPI.js: 11 (WebInspector.injectedExtensionAPI.Panels.prototype.create): 12 (WebInspector.injectedExtensionAPI.ExtensionSidebarPaneImpl.prototype.setPage): 13 (WebInspector.injectedExtensionAPI.expandURL): 14 * inspector/front-end/ExtensionPanel.js: 15 (WebInspector.ExtensionPanel): 16 * inspector/front-end/ExtensionServer.js: 17 (WebInspector.ExtensionServer): 18 (WebInspector.ExtensionServer.prototype._onCreatePanel): 19 (WebInspector.ExtensionServer.prototype._onSetSidebarPage): 20 (WebInspector.ExtensionServer.prototype._addExtensions): 21 (WebInspector.ExtensionServer.prototype._onWindowMessage): 22 (WebInspector.ExtensionServer.prototype._registerSubscriptionHandler): 23 1 24 2011-07-07 Alexander Pavlov <apavlov@chromium.org> 2 25 -
trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js
r90615 r90621 168 168 169 169 Panels.prototype = { 170 create: function(title, icon , page, callback)170 create: function(title, iconURL, pageURL, callback) 171 171 { 172 172 var id = "extension-panel-" + extensionServer.nextObjectId(); … … 175 175 id: id, 176 176 title: title, 177 icon: icon,178 page: page177 icon: expandURL(iconURL), 178 url: expandURL(pageURL) 179 179 }; 180 180 extensionServer.sendRequest(request, callback && bind(callback, this, new ExtensionPanel(id))); … … 249 249 }, 250 250 251 setPage: function( page)252 { 253 extensionServer.sendRequest({ command: "setSidebarPage", id: this._id, page: page});251 setPage: function(url) 252 { 253 extensionServer.sendRequest({ command: "setSidebarPage", id: this._id, url: expandURL(url) }); 254 254 } 255 255 } … … 441 441 } 442 442 443 function expandURL(url) 444 { 445 if (!url) 446 return url; 447 if (/^[^/]+:/.exec(url)) // See if url has schema. 448 return url; 449 var baseURL = location.protocol + "//" + location.hostname + location.port; 450 if (/^\//.exec(url)) 451 return baseURL + url; 452 return baseURL + location.pathname.replace(/\/[^/]*$/,"/") + url; 453 } 454 443 455 function bind(func, thisObject) 444 456 { -
trunk/Source/WebCore/inspector/front-end/ExtensionPanel.js
r90615 r90621 32 32 { 33 33 this.toolbarItemLabel = label; 34 if (iconURL) 35 this._addStyleRule(".toolbar-item." + id + " .toolbar-icon", "background-image: url(" + iconURL + ");"); 34 this._addStyleRule(".toolbar-item." + id + " .toolbar-icon", "background-image: url(" + iconURL + ");"); 36 35 WebInspector.Panel.call(this, id); 37 36 } -
trunk/Source/WebCore/inspector/front-end/ExtensionServer.js
r90615 r90621 39 39 this._resources = {}; 40 40 this._lastResourceId = 0; 41 this._allowedOrigins = {};42 41 this._status = new WebInspector.ExtensionStatus(); 43 42 … … 205 204 return this._status.E_EXISTS(id); 206 205 207 var panel = new WebInspector.ExtensionPanel(id, message.title, this._expandResourcePath(port._extensionOrigin, message.icon));206 var panel = new WebInspector.ExtensionPanel(id, message.title, message.icon); 208 207 this._clientObjects[id] = panel; 209 208 WebInspector.panels[id] = panel; 210 209 WebInspector.addPanel(panel); 211 210 212 var iframe = this.createClientIframe(panel.element, this._expandResourcePath(port._extensionOrigin, message.page));211 var iframe = this.createClientIframe(panel.element, message.url); 213 212 iframe.addStyleClass("panel"); 214 213 return this._status.OK(); … … 259 258 }, 260 259 261 _onSetSidebarPage: function(message , port)260 _onSetSidebarPage: function(message) 262 261 { 263 262 var sidebar = this._clientObjects[message.id]; 264 263 if (!sidebar) 265 264 return this._status.E_NOTFOUND(message.id); 266 sidebar.setPage( this._expandResourcePath(port._extensionOrigin, message.page));265 sidebar.setPage(message.url); 267 266 }, 268 267 … … 403 402 _addExtensions: function(extensions) 404 403 { 405 const urlOriginRegExp = new RegExp("([^:]+:\/\/[^/]*)\/"); // Can't use regexp literal here, MinJS chokes on it.406 407 404 // See ExtensionAPI.js and ExtensionCommon.js for details. 408 405 InspectorFrontendHost.setExtensionAPI(this._buildExtensionAPIInjectedScript()); … … 412 409 if (!extension.startPage) 413 410 return; 414 var originMatch = urlOriginRegExp.exec(extension.startPage);415 if (!originMatch) {416 console.error("Skipping extension with invalid URL: " + extension.startPage);417 continue;418 }419 this._allowedOrigins[originMatch[1]] = true;420 411 var iframe = document.createElement("iframe"); 421 412 iframe.src = extension.startPage; … … 451 442 if (event.data !== "registerExtension") 452 443 return; 453 if (!this._allowedOrigins.hasOwnProperty(event.origin)) {454 console.error("Ignoring unauthorized client request from " + event.origin);455 return;456 }457 444 var port = event.ports[0]; 458 port._extensionOrigin = event.origin;459 445 port.addEventListener("message", this._onmessage.bind(this), false); 460 446 port.start(); … … 484 470 this._subscriptionStartHandlers[eventTopic] = onSubscribeFirst; 485 471 this._subscriptionStopHandlers[eventTopic] = onUnsubscribeLast; 486 },487 488 _expandResourcePath: function(extensionPath, resourcePath)489 {490 if (!resourcePath)491 return;492 return extensionPath + escape(this._normalizePath(resourcePath));493 },494 495 _normalizePath: function(path)496 {497 var source = path.split("/");498 var result = [];499 500 for (var i = 0; i < source.length; ++i) {501 if (source[i] === ".")502 continue;503 // Ignore empty path components resulting from //, as well as a leading and traling slashes.504 if (source[i] === "")505 continue;506 if (source[i] === "..")507 result.pop();508 else509 result.push(source[i]);510 }511 return "/" + result.join("/");512 472 } 513 473 }
Note: See TracChangeset
for help on using the changeset viewer.