[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