Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 58ebd2f088d76f1a8b5d7b502a1d303a7f955256
      
https://github.com/WebKit/WebKit/commit/58ebd2f088d76f1a8b5d7b502a1d303a7f955256
  Author: Alex Christensen <achristen...@apple.com>
  Date:   2024-04-29 (Mon, 29 Apr 2024)

  Changed paths:
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/history/CachedFrame.cpp
    M Source/WebCore/inspector/InspectorFrontendClientLocal.cpp
    M Source/WebCore/loader/DocumentLoader.cpp
    M Source/WebCore/loader/FrameLoader.cpp
    M Source/WebCore/loader/FrameLoader.h
    M Source/WebCore/loader/LocalFrameLoaderClient.h
    M Source/WebCore/loader/PolicyChecker.cpp
    M Source/WebCore/page/Frame.cpp
    M Source/WebCore/page/Frame.h
    M Source/WebCore/page/LocalDOMWindow.cpp
    M Source/WebCore/page/LocalFrame.cpp
    M Source/WebCore/page/LocalFrame.h
    M Source/WebCore/page/RemoteFrame.cpp
    M Source/WebCore/page/RemoteFrame.h
    M Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp
    M Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp
    M Source/WebKit/WebProcess/WebPage/WebFrame.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKitLegacy/mac/WebView/WebFrame.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm

  Log Message:
  -----------
  Opener relationship should be preserved when switching between local and 
remote frames for site isolation
https://bugs.webkit.org/show_bug.cgi?id=273433
rdar://127253523

Reviewed by Charlie Wolfe.

This moves the owner pointer and the set of opened pages from FrameLoader and 
RemoteFrame
to Frame so that the management of those two related structures can be shared 
between LocalFrame
and RemoteFrame.  I then update the pointer and set when switching from a 
LocalFrame to a
RemoteFrame and when switching from a RemoteFrame to a LocalFrame.

Covered by an API test, which not only tests that the opener is unchanged after 
these transitions,
but it also tests other types of provisional navigation failures with site 
isolation:
navigating to the same domain, and navigating to a new domain that has never 
been seen before.

* Source/WebCore/dom/Document.cpp:
(WebCore::Document::fallbackBaseURL const):
(WebCore::Document::canNavigateInternal):
(WebCore::Document::initSecurityContext):
(WebCore::Document::initContentSecurityPolicy):
* Source/WebCore/history/CachedFrame.cpp:
(WebCore::CachedFrame::CachedFrame):
* Source/WebCore/inspector/InspectorFrontendClientLocal.cpp:
(WebCore::InspectorFrontendClientLocal::openURLExternally):
* Source/WebCore/loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::doCrossOriginOpenerHandlingOfResponse):
* Source/WebCore/loader/FrameLoader.cpp:
(WebCore::FrameLoader::~FrameLoader):
(WebCore::shouldClearWindowName):
(WebCore::FrameLoader::hasOpenedFrames const):
(WebCore::FrameLoader::setOriginalURLForDownloadRequest):
(WebCore::FrameLoader::updateRequestAndAddExtraFields):
(WebCore::FrameLoader::continueLoadAfterNewWindowPolicy):
(WebCore::FrameLoader::effectiveReferrerPolicy const):
(WebCore::FrameLoader::switchBrowsingContextsGroup):
(WebCore::FrameLoader::detachFromAllOpenedFrames): Deleted.
(WebCore::FrameLoader::opener): Deleted.
(WebCore::FrameLoader::opener const): Deleted.
(WebCore::FrameLoader::setOpener): Deleted.
* Source/WebCore/loader/FrameLoader.h:
* Source/WebCore/loader/LocalFrameLoaderClient.h:
* Source/WebCore/loader/PolicyChecker.cpp:
(WebCore::FrameLoader::PolicyChecker::checkNavigationPolicy):
* Source/WebCore/page/Frame.cpp:
(WebCore::Frame::Frame):
(WebCore::Frame::setOpener):
(WebCore::Frame::detachFromAllOpenedFrames):
(WebCore::Frame::openedFrames):
(WebCore::Frame::hasOpenedFrames const):
* Source/WebCore/page/Frame.h:
(WebCore::Frame::opener const):
(WebCore::Frame::opener):
* Source/WebCore/page/LocalDOMWindow.cpp:
(WebCore::LocalDOMWindow::focus):
(WebCore::LocalDOMWindow::disownOpener):
* Source/WebCore/page/LocalFrame.cpp:
(WebCore::LocalFrame::LocalFrame):
(WebCore::LocalFrame::reinitializeDocumentSecurityContext):
(WebCore::LocalFrame::disconnectView):
(WebCore::LocalFrame::setOpener): Deleted.
(WebCore::LocalFrame::opener const): Deleted.
(WebCore::LocalFrame::opener): Deleted.
* Source/WebCore/page/LocalFrame.h:
* Source/WebCore/page/RemoteFrame.cpp:
(WebCore::RemoteFrame::createSubframe):
(WebCore::RemoteFrame::createSubframeWithContentsInAnotherProcess):
(WebCore::RemoteFrame::RemoteFrame):
* Source/WebCore/page/RemoteFrame.h:
* Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
(WKBundleFrameClearOpener):
* Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::shouldSuppressJavaScriptDialogs):
* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp:
(WebKit::WebLocalFrameLoaderClient::didSameDocumentNavigationForFrameViaJSHistoryAPI):
* Source/WebKit/WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:
(WebKit::WebResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
* Source/WebKit/WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::transitionToRemote):
(WebKit::WebFrame::transitionToLocal):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::suspendForProcessSwap):
(WebKit::WebPage::suspend):
* Source/WebKitLegacy/mac/WebView/WebFrame.mm:
(-[WebFrame _clearOpener]):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm:
(TestWebKitAPI::TEST(SiteIsolation, 
NavigateOpenerToProvisionalNavigationFailure)):

Canonical link: https://commits.webkit.org/278150@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to