Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7e7db43cb12176a47f42ad2ddbc18803d4a742bf
      
https://github.com/WebKit/WebKit/commit/7e7db43cb12176a47f42ad2ddbc18803d4a742bf
  Author: Brady Eidson <beid...@apple.com>
  Date:   2025-03-24 (Mon, 24 Mar 2025)

  Changed paths:
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/DerivedSources-output.xcfilelist
    M Source/WebCore/DerivedSources.make
    M Source/WebCore/Headers.cmake
    M Source/WebCore/Modules/applepay/PaymentSession.cpp
    M Source/WebCore/Modules/applepay/PaymentSession.h
    M Source/WebCore/Scripts/generate-process-sync-data.py
    M Source/WebCore/Scripts/tests/DocumentSyncData.cpp
    M Source/WebCore/Scripts/tests/DocumentSyncData.h
    A Source/WebCore/Scripts/tests/FrameTreeSyncData.cpp
    A Source/WebCore/Scripts/tests/FrameTreeSyncData.h
    M Source/WebCore/Scripts/tests/ProcessSyncClient.cpp
    M Source/WebCore/Scripts/tests/ProcessSyncClient.h
    M Source/WebCore/Scripts/tests/ProcessSyncData.h
    M Source/WebCore/Scripts/tests/ProcessSyncData.serialization.in
    M Source/WebCore/Scripts/tests/TestProcessSyncData.in
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/page/Frame.cpp
    M Source/WebCore/page/Frame.h
    M Source/WebCore/page/LocalFrame.cpp
    M Source/WebCore/page/LocalFrame.h
    M Source/WebCore/page/Page.cpp
    M Source/WebCore/page/ProcessSyncData.in
    M Source/WebCore/page/RemoteFrame.cpp
    M Source/WebCore/page/RemoteFrame.h
    M Source/WebKit/Shared/FrameTreeCreationParameters.h
    M Source/WebKit/Shared/FrameTreeCreationParameters.serialization.in
    M Source/WebKit/UIProcess/RemotePageProxy.cpp
    M Source/WebKit/UIProcess/WebFrameProxy.cpp
    M Source/WebKit/UIProcess/WebFrameProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/WebProcess/WebPage/WebFrame.cpp
    M Source/WebKit/WebProcess/WebPage/WebFrame.h
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebPage/WebPage.messages.in
    M Source/WebKitLegacy/mac/WebView/WebFrame.mm

  Log Message:
  -----------
  Generate "FrameTreeSyncData", applying it first to support 
PaymentSession::canCreateSession()
rdar://147412463
https://bugs.webkit.org/show_bug.cgi?id=290047

Reviewed by Alex Christensen.

Under site isolation the frames for a given web page may be spread out over 
multiple WebContent processes.
In that scenario, each WebContent process has its own notion of the FrameTree 
for the page.

Before this change, that frame tree consists of very basic nodes with little 
more than frame names at each node.
But various parts of WebCore and WebKit will require more information about 
nodes in the FrameTree to do their job locally.

This change builds upon the ProcessSyncData machinery to add FrameTreeSyncData. 
Each Frame - whether it is Local or Remote -
will maintain its own FrameTreeSyncData. Each Frame starts out with a snapshot 
of its data from the UIProcess when it was created,
and the UIProcess drives further updates to relevant Frames in each relevant 
WebProcess when needed.

The proof of concept for this new machinery is moving the concept of 
PaymentSession::canCreateSession to the UIProcess,
which can then send the bits out to the frame trees in each WebContent process.

As usual, should be no behavior change when site isolation is disabled.

