Changeset 85184 in webkit


Ignore:
Timestamp:
Apr 28, 2011 8:08:24 AM (13 years ago)
Author:
pfeldman@chromium.org
Message:

2011-04-28 Pavel Feldman <pfeldman@google.com>

Reviewed by Yury Semikhatsky.

Web Inspector: add ResourceTreeModel tests.
https://bugs.webkit.org/show_bug.cgi?id=59616

  • http/tests/inspector/resource-tree-model-expected.txt: Removed.
  • http/tests/inspector/resource-tree-model.html: Removed.
  • http/tests/inspector/resource-tree/resource-tree-document-url-expected.txt: Added.
  • http/tests/inspector/resource-tree/resource-tree-document-url.html: Added.
  • http/tests/inspector/resource-tree/resource-tree-frame-navigate-expected.txt: Added.
  • http/tests/inspector/resource-tree/resource-tree-frame-navigate.html: Added.
  • http/tests/inspector/resource-tree/resource-tree-reload-expected.txt: Added.
  • http/tests/inspector/resource-tree/resource-tree-reload.html: Added.
  • http/tests/inspector/resource-tree/resource-tree-test.js: Added. (initialize_ResourceTreeTest.InspectorTest.dumpResources): (initialize_ResourceTreeTest.InspectorTest.dumpResources.comparator): (initialize_ResourceTreeTest.InspectorTest.dumpResourcesURLMap): (initialize_ResourceTreeTest.InspectorTest.dumpResourcesTree): (initialize_ResourceTreeTest.InspectorTest.runAfterResourcesAreLoaded.callbackWrapper): (initialize_ResourceTreeTest.InspectorTest.runAfterResourcesAreLoaded): (initialize_ResourceTreeTest.InspectorTest.dumpResourceTreeEverything): (initialize_ResourceTreeTest):
  • http/tests/inspector/resource-tree/resources/dummy-iframe.html: Added.
  • http/tests/inspector/resource-tree/resources/resource-tree-frame-navigate-iframe-after.html: Added.
  • http/tests/inspector/resource-tree/resources/resource-tree-frame-navigate-iframe-before.html: Added.
  • http/tests/inspector/resource-tree/resources/resource-tree-reload-iframe.html: Added.
  • http/tests/inspector/resource-tree/resources/script-initial.js: Added. (foo):
  • http/tests/inspector/resource-tree/resources/script-navigated.js: Added. (foo):
  • http/tests/inspector/resource-tree/resources/styles-initial-2.css: Added. (html):
  • http/tests/inspector/resource-tree/resources/styles-initial.css: Added. (html):
  • http/tests/inspector/resource-tree/resources/styles-navigated.css: Added. (html):
  • platform/win/Skipped:

2011-04-28 Pavel Feldman <pfeldman@google.com>

Reviewed by Yury Semikhatsky.

Web Inspector: add ResourceTreeModel tests.
https://bugs.webkit.org/show_bug.cgi?id=59616

Tests: http/tests/inspector/resource-tree/resource-tree-document-url.html

http/tests/inspector/resource-tree/resource-tree-frame-navigate.html
http/tests/inspector/resource-tree/resource-tree-reload.html

  • inspector/front-end/ResourceTreeModel.js: (WebInspector.ResourceTreeModel.prototype.frontendReused): (WebInspector.ResourceTreeModel.prototype._addFrame): (WebInspector.ResourceTreeModel.prototype._frameNavigated): (WebInspector.ResourceTreeModel.prototype._frameDetached): (WebInspector.ResourceTreeModel.prototype._onResourceUpdated): (WebInspector.ResourceTreeModel.prototype.forAllResources): (WebInspector.ResourceTreeModel.prototype._clearChildFramesAndResources): (WebInspector.ResourceTreeModel.prototype._callForFrameResources): (WebInspector.ResourceTreeModel.prototype._addFramesRecursively):
  • inspector/front-end/ResourcesPanel.js: (WebInspector.ResourcesPanel.prototype._populateResourceTree): (WebInspector.ResourcesPanel.prototype._frameAdded): (WebInspector.ResourcesPanel.prototype._frameDetached): (WebInspector.ResourcesPanel.prototype._frameNavigated): (WebInspector.FrameTreeElement): (WebInspector.FrameTreeElement.prototype.frameNavigated):
