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

Reply via email to