Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 888c80c640da3d5a5224f727e3e45fbd6fbdf5b8
      
https://github.com/WebKit/WebKit/commit/888c80c640da3d5a5224f727e3e45fbd6fbdf5b8
  Author: Roberto Rodriguez <[email protected]>
  Date:   2026-05-30 (Sat, 30 May 2026)

  Changed paths:
    M LayoutTests/platform/mac-site-isolation/TestExpectations
    M Source/WebCore/loader/LocalFrameLoaderClient.h
    M Source/WebCore/page/csp/ContentSecurityPolicy.cpp
    M Source/WebCore/page/csp/ContentSecurityPolicy.h
    M Source/WebCore/platform/network/ResourceRequestBase.h
    M Source/WebKit/UIProcess/API/APINavigation.cpp
    M Source/WebKit/UIProcess/API/APINavigation.h
    M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
    M Source/WebKit/UIProcess/ProvisionalPageProxy.h
    M Source/WebKit/UIProcess/WebFrameProxy.cpp
    M Source/WebKit/UIProcess/WebFrameProxy.h
    M Source/WebKit/UIProcess/WebFrameProxy.messages.in
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.messages.in
    M Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.h

  Log Message:
  -----------
  [Site Isolation] CSP upgrade-insecure-requests not applied when cross-process 
iframe navigates top frame
https://bugs.webkit.org/show_bug.cgi?id=313690
rdar://175889340

Reviewed by Alex Christensen.

When a cross-origin iframe navigates window.top.location.href to an http:// URL 
under site isolation,
the parent's upgrade-insecure-requests CSP is never applied. The upgrade 
normally happens in
FrameLoader::changeLocation() using the target frame's document CSP, but the 
site isolation path
bypasses that code entirely and lands in a provisional page where no document 
exists to check.

Sync each frame's CSP navigation upgrade origins to its WebFrameProxy in the 
UIProcess. The set is
sent in DidCommitLoadForFrame when the directive arrives via response header, 
or via a new
DidChangeCSPOriginsThatUpgradeInsecureNavigations IPC to WebFrameProxy when 
added dynamically via
meta tag. Then in receivedNavigationActionPolicyDecision, consult the set and 
upgrade the URL before
process routing.

* LayoutTests/platform/mac-site-isolation/TestExpectations:
* Source/WebCore/loader/LocalFrameLoaderClient.h:
* Source/WebCore/page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::setUpgradeInsecureRequests):
(WebCore::ContentSecurityPolicy::inheritInsecureNavigationRequestsToUpgradeFromOpener):
(WebCore::ContentSecurityPolicy::setInsecureNavigationRequestsToUpgrade):
(WebCore::ContentSecurityPolicy::notifyInsecureNavigationRequestsToUpgradeChanged
 const):
* Source/WebCore/page/csp/ContentSecurityPolicy.h:
* Source/WebCore/platform/network/ResourceRequestBase.h:
* Source/WebKit/UIProcess/API/APINavigation.cpp:
(API::Navigation::upgradeCurrentInsecureRequest):
* Source/WebKit/UIProcess/API/APINavigation.h:
* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
* Source/WebKit/UIProcess/ProvisionalPageProxy.h:
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::didCommitLoad):
(WebKit::WebFrameProxy::commitProvisionalFrame):
(WebKit::WebFrameProxy::didChangeCSPOriginsThatUpgradeInsecureNavigations):
* Source/WebKit/UIProcess/WebFrameProxy.h:
(WebKit::WebFrameProxy::cspOriginsThatUpgradeInsecureNavigations const):
(WebKit::WebFrameProxy::setCSPOriginsThatUpgradeInsecureNavigations):
* Source/WebKit/UIProcess/WebFrameProxy.messages.in:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedNavigationActionPolicyDecision):
(WebKit::WebPageProxy::commitProvisionalPage):
(WebKit::WebPageProxy::didCommitLoadForFrame):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp:
(WebKit::WebLocalFrameLoaderClient::dispatchDidChangeCSPOriginsThatUpgradeInsecureNavigations):
(WebKit::WebLocalFrameLoaderClient::dispatchDidCommitLoad):
* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.h:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to