- 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);