Bug 314237

Summary: [BFCache] Share SuspendedPageProxy across same-process BFCache entries
Product: WebKit Reporter: Basuke Suzuki <basuke>
Component: New BugsAssignee: Basuke Suzuki <basuke>
Status: RESOLVED FIXED    
Severity: Normal CC: webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Basuke Suzuki
Reported 2026-05-06 14:16:10 PDT
When a cross-site process swap suspends a page into BFCache, only the back-forward item that triggered the swap receives the SuspendedPageProxy. Other items cached in the same process (from prior same-site navigations) have no SuspendedPageProxy attached. If the user navigates directly to one of those items from a cross-site page, the navigation can't find the SuspendedPageProxy, the process is reinitialized, and all BFCache entries in that process are destroyed. Fix by sharing the SuspendedPageProxy with every same-process entry in the back-forward cache when it is set, and clearing it from all same-process entries when it is taken for unsuspension. Both ends of the SuspendedPage lifecycle now keep the per-process view consistent. Covered by existing tests. Subtask of rdar://161762363.
Attachments
Basuke Suzuki
Comment 1 2026-05-07 11:12:17 PDT
Basuke Suzuki
Comment 2 2026-05-07 11:12:35 PDT
EWS
Comment 3 2026-05-12 11:15:31 PDT
Committed 313096@main (4f0e36f521e9): <https://commits.webkit.org/313096@main> Reviewed commits have been landed. Closing PR #64479 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.