Changeset 81971 in webkit


Ignore:
Timestamp:
Mar 25, 2011 10:55:03 AM (13 years ago)
Author:
pfeldman@chromium.org
Message:

2011-03-25 Pavel Feldman <pfeldman@chromium.org>

Reviewed by Yury Semikhatsky.

Web Inspector: refactor Network domain's frame tree API
https://bugs.webkit.org/show_bug.cgi?id=57103

  • inspector/Inspector.json:
  • inspector/InspectorResourceAgent.cpp: (WebCore::buildObjectForFrameResource): (WebCore::buildObjectForCachedResource): (WebCore::InspectorResourceAgent::willSendRequest): (WebCore::InspectorResourceAgent::didLoadResourceFromMemoryCache): (WebCore::buildObjectForFrame): (WebCore::buildObjectForFrameTree): (WebCore::InspectorResourceAgent::didCommitLoad): (WebCore::InspectorResourceAgent::enable):
  • inspector/front-end/NetworkManager.js: (WebInspector.NetworkManager.prototype.requestContent): (WebInspector.NetworkDispatcher): (WebInspector.NetworkDispatcher.prototype.willSendRequest): (WebInspector.NetworkDispatcher.prototype.didReceiveResponse): (WebInspector.NetworkDispatcher.prototype.didLoadResourceFromMemoryCache): (WebInspector.NetworkDispatcher.prototype.frameDetachedFromParent): (WebInspector.NetworkDispatcher.prototype.didCommitLoadForFrame): (WebInspector.NetworkDispatcher.prototype.didCreateWebSocket): (WebInspector.NetworkDispatcher.prototype._appendRedirect): (WebInspector.NetworkDispatcher.prototype._addFramesRecursively): (WebInspector.NetworkDispatcher.prototype._createResource):
  • inspector/front-end/ResourceTreeModel.js: (WebInspector.ResourceTreeModel.prototype.addOrUpdateFrame): (WebInspector.ResourceTreeModel.prototype.didCommitLoadForFrame): (WebInspector.ResourceTreeModel.prototype._clearChildFramesAndResources): (WebInspector.ResourceTreeModel.prototype._clearResources):
  • inspector/front-end/ResourcesPanel.js: (WebInspector.ResourcesPanel.prototype.addOrUpdateFrame): (WebInspector.ResourcesPanel.prototype.addResourceToFrame):
Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r81970 r81971  
     12011-03-25  Pavel Feldman  <pfeldman@chromium.org>
     2
     3        Reviewed by Yury Semikhatsky.
     4
     5        Web Inspector: refactor Network domain's frame tree API
     6        https://bugs.webkit.org/show_bug.cgi?id=57103
     7
     8        * inspector/Inspector.json:
     9        * inspector/InspectorResourceAgent.cpp:
     10        (WebCore::buildObjectForFrameResource):
     11        (WebCore::buildObjectForCachedResource):
     12        (WebCore::InspectorResourceAgent::willSendRequest):
     13        (WebCore::InspectorResourceAgent::didLoadResourceFromMemoryCache):
     14        (WebCore::buildObjectForFrame):
     15        (WebCore::buildObjectForFrameTree):
     16        (WebCore::InspectorResourceAgent::didCommitLoad):
     17        (WebCore::InspectorResourceAgent::enable):
     18        * inspector/front-end/NetworkManager.js:
     19        (WebInspector.NetworkManager.prototype.requestContent):
     20        (WebInspector.NetworkDispatcher):
     21        (WebInspector.NetworkDispatcher.prototype.willSendRequest):
     22        (WebInspector.NetworkDispatcher.prototype.didReceiveResponse):
     23        (WebInspector.NetworkDispatcher.prototype.didLoadResourceFromMemoryCache):
     24        (WebInspector.NetworkDispatcher.prototype.frameDetachedFromParent):
     25        (WebInspector.NetworkDispatcher.prototype.didCommitLoadForFrame):
     26        (WebInspector.NetworkDispatcher.prototype.didCreateWebSocket):
     27        (WebInspector.NetworkDispatcher.prototype._appendRedirect):
     28        (WebInspector.NetworkDispatcher.prototype._addFramesRecursively):
     29        (WebInspector.NetworkDispatcher.prototype._createResource):
     30        * inspector/front-end/ResourceTreeModel.js:
     31        (WebInspector.ResourceTreeModel.prototype.addOrUpdateFrame):
     32        (WebInspector.ResourceTreeModel.prototype.didCommitLoadForFrame):
     33        (WebInspector.ResourceTreeModel.prototype._clearChildFramesAndResources):
     34        (WebInspector.ResourceTreeModel.prototype._clearResources):
     35        * inspector/front-end/ResourcesPanel.js:
     36        (WebInspector.ResourcesPanel.prototype.addOrUpdateFrame):
     37        (WebInspector.ResourcesPanel.prototype.addResourceToFrame):
     38
    1392011-03-25  Dave Hyatt  <hyatt@apple.com>
    240
  • trunk/Source/WebCore/inspector/Inspector.json

    r81957 r81971  
    268268                    "response": { "$ref": "ResourceResponse" },
    269269                    "bodySize": { "type": "number" },
    270                     "loader": { "$ref": "DocumentLoader" }
    271270                }
    272271            },
    273272            {
    274                 "id": "DocumentLoader",
     273                "id": "Frame",
    275274                "type": "object",
    276275                "properties": {
    277                     "frameId": { "type": "string" },
     276                    "id": { "type": "string" },
     277                    "parentId": { "type": "string" },
    278278                    "loaderId": { "type": "string" },
     279                    "name": { "type": "string", "optional": true },
    279280                    "url": { "type": "string" }
     281                }
     282            },
     283            {
     284                "id": "FrameResourceTree",
     285                "type": "object",
     286                "properties": {
     287                    "frame": { "$ref": "Frame" },
     288                    "childFrames": { "type": "array", "optional": true, "items": { "$ref": "FrameResourceTree" } },
     289                    "mainResource": { "$ref": "FrameResource" },
     290                    "subresources": { "type": "array", "items": { "$ref": "CachedResource" } }
    280291                }
    281292            },
     
    285296                "properties": {
    286297                    "url": { "type": "string" },
    287                     "loader": { "$ref": "DocumentLoader" },
    288298                    "request": { "$ref": "ResourceRequest" },
    289299                    "response": { "$ref": "ResourceResponse" }
     
    316326                "name": "setExtraHeaders",
    317327                "parameters": [
    318                     { "name": "headers", "$ref": "NetworkHeaders" }
     328                    { "name": "headers", "type": "object" }
    319329                ]
    320330            }
     
    331341                "parameters": [
    332342                    { "name": "identifier", "type": "integer" },
    333                     { "name": "loader", "$ref": "NetworkLoader" },
     343                    { "name": "frameId", "type": "string" },
     344                    { "name": "loaderId", "type": "string" },
     345                    { "name": "documentURL", "type": "string" },
    334346                    { "name": "request", "$ref": "ResourceRequest" },
    335347                    { "name": "redirectResponse", "$ref": "ResourceResponse" },
     
    374386                    { "name": "identifier", "type": "integer" },
    375387                    { "name": "time", "type": "number" },
    376                     { "name": "localizedDescription", "type": "string" }
     388                    { "name": "errorText", "type": "string" }
    377389                ]
    378390            },
     
    380392                "name": "didLoadResourceFromMemoryCache",
    381393                "parameters": [
     394                    { "name": "frameId", "type": "string" },
     395                    { "name": "loaderId", "type": "string" },
     396                    { "name": "documentURL", "type": "string" },
    382397                    { "name": "time", "type": "number" },
    383                     { "name": "resource", "$ref": "NetworkCachedResource" }
     398                    { "name": "resource", "$ref": "CachedResource" }
    384399                ]
    385400            },
     
    396411                "parameters": [
    397412                    { "name": "frame", "$ref": "Frame" },
    398                     { "name": "loader", "$ref": "NetworkLoader" }
     413                    { "name": "loaderId", "type": "string" }
    399414                ]
    400415            },
     
    411426                    { "name": "identifier", "type": "integer" },
    412427                    { "name": "time", "type": "number" },
    413                     { "name": "request", "$ref": "NetworkWebSocketRequest" }
     428                    { "name": "request", "$ref": "WebSocketRequest" }
    414429                ]
    415430            },
     
    419434                    { "name": "identifier", "type": "integer" },
    420435                    { "name": "time", "type": "number" },
    421                     { "name": "response", "$ref": "NetworkWebSocketResponse" }
     436                    { "name": "response", "$ref": "WebSocketResponse" }
    422437                ]
    423438            },
  • trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp

    r81943 r81971  
    232232}
    233233
    234 static PassRefPtr<InspectorObject> buildObjectForDocumentLoader(DocumentLoader* loader)
    235 {
    236     RefPtr<InspectorObject> documentLoaderObject = InspectorObject::create();
    237     documentLoaderObject->setString("frameId", pointerAsId(loader->frame()));
    238     documentLoaderObject->setString("loaderId", pointerAsId(loader));
    239     documentLoaderObject->setString("url", loader->requestURL().string());
    240     return documentLoaderObject;
    241 }
    242 
    243234static PassRefPtr<InspectorObject> buildObjectForFrameResource(Frame* frame)
    244235{
     
    248239    RefPtr<InspectorObject> resourceObject = InspectorObject::create();
    249240    resourceObject->setString("url", loader->url().string());
    250     resourceObject->setObject("loader", buildObjectForDocumentLoader(loader));
    251241    resourceObject->setObject("request", buildObjectForResourceRequest(loader->request()));
    252242    resourceObject->setObject("response", buildObjectForResourceResponse(loader->response()));
     
    275265}
    276266
    277 static PassRefPtr<InspectorObject> buildObjectForCachedResource(DocumentLoader* loader, const CachedResource& cachedResource)
     267static PassRefPtr<InspectorObject> buildObjectForCachedResource(const CachedResource& cachedResource)
    278268{
    279269    RefPtr<InspectorObject> resourceObject = InspectorObject::create();
     
    282272    resourceObject->setNumber("bodySize", cachedResource.encodedSize());
    283273    resourceObject->setObject("response", buildObjectForResourceResponse(cachedResource.response()));
    284     resourceObject->setObject("loader", buildObjectForDocumentLoader(loader));
    285274    return resourceObject;
    286 }
    287 
    288 static void populateObjectWithFrameResources(Frame* frame, PassRefPtr<InspectorObject> frameResources)
    289 {
    290     frameResources->setObject("resource", buildObjectForFrameResource(frame));
    291     RefPtr<InspectorArray> subresources = InspectorArray::create();
    292     frameResources->setArray("subresources", subresources);
    293 
    294     const CachedResourceLoader::DocumentResourceMap& allResources = frame->document()->cachedResourceLoader()->allCachedResources();
    295     CachedResourceLoader::DocumentResourceMap::const_iterator end = allResources.end();
    296     for (CachedResourceLoader::DocumentResourceMap::const_iterator it = allResources.begin(); it != end; ++it) {
    297         CachedResource* cachedResource = it->second.get();
    298         RefPtr<InspectorObject> cachedResourceObject = buildObjectForCachedResource(frame->loader()->documentLoader(), *cachedResource);
    299         subresources->pushValue(cachedResourceObject);
    300     }
    301275}
    302276
     
    322296    request.setReportRawHeaders(true);
    323297
    324     RefPtr<InspectorObject> loaderObject = buildObjectForDocumentLoader(loader);
    325298    RefPtr<ScriptCallStack> callStack = createScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture, true);
    326299    RefPtr<InspectorArray> callStackValue;
     
    329302    else
    330303        callStackValue = InspectorArray::create();
    331 
    332     m_frontend->willSendRequest(static_cast<int>(identifier), loaderObject, buildObjectForResourceRequest(request), buildObjectForResourceResponse(redirectResponse), currentTime(), callStackValue);
     304    m_frontend->willSendRequest(static_cast<int>(identifier), pointerAsId(loader->frame()), pointerAsId(loader), loader->url().string(), buildObjectForResourceRequest(request), buildObjectForResourceResponse(redirectResponse), currentTime(), callStackValue);
    333305}
    334306
     
    385357void InspectorResourceAgent::didLoadResourceFromMemoryCache(DocumentLoader* loader, const CachedResource* resource)
    386358{
    387     m_frontend->didLoadResourceFromMemoryCache(currentTime(), buildObjectForCachedResource(loader, *resource));
     359    m_frontend->didLoadResourceFromMemoryCache(pointerAsId(loader->frame()), pointerAsId(loader), loader->url().string(), currentTime(), buildObjectForCachedResource(*resource));
    388360}
    389361
     
    405377    }
    406378    frameObject->setString("url", frame->document()->url().string());
     379    frameObject->setString("loaderId", pointerAsId(frame->loader()->documentLoader()));
     380
    407381    return frameObject;
    408382}
    409383
    410 static PassRefPtr<InspectorObject> buildObjectForFrameTree(Frame* frame, bool dumpResources)
    411 {
     384static PassRefPtr<InspectorObject> buildObjectForFrameTree(Frame* frame)
     385{
     386    RefPtr<InspectorObject> result = InspectorObject::create();
    412387    RefPtr<InspectorObject> frameObject = buildObjectForFrame(frame);
    413 
    414     if (dumpResources)
    415         populateObjectWithFrameResources(frame, frameObject);
     388    result->setObject("frame", frameObject);
     389
     390    result->setObject("mainResource", buildObjectForFrameResource(frame));
     391    RefPtr<InspectorArray> subresources = InspectorArray::create();
     392    result->setArray("subresources", subresources);
     393
     394    const CachedResourceLoader::DocumentResourceMap& allResources = frame->document()->cachedResourceLoader()->allCachedResources();
     395    CachedResourceLoader::DocumentResourceMap::const_iterator end = allResources.end();
     396    for (CachedResourceLoader::DocumentResourceMap::const_iterator it = allResources.begin(); it != end; ++it) {
     397        CachedResource* cachedResource = it->second.get();
     398        RefPtr<InspectorObject> cachedResourceObject = buildObjectForCachedResource(*cachedResource);
     399        subresources->pushValue(cachedResourceObject);
     400    }
     401
    416402    RefPtr<InspectorArray> childrenArray;
    417403    for (Frame* child = frame->tree()->firstChild(); child; child = child->tree()->nextSibling()) {
    418404        if (!childrenArray) {
    419405            childrenArray = InspectorArray::create();
    420             frameObject->setArray("children", childrenArray);
     406            result->setArray("childFrames", childrenArray);
    421407        }
    422         childrenArray->pushObject(buildObjectForFrameTree(child, dumpResources));
    423     }
    424     return frameObject;
     408        childrenArray->pushObject(buildObjectForFrameTree(child));
     409    }
     410    return result;
    425411}
    426412
    427413void InspectorResourceAgent::didCommitLoad(DocumentLoader* loader)
    428414{
    429     m_frontend->didCommitLoadForFrame(buildObjectForFrame(loader->frame()), buildObjectForDocumentLoader(loader));
     415    m_frontend->didCommitLoadForFrame(buildObjectForFrame(loader->frame()), pointerAsId(loader));
    430416}
    431417
     
    494480{
    495481    enable();
    496     *object = buildObjectForFrameTree(m_page->mainFrame(), true);
     482    *object = buildObjectForFrameTree(m_page->mainFrame());
    497483}
    498484
  • trunk/Source/WebCore/inspector/front-end/NetworkManager.js

    r81861 r81971  
    5858            callback((!error && success) ? content : null);
    5959        }
    60         NetworkAgent.resourceContent(resource.loader.frameId, resource.url, base64Encode, callbackWrapper);
     60        NetworkAgent.resourceContent(resource.frameId, resource.url, base64Encode, callbackWrapper);
    6161    },
    6262
     
    125125    },
    126126
    127     willSendRequest: function(identifier, loader, request, redirectResponse, time, callStack)
     127    willSendRequest: function(identifier, frameId, loaderId, documentURL, request, redirectResponse, time, callStack)
    128128    {
    129129        var resource = this._inflightResourcesById[identifier];
     
    132132            resource = this._appendRedirect(identifier, time, request.url);
    133133        } else
    134             resource = this._createResource(identifier, request.url, loader, callStack);
    135 
     134            resource = this._createResource(identifier, frameId, loaderId, request.url, documentURL, callStack);
    136135        this._updateResourceWithRequest(resource, request);
    137136        resource.startTime = time;
     
    162161
    163162        this._updateResource(resource);
    164         this._resourceTreeModel.addResourceToFrame(resource.loader.frameId, resource);
     163        this._resourceTreeModel.addResourceToFrame(resource.frameId, resource);
    165164    },
    166165
     
    199198    },
    200199
    201     didLoadResourceFromMemoryCache: function(time, cachedResource)
    202     {
    203         var resource = this._createResource("cached:" + ++this._lastIdentifierForCachedResource, cachedResource.url, cachedResource.loader);
     200    didLoadResourceFromMemoryCache: function(frameId, loaderId, documentURL, time, cachedResource)
     201    {
     202        var resource = this._createResource("cached:" + ++this._lastIdentifierForCachedResource, frameId, loaderId, cachedResource.url, documentURL);
    204203        this._updateResourceWithCachedResource(resource, cachedResource);
    205204        resource.cached = true;
     
    208207        resource.startTime = resource.responseReceivedTime = time;
    209208        this._finishResource(resource, time);
    210         this._resourceTreeModel.addResourceToFrame(resource.loader.frameId, resource);
     209        this._resourceTreeModel.addResourceToFrame(resource.frameId, resource);
    211210    },
    212211
     
    227226    },
    228227
    229     didCommitLoadForFrame: function(frame, loader)
    230     {
    231         this._resourceTreeModel.didCommitLoadForFrame(frame, loader);
     228    didCommitLoadForFrame: function(frame, loaderId)
     229    {
     230        this._resourceTreeModel.didCommitLoadForFrame(frame, loaderId);
    232231        if (!frame.parentId) {
    233232            var mainResource = this._resourceTreeModel.resourceForURL(frame.url);
     
    235234                WebInspector.mainResource = mainResource;
    236235                mainResource.isMainResource = true;
     236                mainResource.documentURL = frame.url;
    237237                this._dispatchEventToListeners(WebInspector.NetworkManager.EventTypes.MainResourceCommitLoad, mainResource);
    238238            }
     
    242242    didCreateWebSocket: function(identifier, requestURL)
    243243    {
    244         var resource = this._createResource(identifier, requestURL);
     244        var resource = this._createResource(identifier, null, null, requestURL);
    245245        resource.type = WebInspector.Resource.Type.WebSocket;
    246246        this._startResource(resource);
     
    291291        delete originalResource.redirects;
    292292        this._finishResource(originalResource, time);
    293         var newResource = this._createResource(identifier, redirectURL, originalResource.loader, originalResource.stackTrace);
     293        var newResource = this._createResource(identifier, originalResource.frameId, originalResource.loaderId,
     294             redirectURL, originalResource.documentURL, originalResource.stackTrace);
    294295        newResource.redirects = previousRedirects.concat(originalResource);
    295296        return newResource;
     
    317318    },
    318319
    319     _addFramesRecursively: function(framePayload)
    320     {
    321         var frameResource = this._createResource(null, framePayload.resource.url, framePayload.resource.loader);
    322         this._updateResourceWithRequest(frameResource, framePayload.resource.request);
    323         this._updateResourceWithResponse(frameResource, framePayload.resource.response);
     320    _addFramesRecursively: function(frameTreePayload)
     321    {
     322        var framePayload = frameTreePayload.frame;
     323        var mainResource = frameTreePayload.mainResource;
     324
     325        var frameResource = this._createResource(null, framePayload.id, framePayload.loaderId, mainResource.url, framePayload.url);
     326        this._updateResourceWithRequest(frameResource, mainResource.request);
     327        this._updateResourceWithResponse(frameResource, mainResource.response);
    324328        frameResource.type = WebInspector.Resource.Type["Document"];
    325329        frameResource.finished = true;
     
    328332        this._resourceTreeModel.addResourceToFrame(framePayload.id, frameResource);
    329333
    330         for (var i = 0; framePayload.children && i < framePayload.children.length; ++i)
    331             this._addFramesRecursively(framePayload.children[i]);
    332 
    333         if (!framePayload.subresources)
    334             return;
    335 
    336         for (var i = 0; i < framePayload.subresources.length; ++i) {
    337             var cachedResource = framePayload.subresources[i];
    338             var resource = this._createResource(null, cachedResource.url, cachedResource.loader);
     334        for (var i = 0; frameTreePayload.childFrames && i < frameTreePayload.childFrames.length; ++i)
     335            this._addFramesRecursively(frameTreePayload.childFrames[i]);
     336
     337        if (!frameTreePayload.subresources)
     338            return;
     339
     340        for (var i = 0; i < frameTreePayload.subresources.length; ++i) {
     341            var cachedResource = frameTreePayload.subresources[i];
     342            var resource = this._createResource(null, framePayload.id, framePayload.loaderId, cachedResource.url, framePayload.url);
    339343            this._updateResourceWithCachedResource(resource, cachedResource);
    340344            resource.finished = true;
     
    349353    },
    350354
    351     _createResource: function(identifier, url, loader, stackTrace)
     355    _createResource: function(identifier, frameId, loaderId, url, documentURL, stackTrace)
    352356    {
    353357        var resource = new WebInspector.Resource(identifier, url);
    354         resource.loader = loader;
    355         if (loader)
    356             resource.documentURL = loader.url;
     358        resource.documentURL = documentURL;
     359        resource.frameId = frameId;
     360        resource.loaderId = loaderId;
    357361        resource.stackTrace = stackTrace;
    358362        return resource;
  • trunk/Source/WebCore/inspector/front-end/ResourceTreeModel.js

    r76587 r81971  
    4747    addOrUpdateFrame: function(frame)
    4848    {
    49         var tmpResource = new WebInspector.Resource(null, frame.url);
    50         WebInspector.panels.resources.addOrUpdateFrame(frame.parentId, frame.id, frame.name, tmpResource.displayName);
     49        WebInspector.panels.resources.addOrUpdateFrame(frame);
    5150        var subframes = this._subframes[frame.parentId];
    5251        if (!subframes) {
     
    5756    },
    5857
    59     didCommitLoadForFrame: function(frame, loader)
     58    didCommitLoadForFrame: function(frame, loaderId)
    6059    {
    6160        // frame.parentId === 0 is when main frame navigation happens.
    62         this._clearChildFramesAndResources(frame.parentId ? frame.id : 0, loader.loaderId);
     61        this._clearChildFramesAndResources(frame.parentId ? frame.id : 0, loaderId);
    6362
    6463        this.addOrUpdateFrame(frame);
     
    142141    },
    143142
    144     _clearChildFramesAndResources: function(frameId, loaderId)
     143    _clearChildFramesAndResources: function(frameId, loaderToPreserveId)
    145144    {
    146145        WebInspector.panels.resources.removeResourcesFromFrame(frameId);
    147146
    148         this._clearResources(frameId, loaderId);
     147        this._clearResources(frameId, loaderToPreserveId);
    149148        var subframes = this._subframes[frameId];
    150149        if (!subframes)
     
    153152        for (var childFrameId in subframes) {
    154153            WebInspector.panels.resources.removeFrame(childFrameId);
    155             this._clearChildFramesAndResources(childFrameId, loaderId);
     154            this._clearChildFramesAndResources(childFrameId, loaderToPreserveId);
    156155        }
    157156        delete this._subframes[frameId];
     
    167166        for (var i = 0; i < resourcesForFrame.length; ++i) {
    168167            var resource = resourcesForFrame[i];
    169             if (resource.loader.loaderId === loaderToPreserveId) {
     168            if (resource.loaderId === loaderToPreserveId) {
    170169                preservedResourcesForFrame.push(resource);
    171170                continue;
     
    175174
    176175        delete this._resourcesByFrameId[frameId];
    177         if (preservedResourcesForFrame.length)
     176        if (preservedResourcesForFrame.length) {
    178177            this._resourcesByFrameId[frameId] = preservedResourcesForFrame;
     178        }
    179179    },
    180180
  • trunk/Source/WebCore/inspector/front-end/ResourcesPanel.js

    r81771 r81971  
    176176    },
    177177
    178     addOrUpdateFrame: function(parentFrameId, frameId, title, subtitle)
    179     {
     178    addOrUpdateFrame: function(frame)
     179    {
     180        var frameId = frame.id;
     181        var parentFrameId = frame.parentId;
     182        var title = frame.name;
     183        var subtitle = new WebInspector.Resource(null, frame.url).displayName;
     184        this.addDocumentURL(frame.url);
     185       
    180186        var frameTreeElement = this._treeElementForFrameId[frameId];
    181187        if (frameTreeElement) {
     
    221227    addResourceToFrame: function(frameId, resource)
    222228    {
    223         this.addDocumentURL(resource.documentURL);
    224 
    225229        if (resource.statusCode >= 301 && resource.statusCode <= 303)
    226230            return;
Note: See TracChangeset for help on using the changeset viewer.