Bug 314237
| Summary: | [BFCache] Share SuspendedPageProxy across same-process BFCache entries | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Basuke Suzuki <basuke> |
| Component: | New Bugs | Assignee: | 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
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 | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Basuke Suzuki
<rdar://problem/176395569>
Basuke Suzuki
Pull request: https://github.com/WebKit/WebKit/pull/64479
EWS
Committed 313096@main (4f0e36f521e9): <https://commits.webkit.org/313096@main>
Reviewed commits have been landed. Closing PR #64479 and removing active labels.