Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d4bf0dab90e9db4ab1c487c933d93321afc8d3fb
      
https://github.com/WebKit/WebKit/commit/d4bf0dab90e9db4ab1c487c933d93321afc8d3fb
  Author: Eddy Wong <eddy_w...@apple.com>
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
    M Source/WebCore/Modules/push-api/PushStrategy.h
    M Source/WebKit/CMakeLists.txt
    M Source/WebKit/DerivedSources-input.xcfilelist
    M Source/WebKit/DerivedSources-output.xcfilelist
    M Source/WebKit/DerivedSources.make
    A Source/WebKit/ModelProcess/ModelConnectionToWebProcess.cpp
    A Source/WebKit/ModelProcess/ModelConnectionToWebProcess.h
    A Source/WebKit/ModelProcess/ModelConnectionToWebProcess.messages.in
    A Source/WebKit/ModelProcess/ModelProcess.cpp
    A Source/WebKit/ModelProcess/ModelProcess.h
    A Source/WebKit/ModelProcess/ModelProcess.messages.in
    A Source/WebKit/ModelProcess/ModelProcessCreationParameters.h
    A Source/WebKit/ModelProcess/ModelProcessCreationParameters.serialization.in
    M Source/WebKit/Scripts/webkit/messages.py
    A Source/WebKit/Shared/ModelProcessConnectionParameters.h
    A Source/WebKit/Shared/ModelProcessConnectionParameters.serialization.in
    M Source/WebKit/Sources.txt
    M Source/WebKit/SourcesCocoa.txt
    A Source/WebKit/UIProcess/Model/ModelProcessProxy.cpp
    A Source/WebKit/UIProcess/Model/ModelProcessProxy.h
    A Source/WebKit/UIProcess/Model/ModelProcessProxy.messages.in
    M Source/WebKit/UIProcess/WebProcessProxy.cpp
    M Source/WebKit/UIProcess/WebProcessProxy.h
    M Source/WebKit/UIProcess/WebProcessProxy.messages.in
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    A Source/WebKit/WebProcess/Model/ModelProcessConnection.cpp
    A Source/WebKit/WebProcess/Model/ModelProcessConnection.h
    A Source/WebKit/WebProcess/Model/ModelProcessConnection.messages.in
    A Source/WebKit/WebProcess/Model/ModelProcessConnectionInfo.h
    A Source/WebKit/WebProcess/Model/ModelProcessConnectionInfo.serialization.in
    M Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm
    M Source/WebKit/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm
    M Source/WebKit/WebProcess/cocoa/RemoteCaptureSampleManager.cpp

  Log Message:
  -----------
  Introduce a <model> loading process - Part 1
https://bugs.webkit.org/show_bug.cgi?id=243874

Reviewed by Alex Christensen.

In order to allow parsing of complex 3D model formats with a custom (tight) 
sandbox,
introduce a separate process for loading/parsing <model>s.

This is part 1 of the effort, where we have added the new classes and messages.
Most of them are gated behind ENABLE(MODEL_PROCESS) that remains false on all 
platforms
for the time being.

In an upcoming PR, we will introduce new code in existing classes that will 
call into
these new classes, as well as flipping on the compilation flag on applicable 
platforms.
The actual ModelProcess XPC service will come in an upcoming PR as well.

The new classes and messages in this patch is to support launching of the new 
process.
Most of them are boilerplate code adapted from GPUProcess. There is a good 
amount of
duplicated code that warrants a refactoring down the road, but that is out of 
scope
for this current <model> tag effort.