* Source/WebCore/CMakeLists.txt:
* Source/WebCore/DerivedSources-output.xcfilelist:
* Source/WebCore/DerivedSources.make:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Modules/applepay/PaymentSession.cpp:
(WebCore::PaymentSession::isSecureForSession):
(WebCore::PaymentSession::canCreateSession):
(WebCore::isSecure): Deleted.
* Source/WebCore/Modules/applepay/PaymentSession.h:
* Source/WebCore/Scripts/generate-process-sync-data.py:
(SyncedData.__init__):
(generate_process_sync_data_header):
(generate_synched_data_header):
(generate_synched_data_impl):
(generate_process_sync_data_serialiation_in):
(generate_process_sync_data_serialiation_in.WebCore):
(sort_datas_for_sync_data_order):
(main):
(generate_document_synched_data_header): Deleted.
(generate_document_synched_data_impl): Deleted.
(sort_datas_for_document_sync_data_order): Deleted.
* Source/WebCore/Scripts/tests/DocumentSyncData.cpp:
* Source/WebCore/Scripts/tests/DocumentSyncData.h:
* Source/WebCore/Scripts/tests/FrameTreeSyncData.cpp: Copied from 
Source/WebCore/Scripts/tests/ProcessSyncClient.h.
(WebCore::FrameTreeSyncData::update):
(WebCore::FrameTreeSyncData::FrameTreeSyncData):
* Source/WebCore/Scripts/tests/FrameTreeSyncData.h: Copied from 
Source/WebCore/Scripts/tests/DocumentSyncData.h.
(WebCore::FrameTreeSyncData::create):
* Source/WebCore/Scripts/tests/ProcessSyncClient.cpp:
(WebCore::ProcessSyncClient::broadcastAnotherOneToOtherProcesses):
* Source/WebCore/Scripts/tests/ProcessSyncClient.h:
* Source/WebCore/Scripts/tests/ProcessSyncData.h:
* Source/WebCore/Scripts/tests/ProcessSyncData.serialization.in:
* Source/WebCore/Scripts/tests/TestProcessSyncData.in:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::populateDocumentSyncDataForNewlyConstructedDocument):
* Source/WebCore/page/Frame.cpp:
(WebCore::Frame::Frame):
(WebCore::Frame::updateFrameTreeSyncData):
(WebCore::Frame::frameCanCreatePaymentSession const):
* Source/WebCore/page/Frame.h:
(WebCore::Frame::frameTreeSyncData):
* Source/WebCore/page/LocalFrame.cpp:
(WebCore::LocalFrame::LocalFrame):
(WebCore::LocalFrame::createMainFrame):
(WebCore::LocalFrame::createSubframe):
(WebCore::LocalFrame::createProvisionalSubframe):
(WebCore::LocalFrame::frameCanCreatePaymentSession const):
* Source/WebCore/page/LocalFrame.h:
* Source/WebCore/page/Page.cpp:
(WebCore::createMainFrame):
(WebCore::Page::Page):
(WebCore::Page::updateProcessSyncData):
* Source/WebCore/page/ProcessSyncData.in:
* Source/WebCore/page/RemoteFrame.cpp:
(WebCore::RemoteFrame::createMainFrame):
(WebCore::RemoteFrame::createSubframe):
(WebCore::RemoteFrame::createSubframeWithContentsInAnotherProcess):
(WebCore::RemoteFrame::RemoteFrame):
* Source/WebCore/page/RemoteFrame.h:
* Source/WebKit/Shared/FrameTreeCreationParameters.h:
* Source/WebKit/Shared/FrameTreeCreationParameters.serialization.in:
* Source/WebKit/UIProcess/RemotePageProxy.cpp:
(WebKit::RemotePageProxy::processDidTerminate):
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::didCommitLoad):
(WebKit::WebFrameProxy::frameTreeCreationParameters const):
(WebKit::WebFrameProxy::remoteProcessDidTerminate):
(WebKit::WebFrameProxy::calculateFrameTreeSyncData const):
(WebKit::WebFrameProxy::broadcastFrameTreeSyncData):
(WebKit::WebFrameProxy::notifyParentOfLoadCompletion):
* Source/WebKit/UIProcess/WebFrameProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::observeAndCreateRemoteSubframesInOtherProcesses):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):
* Source/WebKit/WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::createSubframe):
(WebKit::WebFrame::createRemoteSubframe):
(WebKit::WebFrame::loadDidCommitInAnotherProcess):
(WebKit::WebFrame::createProvisionalFrame):
* Source/WebKit/WebProcess/WebPage/WebFrame.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_textAnimationController):
(WebKit::WebPage::constructFrameTree):
(WebKit::WebPage::createRemoteSubframe):
(WebKit::WebPage::updateFrameTreeSyncData):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Source/WebKitLegacy/mac/WebView/WebFrame.mm:
(+[WebFrame _createFrameWithPage:frameName:frameView:ownerElement:]):

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