[webkit-changes] [WebKit/WebKit] d521cb: [Site Isolation] Discard uncached back items for n...
Charlie Wolfe
noreply at github.com
Tue Dec 24 14:19:28 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d521cb41c396151b0331a98b8e559ce715fad9f6
https://github.com/WebKit/WebKit/commit/d521cb41c396151b0331a98b8e559ce715fad9f6
Author: Charlie Wolfe <charliew at apple.com>
Date: 2024-12-24 (Tue, 24 Dec 2024)
Changed paths:
M Source/WebKit/Shared/WebBackForwardListFrameItem.cpp
M Source/WebKit/Shared/WebBackForwardListFrameItem.h
M Source/WebKit/Shared/WebBackForwardListItem.cpp
M Source/WebKit/Shared/WebBackForwardListItem.h
M Source/WebKit/UIProcess/WebBackForwardList.cpp
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm
Log Message:
-----------
[Site Isolation] Discard uncached back items for navigated over isolated iframes
https://bugs.webkit.org/show_bug.cgi?id=285096
rdar://141934328
Reviewed by Pascoe.
When storing session history for an uncached site isolated iframe, any navigation of an ancestor frame
invalidates the history state for all of its descendants. This is because navigating back will require
the ancestor to reload its children, and the previously stored state will have changed.
To fix this, when a new back/forward item is added, all prior items with an ancestor that navigated
should be discarded. I also needed to add logic to associate the state from the current back/forward item
to be set as the parent of the state committed by the site-isolated web process.
No change in behavior with site isolation disabled.
* Source/WebKit/Shared/WebBackForwardListFrameItem.cpp:
(WebKit::WebBackForwardListFrameItem::hasAncestorFrame):
* Source/WebKit/Shared/WebBackForwardListFrameItem.h:
(WebKit::WebBackForwardListFrameItem::setParent):
* Source/WebKit/Shared/WebBackForwardListItem.cpp:
(WebKit::WebBackForwardListItem::setParentFromItem):
* Source/WebKit/Shared/WebBackForwardListItem.h:
* Source/WebKit/UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::addItem):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::backForwardAddItemShared):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm:
(TestWebKitAPI::TEST(SiteIsolation, DiscardUncachedBackItemForNavigatedOverIframe)):
Canonical link: https://commits.webkit.org/288281@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list