Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 485d754b0dd5e783973cf9eb29b27e1ccaad4962
https://github.com/WebKit/WebKit/commit/485d754b0dd5e783973cf9eb29b27e1ccaad4962
Author: j0pan <[email protected]>
Date: 2026-01-30 (Fri, 30 Jan 2026)
Changed paths:
M Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
M Source/WebInspectorUI/UserInterface/Base/Main.js
M Source/WebInspectorUI/UserInterface/Controllers/HARBuilder.js
M Source/WebInspectorUI/UserInterface/Main.html
M Source/WebInspectorUI/UserInterface/Models/Redirect.js
M Source/WebInspectorUI/UserInterface/Models/Resource.js
A Source/WebInspectorUI/UserInterface/Models/ResourceUtilities.js
M Source/WebInspectorUI/UserInterface/Test.html
M Source/WebInspectorUI/UserInterface/Views/CallFrameTreeElement.js
M Source/WebInspectorUI/UserInterface/Views/ContextMenuUtilities.js
A Source/WebInspectorUI/UserInterface/Views/NetworkRedirectDetailView.js
A
Source/WebInspectorUI/UserInterface/Views/NetworkRedirectHeadersContentView.js
M Source/WebInspectorUI/UserInterface/Views/NetworkResourceDetailView.js
M Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.css
M Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js
M Source/WebInspectorUI/UserInterface/Views/ResourceCookiesContentView.js
M Source/WebInspectorUI/UserInterface/Views/ResourceDetailsSection.css
M Source/WebInspectorUI/UserInterface/Views/ResourceHeadersContentView.js
M Source/WebInspectorUI/UserInterface/Views/ResourceSizesContentView.css
M Source/WebInspectorUI/UserInterface/Views/ResourceTimelineDataGridNode.js
M Source/WebInspectorUI/UserInterface/Views/ResourceTreeElement.js
M Source/WebInspectorUI/UserInterface/Views/Table.css
M Source/WebInspectorUI/UserInterface/Views/WorkerTreeElement.js
Log Message:
-----------
Web Inspector: Show each individual requests when there are redirects
https://bugs.webkit.org/show_bug.cgi?id=293708
rdar://152606018
Reviewed by BJ Burg and Devin Rousso.
This change surfaces individual redirect information in the Network tab by
allowing users
to click on redirect entries to view detailed information across multiple tabs
(Preview,
Headers, Cookies, Sizes, Timing, and Security) as well as the right click
context utility menu.
Limitations:
Due to backend constraints, redirects have incomplete information compared to
full resources (see https://webkit.org/b/190214):
- Timing: Only a single timestamp is available (no breakdown of DNS,
connection, etc.)
- Security: No certificate or detailed security information
- Sizes: Only estimated from header lengths (no actual body size data)
* Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js:
* Source/WebInspectorUI/UserInterface/Base/Main.js:
* Source/WebInspectorUI/UserInterface/Controllers/HARBuilder.js:
(WI.HARBuilder.async buildArchive):
(WI.HARBuilder.entry):
(WI.HARBuilder.requestForRedirect):
(WI.HARBuilder.responseForRedirect):
(WI.HARBuilder.timingsForRedirect):
* Source/WebInspectorUI/UserInterface/Main.html:
* Source/WebInspectorUI/UserInterface/Models/Redirect.js:
(WI.Redirect):
(WI.Redirect.prototype.generateFetchCode):
(WI.Redirect.prototype.generateCURLCommand):
(WI.Redirect.prototype.stringifyHTTPRequestHeaders):
(WI.Redirect.prototype.stringifyHTTPResponseHeaders):
* Source/WebInspectorUI/UserInterface/Models/Resource.js:
(WI.Resource.prototype.updateForRedirectResponse):
(WI.Resource.prototype.generateFetchCode):
(WI.Resource.prototype.generateCURLCommand):
(WI.Resource.prototype.stringifyHTTPRequestHeaders):
(WI.Resource.prototype.stringifyHTTPResponseHeaders):
(WI.Resource.prototype.generateCURLCommand.escapeStringPosix.escapeCharacter):
Deleted.
(WI.Resource.prototype.generateCURLCommand.escapeStringPosix): Deleted.
* Source/WebInspectorUI/UserInterface/Models/ResourceUtilities.js: Added.
(WI.ResourceUtilities.generateFetchCode):
(WI.ResourceUtilities.generateCURLCommand.escapeStringPosix.escapeCharacter):
(WI.ResourceUtilities.generateCURLCommand.escapeStringPosix):
(WI.ResourceUtilities.generateCURLCommand):
(WI.ResourceUtilities):
* Source/WebInspectorUI/UserInterface/Test.html:
* Source/WebInspectorUI/UserInterface/Views/CallFrameTreeElement.js:
(WI.CallFrameTreeElement.prototype.populateContextMenu):
* Source/WebInspectorUI/UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForNetworkResource):
(WI.appendContextMenuItemsForSourceCode):
* Source/WebInspectorUI/UserInterface/Views/NetworkRedirectDetailView.js: Added.
(WI.NetworkRedirectDetailView):
(WI.NetworkRedirectDetailView.prototype.showParentResource):
(WI.NetworkRedirectDetailView.prototype.initialLayout):
(WI.NetworkRedirectDetailView.prototype.showContentViewForIdentifier):
*
Source/WebInspectorUI/UserInterface/Views/NetworkRedirectHeadersContentView.js:
Added.
(WI.NetworkRedirectHeadersContentView):
(WI.NetworkRedirectHeadersContentView.prototype.initialLayout):
(WI.NetworkRedirectHeadersContentView.prototype._createSortedArrayForHeaders):
* Source/WebInspectorUI/UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.showRedirect):
(WI.NetworkResourceDetailView.prototype.showRepresentedObject):
(WI.NetworkResourceDetailView.prototype.showContentViewForIdentifier):
* Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.css:
(.network-table > .table .cell.name .disclosure):
(body[dir=rtl] .network-table > .table .cell.name .disclosure):
(.network-table:focus > .table li.selected .cell.name .disclosure):
(.network-table > .table .cell.name .disclosure.expanded):
(.network-table:focus > .table li.selected .cell.name .disclosure.expanded):
(.network-table > .table .cell.name.child):
(.table.network-table .data-container .data-list > li.redirect
.cell:not(.name)):
(.table.network-table.grouped .data-container .cell.name.parent):
(.table.network-table.grouped .data-container
.cell.name:not(.parent):not(.child)):
(.network-table > .table .data-container .cell.name .redirect-count):
(.network-table:focus > .table li.selected .cell.name .redirect-count):
(.network-table > .table li.selected .cell.name .redirect-count):
(@media (prefers-color-scheme: dark) .network-table > .table .data-container
.cell.name .redirect-count):
(.network-table > .table.grouped .data-container .cell.name): Deleted.
(.network-table > .table.grouped .data-container .cell:not(.parent).name):
Deleted.
(.network-table > .table.grouped .data-container .cell.child.name): Deleted.
* Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype.showRepresentedObject):
(WI.NetworkTableContentView.prototype.networkRedirectDetailViewShowParentResource):
(WI.NetworkTableContentView.prototype.networkRedirectHeadersContentViewShowRedirect):
(WI.NetworkTableContentView.prototype.networkRedirectHeadersContentViewShowParentResource):
(WI.NetworkTableContentView.prototype.showRedirect):
(WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
(WI.NetworkTableContentView.prototype.tableSelectionDidChange):
(WI.NetworkTableContentView.prototype.tablePopulateCell):
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._populateInitiatorCell):
(WI.NetworkTableContentView.prototype._processPendingEntries):
(WI.NetworkTableContentView.prototype._rowIndexForRepresentedObject):
(WI.NetworkTableContentView.prototype._updateEntryForResource):
(WI.NetworkTableContentView.prototype._populateRedirectEntriesForResourceEntry):
(WI.NetworkTableContentView.prototype._showDetailView):
(WI.NetworkTableContentView.prototype._resourceRedirectsDidChange):
(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
(WI.NetworkTableContentView.prototype._entryForResource):
(WI.NetworkTableContentView.prototype._entryForRedirect):
(WI.NetworkTableContentView.prototype._estimateHeaderSize):
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._reloadTable):
(WI.NetworkTableContentView.prototype._HARResources):
* Source/WebInspectorUI/UserInterface/Views/ResourceCookiesContentView.js:
(WI.ResourceCookiesContentView):
(WI.ResourceCookiesContentView.prototype._refreshRequestCookiesSection):
(WI.ResourceCookiesContentView.prototype._refreshResponseCookiesSection):
* Source/WebInspectorUI/UserInterface/Views/ResourceDetailsSection.css:
(.resource-details > section > .title):
(.resource-details > section > .title > .redirect-nav-link):
(.resource-details > section:not(:hover) > .title > .redirect-nav-link):
* Source/WebInspectorUI/UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView):
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
(WI.ResourceHeadersContentView.prototype._refreshRedirectHeadersSections):
(WI.ResourceHeadersContentView.prototype._refreshRequestHeadersSection):
(WI.ResourceHeadersContentView.prototype._refreshResponseHeadersSection):
* Source/WebInspectorUI/UserInterface/Views/ResourceSizesContentView.css:
(.resource-sizes > .content > section.note-section):
(.resource-sizes > .content > section.note-section .note):
* Source/WebInspectorUI/UserInterface/Views/ResourceTimelineDataGridNode.js:
(WI.ResourceTimelineDataGridNode.prototype.appendContextMenuItems):
* Source/WebInspectorUI/UserInterface/Views/ResourceTreeElement.js:
(WI.ResourceTreeElement.prototype.populateContextMenu):
* Source/WebInspectorUI/UserInterface/Views/Table.css:
(.table .cell):
* Source/WebInspectorUI/UserInterface/Views/WorkerTreeElement.js:
(WI.WorkerTreeElement.prototype.populateContextMenu):
Canonical link: https://commits.webkit.org/306537@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications