[webkit-changes] [WebKit/WebKit] 077c97: [Site Isolation] Isolate web content by site inste...

Alex Christensen noreply at github.com
Fri Jun 7 10:34:35 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 077c97ef714d93dafae5e73019f1d9899696df8f
      https://github.com/WebKit/WebKit/commit/077c97ef714d93dafae5e73019f1d9899696df8f
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2024-06-07 (Fri, 07 Jun 2024)

  Changed paths:
    A Source/WebKit/Shared/Site.cpp
    A Source/WebKit/Shared/Site.h
    M Source/WebKit/Sources.txt
    M Source/WebKit/UIProcess/BrowsingContextGroup.cpp
    M Source/WebKit/UIProcess/BrowsingContextGroup.h
    M Source/WebKit/UIProcess/FrameProcess.cpp
    M Source/WebKit/UIProcess/FrameProcess.h
    M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
    M Source/WebKit/UIProcess/RemotePageProxy.cpp
    M Source/WebKit/UIProcess/RemotePageProxy.h
    M Source/WebKit/UIProcess/WebFrameProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebProcessPool.cpp
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm

  Log Message:
  -----------
  [Site Isolation] Isolate web content by site instead of RegistrableDomain
https://bugs.webkit.org/show_bug.cgi?id=275233
rdar://128951162

Reviewed by Charlie Wolfe.

If content from http://example.com has an iframe from https://example.com we want those to be
in different processes.  We were using RegistrableDomain to separate the content, but to be more
secure in the rare case when content from the same host but different protocols is loaded, we
want to put them in different processes.

* Source/WebKit/Shared/Site.cpp: Copied from Source/WebKit/UIProcess/FrameProcess.cpp.
(WebKit::Site::Site):
(WebKit::Site::hash const):
* Source/WebKit/Shared/Site.h: Copied from Source/WebKit/UIProcess/FrameProcess.h.
(WebKit::Site::protocol const):
(WebKit::Site::host const):
(WebKit::Site::isEmpty const):
(WebKit::Site::Site):
(WebKit::Site::isHashTableDeletedValue const):
(WebKit::Site::Hash::hash):
(WebKit::Site::Hash::equal):
(WTF::HashTraits<WebKit::Site>::emptyValue):
* Source/WebKit/Sources.txt:
* Source/WebKit/UIProcess/BrowsingContextGroup.cpp:
(WebKit::BrowsingContextGroup::ensureProcessForSite):
(WebKit::BrowsingContextGroup::ensureProcessForConnection):
(WebKit::BrowsingContextGroup::processForSite):
(WebKit::BrowsingContextGroup::addFrameProcess):
(WebKit::BrowsingContextGroup::removeFrameProcess):
(WebKit::BrowsingContextGroup::addPage):
(WebKit::BrowsingContextGroup::transitionPageToRemotePage):
(WebKit::BrowsingContextGroup::transitionProvisionalPageToRemotePage):
(WebKit::BrowsingContextGroup::ensureProcessForDomain): Deleted.
(WebKit::BrowsingContextGroup::processForDomain): Deleted.
* Source/WebKit/UIProcess/BrowsingContextGroup.h:
* Source/WebKit/UIProcess/FrameProcess.cpp:
(WebKit::FrameProcess::FrameProcess):
* Source/WebKit/UIProcess/FrameProcess.h:
(WebKit::FrameProcess::site const):
(WebKit::FrameProcess::create):
(WebKit::FrameProcess::domain const): Deleted.
* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame):
(WebKit::ProvisionalPageProxy::didCommitLoadForFrame):
* Source/WebKit/UIProcess/RemotePageProxy.cpp:
(WebKit::RemotePageProxy::RemotePageProxy):
* Source/WebKit/UIProcess/RemotePageProxy.h:
(WebKit::RemotePageProxy::site const):
(WebKit::RemotePageProxy::domain const): Deleted.
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::prepareForProvisionalLoadInProcess):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::processForSite):
(WebKit::WebPageProxy::processForRegistrableDomain): Deleted.
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigation):
(WebKit::WebProcessPool::processForNavigationInternal):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm:
(TestWebKitAPI::frameTreesMatch):
(TestWebKitAPI::TEST(SiteIsolation, ProtocolProcessSeparation)):

Canonical link: https://commits.webkit.org/279819@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