Location:
trunk
Files:
21 added
2 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r85183 r85184  
     12011-04-28  Pavel Feldman  <pfeldman@google.com>
     2
     3        Reviewed by Yury Semikhatsky.
     4
     5        Web Inspector: add ResourceTreeModel tests.
     6        https://bugs.webkit.org/show_bug.cgi?id=59616
     7
     8        * http/tests/inspector/resource-tree-model-expected.txt: Removed.
     9        * http/tests/inspector/resource-tree-model.html: Removed.
     10        * http/tests/inspector/resource-tree/resource-tree-document-url-expected.txt: Added.
     11        * http/tests/inspector/resource-tree/resource-tree-document-url.html: Added.
     12        * http/tests/inspector/resource-tree/resource-tree-frame-navigate-expected.txt: Added.
     13        * http/tests/inspector/resource-tree/resource-tree-frame-navigate.html: Added.
     14        * http/tests/inspector/resource-tree/resource-tree-reload-expected.txt: Added.
     15        * http/tests/inspector/resource-tree/resource-tree-reload.html: Added.
     16        * http/tests/inspector/resource-tree/resource-tree-test.js: Added.
     17        (initialize_ResourceTreeTest.InspectorTest.dumpResources):
     18        (initialize_ResourceTreeTest.InspectorTest.dumpResources.comparator):
     19        (initialize_ResourceTreeTest.InspectorTest.dumpResourcesURLMap):
     20        (initialize_ResourceTreeTest.InspectorTest.dumpResourcesTree):
     21        (initialize_ResourceTreeTest.InspectorTest.runAfterResourcesAreLoaded.callbackWrapper):
     22        (initialize_ResourceTreeTest.InspectorTest.runAfterResourcesAreLoaded):
     23        (initialize_ResourceTreeTest.InspectorTest.dumpResourceTreeEverything):
     24        (initialize_ResourceTreeTest):
     25        * http/tests/inspector/resource-tree/resources/dummy-iframe.html: Added.
     26        * http/tests/inspector/resource-tree/resources/resource-tree-frame-navigate-iframe-after.html: Added.
     27        * http/tests/inspector/resource-tree/resources/resource-tree-frame-navigate-iframe-before.html: Added.
     28        * http/tests/inspector/resource-tree/resources/resource-tree-reload-iframe.html: Added.
     29        * http/tests/inspector/resource-tree/resources/script-initial.js: Added.
     30        (foo):
     31        * http/tests/inspector/resource-tree/resources/script-navigated.js: Added.
     32        (foo):
     33        * http/tests/inspector/resource-tree/resources/styles-initial-2.css: Added.
     34        (html):
     35        * http/tests/inspector/resource-tree/resources/styles-initial.css: Added.
     36        (html):
     37        * http/tests/inspector/resource-tree/resources/styles-navigated.css: Added.
     38        (html):
     39        * platform/win/Skipped:
     40
    1412011-04-28  Mikhail Naganov  <mnaganov@chromium.org>
    242
  • trunk/LayoutTests/platform/win/Skipped

    r84942 r85184  
    423423
    424424# Sometimes fails http://webkit.org/b/58367
    425 http/tests/inspector/resource-tree-model.html
     425http/tests/inspector/resource-tree/resource-tree-document-url.html
     426http/tests/inspector/resource-tree/resource-tree-frame-navigate.html
     427http/tests/inspector/resource-tree/resource-tree-reload.html
     428http/tests/inspector/resource-tree/resource-tree-frame-add.html
    426429
    427430################################################################################
  • trunk/Source/WebCore/ChangeLog

    r85183 r85184  
     12011-04-28  Pavel Feldman  <pfeldman@google.com>
     2
     3        Reviewed by Yury Semikhatsky.
     4
     5        Web Inspector: add ResourceTreeModel tests.
     6        https://bugs.webkit.org/show_bug.cgi?id=59616
     7
     8        Tests: http/tests/inspector/resource-tree/resource-tree-document-url.html
     9               http/tests/inspector/resource-tree/resource-tree-frame-navigate.html
     10               http/tests/inspector/resource-tree/resource-tree-reload.html
     11
     12        * inspector/front-end/ResourceTreeModel.js:
     13        (WebInspector.ResourceTreeModel.prototype.frontendReused):
     14        (WebInspector.ResourceTreeModel.prototype._addFrame):
     15        (WebInspector.ResourceTreeModel.prototype._frameNavigated):
     16        (WebInspector.ResourceTreeModel.prototype._frameDetached):
     17        (WebInspector.ResourceTreeModel.prototype._onResourceUpdated):
     18        (WebInspector.ResourceTreeModel.prototype.forAllResources):
     19        (WebInspector.ResourceTreeModel.prototype._clearChildFramesAndResources):
     20        (WebInspector.ResourceTreeModel.prototype._callForFrameResources):
     21        (WebInspector.ResourceTreeModel.prototype._addFramesRecursively):
     22        * inspector/front-end/ResourcesPanel.js:
     23        (WebInspector.ResourcesPanel.prototype._populateResourceTree):
     24        (WebInspector.ResourcesPanel.prototype._frameAdded):
     25        (WebInspector.ResourcesPanel.prototype._frameDetached):
     26        (WebInspector.ResourcesPanel.prototype._frameNavigated):
     27        (WebInspector.FrameTreeElement):
     28        (WebInspector.FrameTreeElement.prototype.frameNavigated):
     29
    1302011-04-28  Mikhail Naganov  <mnaganov@chromium.org>
    231
  • trunk/Source/WebCore/inspector/front-end/ResourceTreeModel.js

    r85048 r85184  
    5858        this._resourcesByFrameId = {};
    5959        this._subframes = {};
     60        this._frameIds = {};
     61        delete this._cachedResourcesProcessed;
    6062        PageAgent.getResourceTree(this._processCachedResources.bind(this));
    6163    },
     
    8082    },
    8183
    82     _addOrUpdateFrame: function(frame)
    83     {
    84         this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.FrameAdded, frame);
    85 
     84    _addFrame: function(frame)
     85    {
     86        this._frameIds[frame.id] = frame;
    8687        var subframes = this._subframes[frame.parentId];
    8788        if (!subframes) {
    8889            subframes = [];
    89             this._subframes[frame.parentId || 0] = subframes;
    90         }
     90            this._subframes[frame.parentId] = subframes;
     91        }
     92
    9193        subframes.push(frame);
     94        this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.FrameAdded, frame);
    9295    },
    9396
     
    113116    _frameNavigated: function(frame, loaderId)
    114117    {
     118        // Do nothing unless cached resource tree is processed - it will overwrite everything.
    115119        if (!this._cachedResourcesProcessed)
    116120            return;
    117121
     122        // Add frame in case it is seen for the first time, otherwise, do a within-frame cleanup.
     123        if (!this._frameIds[frame.id])
     124            this._addFrame(frame);
     125        else
     126            this._clearChildFramesAndResources(frame.id, loaderId);
     127
     128
    118129        var isMainFrame = !frame.parentId;
    119130
     131        // Dispatch frame navigated event to clients prior to filling it with the resources.
    120132        this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.FrameNavigated, { frame: frame, loaderId: loaderId, isMainFrame: isMainFrame });
    121133
    122         // frame.parentId === 0 is when main frame navigation happens.
    123         this._clearChildFramesAndResources(isMainFrame ? 0 : frame.id, loaderId);
    124 
    125         this._addOrUpdateFrame(frame);
    126 
     134        // Fill frame with retained resources (the ones loaded using new loader).
    127135        var resourcesForFrame = this._resourcesByFrameId[frame.id];
    128136        if (resourcesForFrame) {
     
    131139        }
    132140
     141        // Update main frame, issue top-level navigate events.
    133142        if (isMainFrame && this.resourceForURL(frame.url)) {
    134143            WebInspector.mainResource = this.resourceForURL(frame.url);
     
    140149    _frameDetached: function(frameId)
    141150    {
     151        // Do nothing unless cached resource tree is processed - it will overwrite everything.
    142152        if (!this._cachedResourcesProcessed)
    143153            return;
    144154
    145         this._clearChildFramesAndResources(frameId, 0);
     155        this._clearChildFramesAndResources(frameId, "");
     156        var frame = this._frameIds[frameId];
     157
     158        if (frame) {
     159            var siblings = this._subframes[frame.parentId];
     160            if (siblings)
     161                siblings.remove(frame);
     162            delete this._frameIds[frameId];
     163        }
     164
    146165        this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.FrameDetached, frameId);
    147166    },
     
    158177        if (!this._cachedResourcesProcessed)
    159178            return;
    160         this._addResourceToFrame(event.data);
     179
     180        var resource = event.data;
     181        if (resource.failed) {
     182            this._unbindResourceURL(resource);
     183            return;
     184        }
     185
     186        if (resource.finished)
     187            this._addResourceToFrame(resource);
    161188    },
    162189
     
    181208    forAllResources: function(callback)
    182209    {
    183         this._callForFrameResources(0, callback);
     210        return this._callForFrameResources("", callback);
    184211    },
    185212
     
    228255        var subframes = this._subframes[frameId];
    229256        for (var i = 0; subframes && i < subframes.length; ++ i) {
    230             this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.FrameRemoved, subframes[i].id);
     257            this.dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.FrameDetached, subframes[i].id);
    231258            this._clearChildFramesAndResources(subframes[i].id, loaderToPreserveId);
    232259        }
     
    264291                return true;
    265292        }
    266        
     293
    267294        var frames = this._subframes[frameId];
    268295        for (var i = 0; frames && i < frames.length; ++i) {
     
    287314        frameResource.finished = true;
    288315
    289         this._addOrUpdateFrame(framePayload);
     316        this._addFrame(framePayload);
    290317        this._addResourceToFrame(frameResource);
    291318
  • trunk/Source/WebCore/inspector/front-end/ResourcesPanel.js

    r85048 r85184  
    193193                this._resourceAdded({data:resources[i]});
    194194        }
    195         populateFrame.call(this, 0);
     195        populateFrame.call(this, "");
    196196
    197197        this._initDefaultSelection();
     
    201201    {
    202202        var frame = event.data;
    203         var frameId = frame.id;
    204203        var parentFrameId = frame.parentId;
    205         var title = frame.name;
    206         var subtitle = new WebInspector.Resource(null, frame.url).displayName;
    207         this.addDocumentURL(frame.url);
    208204       
    209         var frameTreeElement = this._treeElementForFrameId[frameId];
    210         if (frameTreeElement) {
    211             // Maintain sorted order.
    212             var parent = frameTreeElement.parent;
    213             parent.removeChild(frameTreeElement);
    214             frameTreeElement.setTitles(title, subtitle);
    215             parent.appendChild(frameTreeElement);
    216             return;
    217         }
    218 
    219205        var parentTreeElement = parentFrameId ? this._treeElementForFrameId[parentFrameId] : this.resourcesListTreeElement;
    220206        if (!parentTreeElement) {
    221             console.warn("No frame with id:" + parentFrameId + " to route " + title + "/" + subtitle + " to.")
    222             return;
    223         }
    224 
    225         var frameTreeElement = new WebInspector.FrameTreeElement(this, frameId, title, subtitle);
    226         this._treeElementForFrameId[frameId] = frameTreeElement;
     207            console.warn("No frame with id:" + parentFrameId + " to route " + frame.name + "/" + frame.url + " to.")
     208            return;
     209        }
     210
     211        var frameTreeElement = new WebInspector.FrameTreeElement(this, frame);
     212        this._treeElementForFrameId[frame.id] = frameTreeElement;
    227213        parentTreeElement.appendChild(frameTreeElement);
    228214    },
     
    234220        if (!frameTreeElement)
    235221            return;
     222
    236223        delete this._treeElementForFrameId[frameId];
    237224        if (frameTreeElement.parent)
     
    259246    _frameNavigated: function(event)
    260247    {
    261         if (event.data.isMainFrame) {
    262             // Total update.
    263             this._resetResourcesTree();
    264             return;
    265         }
    266 
    267248        var frameId = event.data.frame.id;
    268249        var frameTreeElement = this._treeElementForFrameId[frameId];
    269250        if (frameTreeElement)
    270             frameTreeElement.removeChildren();       
     251            frameTreeElement.frameNavigated(event.data.frame);
    271252    },
    272253
     
    929910WebInspector.StorageCategoryTreeElement.prototype.__proto__ = WebInspector.BaseStorageTreeElement.prototype;
    930911
    931 WebInspector.FrameTreeElement = function(storagePanel, frameId, title, subtitle)
     912WebInspector.FrameTreeElement = function(storagePanel, frame)
    932913{
    933914    WebInspector.BaseStorageTreeElement.call(this, storagePanel, null, "", ["frame-storage-tree-item"]);
    934     this._frameId = frameId;
    935     this.setTitles(title, subtitle);
    936     this._categoryElements = {};
    937     this._treeElementForResource = {};
     915    this._frame = frame;
     916    this.frameNavigated(frame);
    938917}
    939918
    940919WebInspector.FrameTreeElement.prototype = {
     920    frameNavigated: function(frame)
     921    {
     922        this.removeChildren();
     923        this._frameId = frame.id;
     924
     925        var title = frame.name;
     926        var subtitle = new WebInspector.Resource(null, frame.url).displayName;
     927        this.setTitles(title, subtitle);
     928
     929        this._categoryElements = {};
     930        this._treeElementForResource = {};
     931
     932        this._storagePanel.addDocumentURL(frame.url);
     933    },
     934
    941935    get itemURL()
    942936    {
     
    10181012    },
    10191013
    1020     removeChildren: function()
    1021     {
    1022         WebInspector.BaseStorageTreeElement.prototype.removeChildren.call(this);
    1023         this._treeElementForResource = [];
    1024     },
    1025 
    10261014    appendChild: function(treeElement)
    10271015    {
Note: See TracChangeset for help on using the changeset viewer.