Title: [223170] trunk/Source/WebInspectorUI
Revision
223170
Author
[email protected]
Date
2017-10-11 00:55:24 -0700 (Wed, 11 Oct 2017)

Log Message

Web Inspector: Network Tab - Show initially loaded resources even if network info not logged
https://bugs.webkit.org/show_bug.cgi?id=178098
<rdar://problem/34073529>

Reviewed by Devin Rousso.

* UserInterface/Models/Resource.js:
(WI.Resource.prototype.hasResponse):
Resources loaded by Page.getFrameTree have a response but no status code data.
So include finished resources as having a resource.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype._populateWithInitialResourcesIfNeeded):
(WI.NetworkTableContentView.prototype._mainFrameDidChange):
Listen for the first main frame change to perform an initial population.

(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
This path is not currently taken when table is null, but change the code so
that if it is reached without the table it would behave gracefully.

* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
On first open none of the resources have a statusCode. Show an emDash.

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (223169 => 223170)


--- trunk/Source/WebInspectorUI/ChangeLog	2017-10-11 07:54:37 UTC (rev 223169)
+++ trunk/Source/WebInspectorUI/ChangeLog	2017-10-11 07:55:24 UTC (rev 223170)
@@ -1,3 +1,31 @@
+2017-10-11  Joseph Pecoraro  <[email protected]>
+
+        Web Inspector: Network Tab - Show initially loaded resources even if network info not logged
+        https://bugs.webkit.org/show_bug.cgi?id=178098
+        <rdar://problem/34073529>
+
+        Reviewed by Devin Rousso.
+
+        * UserInterface/Models/Resource.js:
+        (WI.Resource.prototype.hasResponse):
+        Resources loaded by Page.getFrameTree have a response but no status code data.
+        So include finished resources as having a resource.
+
+        * UserInterface/Views/NetworkTableContentView.js:
+        (WI.NetworkTableContentView):
+        (WI.NetworkTableContentView.prototype.closed):
+        (WI.NetworkTableContentView.prototype._populateWithInitialResourcesIfNeeded):
+        (WI.NetworkTableContentView.prototype._mainFrameDidChange):
+        Listen for the first main frame change to perform an initial population.
+
+        (WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
+        This path is not currently taken when table is null, but change the code so
+        that if it is reached without the table it would behave gracefully.
+
+        * UserInterface/Views/ResourceHeadersContentView.js:
+        (WI.ResourceHeadersContentView.prototype._refreshSummarySection):
+        On first open none of the resources have a statusCode. Show an emDash.
+
 2017-10-10  Brian Burg  <[email protected]>
 
         Web Inspector: Quick Open: source mapped files are not shown as search results

Modified: trunk/Source/WebInspectorUI/UserInterface/Models/Resource.js (223169 => 223170)


--- trunk/Source/WebInspectorUI/UserInterface/Models/Resource.js	2017-10-11 07:54:37 UTC (rev 223169)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/Resource.js	2017-10-11 07:55:24 UTC (rev 223170)
@@ -653,7 +653,7 @@
 
     hasResponse()
     {
-        return !isNaN(this._statusCode);
+        return !isNaN(this._statusCode) || this._finished;
     }
 
     updateForResponse(url, mimeType, type, responseHeaders, statusCode, statusText, elapsedTime, timingData, source)

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js (223169 => 223170)


--- trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js	2017-10-11 07:54:37 UTC (rev 223169)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js	2017-10-11 07:55:24 UTC (rev 223170)
@@ -102,7 +102,10 @@
         WI.Resource.addEventListener(WI.Resource.Event.LoadingDidFinish, this._resourceLoadingDidFinish, this);
         WI.Resource.addEventListener(WI.Resource.Event.LoadingDidFail, this._resourceLoadingDidFail, this);
         WI.Resource.addEventListener(WI.Resource.Event.TransferSizeDidChange, this._resourceTransferSizeDidChange, this);
+        WI.frameResourceManager.addEventListener(WI.FrameResourceManager.Event.MainFrameDidChange, this._mainFrameDidChange, this);
         WI.timelineManager.persistentNetworkTimeline.addEventListener(WI.Timeline.Event.RecordAdded, this._networkTimelineRecordAdded, this);
+
+        this._needsInitialPopulate = true;
     }
 
     // Static
@@ -190,6 +193,7 @@
 
         WI.Frame.removeEventListener(null, null, this);
         WI.Resource.removeEventListener(null, null, this);
+        WI.frameResourceManager.removeEventListener(WI.FrameResourceManager.Event.MainFrameDidChange, this._mainFrameDidChange, this);
         WI.timelineManager.persistentNetworkTimeline.removeEventListener(WI.Timeline.Event.RecordAdded, this._networkTimelineRecordAdded, this);
 
         super.closed();
@@ -647,6 +651,33 @@
         this._table.reloadData();
     }
 
+    _populateWithInitialResourcesIfNeeded()
+    {
+        if (!this._needsInitialPopulate)
+            return;
+
+        this._needsInitialPopulate = false;
+
+        console.assert(WI.frameResourceManager.mainFrame);
+
+        let populateFrameResources = (frame) => {
+            if (frame.provisionalMainResource)
+                this._pendingInsertions.push(frame.provisionalMainResource);
+            else if (frame.mainResource)
+                this._pendingInsertions.push(frame.mainResource);
+
+            for (let resource of frame.resourceCollection.items)
+                this._pendingInsertions.push(resource);
+
+            for (let childFrame of frame.childFrameCollection.items)
+                populateFrameResources(childFrame);
+        };
+
+        populateFrameResources(WI.frameResourceManager.mainFrame);
+
+        this.needsLayout();
+    }
+
     _checkTextFilterAgainstFinishedResource(resource)
     {
         let frame = resource.parentFrame;
@@ -828,6 +859,11 @@
         this._insertResourceAndReloadTable(frame.mainResource);
     }
 
+    _mainFrameDidChange()
+    {
+        this._populateWithInitialResourcesIfNeeded();
+    }
+
     _resourceLoadingDidFinish(event)
     {
         let resource = event.target;
@@ -894,16 +930,12 @@
 
     _insertResourceAndReloadTable(resource)
     {
-        if (!(WI.tabBrowser.selectedTabContentView instanceof WI.NetworkTabContentView)) {
+        if (!this._table || !(WI.tabBrowser.selectedTabContentView instanceof WI.NetworkTabContentView)) {
             this._pendingInsertions.push(resource);
             this.needsLayout();
             return;
         }
 
-        console.assert(this._table);
-        if (!this._table)
-            return;
-
         let entry = this._entryForResource(resource);
 
         // Default sort has fast path.

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ResourceHeadersContentView.js (223169 => 223170)


--- trunk/Source/WebInspectorUI/UserInterface/Views/ResourceHeadersContentView.js	2017-10-11 07:54:37 UTC (rev 223169)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ResourceHeadersContentView.js	2017-10-11 07:55:24 UTC (rev 223170)
@@ -266,7 +266,7 @@
         this._appendKeyValuePair(detailsElement, WI.UIString("URL"), this._resource.url.insertWordBreakCharacters());
 
         let status = emDash;
-        if (this._resource.hasResponse())
+        if (!isNaN(this._resource.statusCode))
             status = this._resource.statusCode + (this._resource.statusText ? " " + this._resource.statusText : "");
         this._appendKeyValuePair(detailsElement, WI.UIString("Status"), status);
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to