* Source/WebKit/CMakeLists.txt:
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/ModelProcess/ModelConnectionToWebProcess.cpp: Added.
(WebKit::ModelConnectionToWebProcess::create):
(WebKit::ModelConnectionToWebProcess::ModelConnectionToWebProcess):
(WebKit::m_presentingApplicationAuditToken):
(WebKit::ModelConnectionToWebProcess::~ModelConnectionToWebProcess):
(WebKit::ModelConnectionToWebProcess::didClose):
(WebKit::ModelConnectionToWebProcess::createVisibilityPropagationContextForPage):
(WebKit::ModelConnectionToWebProcess::destroyVisibilityPropagationContextForPage):
(WebKit::ModelConnectionToWebProcess::configureLoggingChannel):
(WebKit::ModelConnectionToWebProcess::allowsExitUnderMemoryPressure const):
(WebKit::ModelConnectionToWebProcess::logger):
(WebKit::ModelConnectionToWebProcess::didReceiveInvalidMessage):
(WebKit::ModelConnectionToWebProcess::lowMemoryHandler):
(WebKit::ModelConnectionToWebProcess::dispatchMessage):
(WebKit::ModelConnectionToWebProcess::dispatchSyncMessage):
* Source/WebKit/ModelProcess/ModelConnectionToWebProcess.h: Added.
(WebKit::ModelConnectionToWebProcess::connection):
(WebKit::ModelConnectionToWebProcess::messageReceiverMap):
(WebKit::ModelConnectionToWebProcess::modelProcess):
(WebKit::ModelConnectionToWebProcess::webProcessIdentifier const):
(WebKit::ModelConnectionToWebProcess::sessionID const):
(WebKit::ModelConnectionToWebProcess::webProcessIdentity const):
(WebKit::ModelConnectionToWebProcess::objectCountForTesting):
* Source/WebKit/ModelProcess/ModelConnectionToWebProcess.messages.in: Added.
* Source/WebKit/ModelProcess/ModelProcess.cpp: Added.
(WebKit::ModelProcess::ModelProcess):
(WebKit::ModelProcess::didReceiveMessage):
(WebKit::ModelProcess::createModelConnectionToWebProcess):
(WebKit::ModelProcess::removeModelConnectionToWebProcess):
(WebKit::ModelProcess::connectionToWebProcessClosed):
(WebKit::ModelProcess::shouldTerminate):
(WebKit::ModelProcess::canExitUnderMemoryPressure const):
(WebKit::ModelProcess::tryExitIfUnusedAndUnderMemoryPressure):
(WebKit::ModelProcess::tryExitIfUnused):
(WebKit::ModelProcess::lowMemoryHandler):
(WebKit::ModelProcess::initializeModelProcess):
(WebKit::ModelProcess::prepareToSuspend):
(WebKit::ModelProcess::processDidResume):
(WebKit::ModelProcess::resume):
(WebKit::ModelProcess::webProcessConnection const):
(WebKit::ModelProcess::webProcessConnectionCountForTesting):
(WebKit::ModelProcess::addSession):
(WebKit::ModelProcess::removeSession):
* Source/WebKit/ModelProcess/ModelProcess.h: Added.
(WebKit::ModelProcess::applicationVisibleName const):
* Source/WebKit/ModelProcess/ModelProcess.messages.in: Added.
* Source/WebKit/ModelProcess/ModelProcessCreationParameters.h: Added.
* Source/WebKit/ModelProcess/ModelProcessCreationParameters.serialization.in: 
Added.
* Source/WebKit/Scripts/webkit/messages.py:
(types_that_must_be_moved):
* Source/WebKit/Shared/ModelProcessConnectionParameters.h: Added.
* Source/WebKit/Shared/ModelProcessConnectionParameters.serialization.in: Added.
* Source/WebKit/Sources.txt:
* Source/WebKit/SourcesCocoa.txt:
* Source/WebKit/UIProcess/Model/ModelProcessProxy.cpp: Added.
(WebKit::ModelProcessProxy::create):
(WebKit::ModelProcessProxy::ModelProcessProxy):
(WebKit::ModelProcessProxy::getLaunchOptions):
(WebKit::ModelProcessProxy::connectionWillOpen):
(WebKit::ModelProcessProxy::processWillShutDown):
(WebKit::ModelProcessProxy::createModelProcessConnection):
(WebKit::ModelProcessProxy::modelProcessExited):
(WebKit::ModelProcessProxy::processIsReadyToExit):
(WebKit::ModelProcessProxy::addSession):
(WebKit::ModelProcessProxy::removeSession):
(WebKit::ModelProcessProxy::terminateForTesting):
(WebKit::ModelProcessProxy::webProcessConnectionCountForTesting):
(WebKit::ModelProcessProxy::didClose):
(WebKit::ModelProcessProxy::didReceiveInvalidMessage):
(WebKit::ModelProcessProxy::didFinishLaunching):
(WebKit::ModelProcessProxy::updateProcessAssertion):
(WebKit::ModelProcessProxy::sendPrepareToSuspend):
(WebKit::ModelProcessProxy::sendProcessDidResume):
(WebKit::ModelProcessProxy::didCreateContextForVisibilityPropagation):
(WebKit::ModelProcessProxy::didBecomeUnresponsive):
* Source/WebKit/UIProcess/Model/ModelProcessProxy.h: Added.
* Source/WebKit/UIProcess/Model/ModelProcessProxy.messages.in: Added.
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::createModelProcessConnection):
* Source/WebKit/UIProcess/WebProcessProxy.h:
* Source/WebKit/UIProcess/WebProcessProxy.messages.in:

* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
In addition to the newly added classes, also added the existing
GPUProcessConnectionInfo.serialization.in file so that it can be directly
edited from Xcode.

* Source/WebKit/WebProcess/Model/ModelProcessConnection.cpp: Added.
(WebKit::getModelProcessConnectionParameters):
(WebKit::ModelProcessConnection::create):
(WebKit::ModelProcessConnection::ModelProcessConnection):
(WebKit::ModelProcessConnection::~ModelProcessConnection):
(WebKit::ModelProcessConnection::auditToken):
(WebKit::ModelProcessConnection::invalidate):
(WebKit::ModelProcessConnection::didClose):
(WebKit::ModelProcessConnection::didReceiveInvalidMessage):
(WebKit::ModelProcessConnection::dispatchMessage):
(WebKit::ModelProcessConnection::dispatchSyncMessage):
(WebKit::ModelProcessConnection::didInitialize):
(WebKit::ModelProcessConnection::waitForDidInitialize):
(WebKit::ModelProcessConnection::createVisibilityPropagationContextForPage):
(WebKit::ModelProcessConnection::destroyVisibilityPropagationContextForPage):
(WebKit::ModelProcessConnection::configureLoggingChannel):
* Source/WebKit/WebProcess/Model/ModelProcessConnection.h: Added.
(WebKit::ModelProcessConnection::connection):
(WebKit::ModelProcessConnection::messageReceiverMap):
(WebKit::ModelProcessConnection::Client::modelProcessConnectionDidClose):
(WebKit::ModelProcessConnection::addClient):
(WebKit::ModelProcessConnection::removeClient):
* Source/WebKit/WebProcess/Model/ModelProcessConnection.messages.in: Added.
* Source/WebKit/WebProcess/Model/ModelProcessConnectionInfo.h: Added.
* Source/WebKit/WebProcess/Model/ModelProcessConnectionInfo.serialization.in: 
Added.

The following files are modified trivially to accomodate for source unification 
reshuffling:
* Source/WebCore/Modules/push-api/PushStrategy.h:
* Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:
* Source/WebKit/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:
* Source/WebKit/WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to