Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 0d7558ea568001ec684f9625a495e2192924d86d
https://github.com/WebKit/WebKit/commit/0d7558ea568001ec684f9625a495e2192924d86d
Author: Basuke Suzuki <[email protected]>
Date: 2026-06-05 (Fri, 05 Jun 2026)
Changed paths:
M LayoutTests/platform/mac-site-isolation/TestExpectations
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Tools/WebKitTestRunner/TestController.cpp
Log Message:
-----------
[Site Isolation] Mark MultiProcessBackForwardCacheEnabled as testable so test
infrastructure auto-enables it
https://bugs.webkit.org/show_bug.cgi?id=316429
rdar://178835820
Reviewed by Sihui Liu.
Bug 316344 worked around a WebKitTestRunner-vs-product preference mismatch by
mirroring
the Site-Isolation-implied flags in
TestController::featuresImpliedBySiteIsolation().
The cleaner fix for MultiProcessBackForwardCacheEnabled is to make the
implication
declarative in the preference taxonomy itself.
Changing its status from `unstable` to `testable` makes it OFF by default in
production
(unchanged) but auto-enabled in test infrastructure via
WebPreferences::enableAllExperimentalFeatures(), per the YAML's own definition
of
`testable`. With the flag always on for any default WKTR run, the explicit
mirroring
in TestController is no longer needed for this preference.
Because the flag is now on for every non-SI WKTR test as well, two
MultiProcessBackForwardCache-gated paths in WebPageProxy that previously assumed
"flag on -> SI on" are tightened to require both:
- WebPageProxy::suspendCurrentPageIfPossible: setting the SuspendedPageProxy's
mainFrameItemID drives the SuspendWithFrameItem IPC, which is only meaningful
in the SI-orchestrated flow. Legacy non-SI suspension uses the SetIsSuspended
branch (nullopt mainFrameItemID).
- WebPageProxy::goToBackForwardItem: the UI-driven BFCache restoration block
only applies when SI is active. Without SI there are no cross-site iframe
processes to orchestrate, so legacy non-SI restoration must keep
shouldRestoreFromBackForwardCache at Unspecified per the tri-state contract,
rather than reaping the UI-side entry early.
Both guards now match the existing pattern at
WebPageProxy::shouldUseBackForwardCache,
keeping the change a true no-op for non-SI runs.
UseUIProcessForBackForwardItemLoading is intentionally left in
featuresImpliedBySiteIsolation() because it has non-Site-Isolation side effects;
it will be coupled at the WebPreferences::update() layer in a follow-up.
Now that Multi-Process BFCache is auto-enabled under Site Isolation
(314699@main) and is declared `status: testable` in UnifiedWebPreferences.yaml
(this bug), 189 entries in
LayoutTests/platform/mac-site-isolation/TestExpectations
that were previously expected to Failure / Timeout under SI now pass and are
removed. Nine new entries are added for genuine regressions confirmed by re-runs
under the same `--site-isolation-enabled-by-default` invocation; each was
reproduced twice. They are all BFCache- or Navigation-API-related; whether any
are caused specifically by the 316429 flag flip (versus pre-existing under
MPBFCache + SI) is being tracked separately and is not blocking this PR.
Covered by existing tests (SiteIsolation.MultiProcessBFCache* API tests, plus
fast/events/site-isolation/event-timing-back-forward-cache-duration.html added
in 316344).
* LayoutTests/platform/mac-site-isolation/TestExpectations: Drop 189 entries
that now pass under MultiProcessBFCache + Site Isolation; add 9 entries for
genuine regressions to be triaged separately.
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::suspendCurrentPageIfPossible): Tighten the
MultiProcessBackForwardCache guard to also require Site Isolation, so that
non-SI runs with the flag auto-enabled keep the legacy SetIsSuspended IPC.
(WebKit::WebPageProxy::goToBackForwardItem): Same tightening for the UI-driven
BFCache restoration block.
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::featuresImpliedBySiteIsolation const): Drop
MultiProcessBackForwardCacheEnabled; keep UseUIProcessForBackForwardItemLoading.
Canonical link: https://commits.webkit.org/314689@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications