Changeset 90621 in webkit


Ignore:
Timestamp:
Jul 8, 2011 4:56:56 AM (13 years ago)
Author:
commit-queue@webkit.org
Message:

Unreviewed, rolling out r90615.
http://trac.webkit.org/changeset/90615
https://bugs.webkit.org/show_bug.cgi?id=64158

broke inspector/extensions/extensions.html (Requested by caseq
on #webkit).

  • inspector/front-end/ExtensionAPI.js:

(WebInspector.injectedExtensionAPI.Panels.prototype.create):
(WebInspector.injectedExtensionAPI.ExtensionSidebarPaneImpl.prototype.setPage):
(WebInspector.injectedExtensionAPI.expandURL):

  • inspector/front-end/ExtensionPanel.js:

(WebInspector.ExtensionPanel):

  • inspector/front-end/ExtensionServer.js:

(WebInspector.ExtensionServer):
(WebInspector.ExtensionServer.prototype._onCreatePanel):
(WebInspector.ExtensionServer.prototype._onSetSidebarPage):
(WebInspector.ExtensionServer.prototype._addExtensions):
(WebInspector.ExtensionServer.prototype._onWindowMessage):
(WebInspector.ExtensionServer.prototype._registerSubscriptionHandler):

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r90619 r90621  
     12011-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
    1242011-07-07  Alexander Pavlov  <apavlov@chromium.org>
    225
  • trunk/Source/WebCore/inspector/front-end/ExtensionAPI.js

    r90615 r90621  
    168168
    169169Panels.prototype = {
    170     create: function(title, icon, page, callback)
     170    create: function(title, iconURL, pageURL, callback)
    171171    {
    172172        var id = "extension-panel-" + extensionServer.nextObjectId();
     
    175175            id: id,
    176176            title: title,
    177             icon: icon,
    178             page: page
     177            icon: expandURL(iconURL),
     178            url: expandURL(pageURL)
    179179        };
    180180        extensionServer.sendRequest(request, callback && bind(callback, this, new ExtensionPanel(id)));
     
    249249    },
    250250
    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) });
    254254    }
    255255}
     
    441441}
    442442
     443function 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
    443455function bind(func, thisObject)
    444456{
  • trunk/Source/WebCore/inspector/front-end/ExtensionPanel.js

    r90615 r90621  
    3232{
    3333    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 + ");");
    3635    WebInspector.Panel.call(this, id);
    3736}
  • trunk/Source/WebCore/inspector/front-end/ExtensionServer.js

    r90615 r90621  
    3939    this._resources = {};
    4040    this._lastResourceId = 0;
    41     this._allowedOrigins = {};
    4241    this._status = new WebInspector.ExtensionStatus();
    4342
     
    205204            return this._status.E_EXISTS(id);
    206205
    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);
    208207        this._clientObjects[id] = panel;
    209208        WebInspector.panels[id] = panel;
    210209        WebInspector.addPanel(panel);
    211210
    212         var iframe = this.createClientIframe(panel.element, this._expandResourcePath(port._extensionOrigin, message.page));
     211        var iframe = this.createClientIframe(panel.element, message.url);
    213212        iframe.addStyleClass("panel");
    214213        return this._status.OK();
     
    259258    },
    260259
    261     _onSetSidebarPage: function(message, port)
     260    _onSetSidebarPage: function(message)
    262261    {
    263262        var sidebar = this._clientObjects[message.id];
    264263        if (!sidebar)
    265264            return this._status.E_NOTFOUND(message.id);
    266         sidebar.setPage(this._expandResourcePath(port._extensionOrigin, message.page));
     265        sidebar.setPage(message.url);
    267266    },
    268267
     
    403402    _addExtensions: function(extensions)
    404403    {
    405         const urlOriginRegExp = new RegExp("([^:]+:\/\/[^/]*)\/"); // Can't use regexp literal here, MinJS chokes on it.
    406 
    407404        // See ExtensionAPI.js and ExtensionCommon.js for details.
    408405        InspectorFrontendHost.setExtensionAPI(this._buildExtensionAPIInjectedScript());
     
    412409                if (!extension.startPage)
    413410                    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;
    420411                var iframe = document.createElement("iframe");
    421412                iframe.src = extension.startPage;
     
    451442        if (event.data !== "registerExtension")
    452443            return;
    453         if (!this._allowedOrigins.hasOwnProperty(event.origin)) {
    454             console.error("Ignoring unauthorized client request from " + event.origin);
    455             return;
    456         }
    457444        var port = event.ports[0];
    458         port._extensionOrigin = event.origin;
    459445        port.addEventListener("message", this._onmessage.bind(this), false);
    460446        port.start();
     
    484470        this._subscriptionStartHandlers[eventTopic] =  onSubscribeFirst;
    485471        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             else
    509                 result.push(source[i]);
    510         }
    511         return "/" + result.join("/");
    512472    }
    513473}
Note: See TracChangeset for help on using the changeset viewer.