[webkit-changes] [WebKit/WebKit] 48ace7: Introduce a <model> loading process - Part 2

Commit Queue noreply at github.com
Tue Feb 6 18:23:07 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 48ace7f41c0cfd439060cfcc58e4a32d45c3ffcf
      https://github.com/WebKit/WebKit/commit/48ace7f41c0cfd439060cfcc58e4a32d45c3ffcf
  Author: Eddy Wong <eddy_wong at apple.com>
  Date:   2024-02-06 (Tue, 06 Feb 2024)

  Changed paths:
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
    M Source/WTF/wtf/PlatformEnableCocoa.h
    M Source/WebCore/platform/RuntimeApplicationChecks.cpp
    M Source/WebCore/platform/RuntimeApplicationChecks.h
    A Source/WebKit/ModelProcess/EntryPoint/Cocoa/XPCService/ModelServiceEntryPoint.mm
    A Source/WebKit/ModelProcess/cocoa/ModelProcessCocoa.mm
    A Source/WebKit/ModelProcess/ios/ModelProcessIOS.mm
    M Source/WebKit/Platform/ExtraPrivateSymbolsForTAPI.h
    M Source/WebKit/Shared/Cocoa/DefaultWebBrowserChecks.mm
    M Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h
    M Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm
    M Source/WebKit/SourcesCocoa.txt
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
    M Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp
    M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h
    M Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm
    M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
    M Source/WebKit/UIProcess/Launcher/ProcessLauncher.h
    M Source/WebKit/UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm
    M Source/WebKit/UIProcess/Model/ModelProcessProxy.cpp
    M Source/WebKit/UIProcess/Model/ModelProcessProxy.h
    M Source/WebKit/UIProcess/PageClient.h
    M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
    M Source/WebKit/UIProcess/ProvisionalPageProxy.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebProcessPool.cpp
    M Source/WebKit/UIProcess/WebProcessPool.h
    M Source/WebKit/UIProcess/WebProcessProxy.cpp
    M Source/WebKit/UIProcess/WebProcessProxy.h
    M Source/WebKit/UIProcess/ios/PageClientImplIOS.h
    M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
    M Source/WebKit/UIProcess/ios/WKContentView.h
    M Source/WebKit/UIProcess/ios/WKContentView.mm
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/Model/ModelProcessConnection.h
    A Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.h
    A Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.mm
    M Source/WebKit/WebProcess/Model/WebModelPlayerProvider.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/WebPage.h
    M Source/WebKit/WebProcess/WebProcess.cpp
    M Source/WebKit/WebProcess/WebProcess.h

  Log Message:
  -----------
  Introduce a <model> loading process - Part 2
https://bugs.webkit.org/show_bug.cgi?id=243874
rdar://122051588 (Create new com.apple.WebKit.Model process)

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 2 of the effort, where we hook up the new Model* classes from
existing classes. ENABLE_MODEL_PROCESS is now turned on for visionOS.
The new process doesn't exist yet. The actual rendering flow is not changed yet.
Certain changes were to accommodate for the new plan of having a single ModelProcess
across the system instead of having one ModelProcess for each WebProcess.

* Source/WTF/wtf/PlatformEnableCocoa.h:
Enables MODEL_PROCESS for visionOS.

* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WTF/wtf/PlatformEnableCocoa.h:
* Source/WebCore/platform/RuntimeApplicationChecks.cpp:
(WebCore::processTypeDescription):
* Source/WebCore/platform/RuntimeApplicationChecks.h:
* Source/WebKit/ModelProcess/EntryPoint/Cocoa/XPCService/ModelServiceEntryPoint.mm: Copied from Source/WebKit/UIProcess/WebContextClient.h.
(WebKit::ModelServiceInitializerDelegate::ModelServiceInitializerDelegate):
(WebKit::initializeAuxiliaryProcess<ModelProcess>):
(MODEL_SERVICE_INITIALIZER):
* Source/WebKit/ModelProcess/cocoa/ModelProcessCocoa.mm: Copied from Source/WebKit/Platform/ExtraPrivateSymbolsForTAPI.h.
(WebKit::ModelProcess::notifyPreferencesChanged):
(WebKit::ModelProcess::dispatchSimulatedNotificationsForPreferenceChange):
* Source/WebKit/ModelProcess/ios/ModelProcessIOS.mm: Copied from Source/WebKit/Platform/ExtraPrivateSymbolsForTAPI.h.
(WebKit::ModelProcess::initializeProcess):
(WebKit::ModelProcess::initializeProcessName):
(WebKit::ModelProcess::initializeSandbox):
* Source/WebKit/Platform/ExtraPrivateSymbolsForTAPI.h:
* Source/WebKit/Shared/Cocoa/DefaultWebBrowserChecks.mm:
(WebKit::isInWebKitChildProcess):
* Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:
* Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
(WebKit::XPCServiceEventHandler):
* Source/WebKit/Shared/RemoteLayerTree/DynamicContentScalingImageBufferBackend.mm:
(WebKit::DynamicContentScalingImageBufferBackend::createBackendHandle const):
* Source/WebKit/SourcesCocoa.txt:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _modelProcessIdentifier]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
* Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:
(WebKit::AuxiliaryProcessProxy::getLaunchOptions):
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h:
* Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm:
(WebKit::PageClientImplCocoa::modelProcessDidFinishLaunching):
(WebKit::PageClientImplCocoa::modelProcessDidExit):
* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::didCreateContextInModelProcessForVisibilityPropagation):
* Source/WebKit/UIProcess/Launcher/ProcessLauncher.h:
* Source/WebKit/UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm:
(WebKit::serviceName):
* Source/WebKit/UIProcess/Model/ModelProcessProxy.cpp:
(WebKit::singleton):
(WebKit::ModelProcessProxy::getOrCreate):
(WebKit::ModelProcessProxy::singletonIfCreated):
(WebKit::ModelProcessProxy::ModelProcessProxy):
(WebKit::ModelProcessProxy::modelProcessExited):
(WebKit::ModelProcessProxy::didFinishLaunching):
(WebKit::ModelProcessProxy::updateProcessAssertion):
(WebKit::ModelProcessProxy::create): Deleted.
* Source/WebKit/UIProcess/Model/ModelProcessProxy.h:
* Source/WebKit/UIProcess/PageClient.h:
(WebKit::PageClient::didCreateContextInModelProcessForVisibilityPropagation):
(WebKit::PageClient::modelProcessDidFinishLaunching):
(WebKit::PageClient::modelProcessDidExit):
* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::didCreateContextInModelProcessForVisibilityPropagation):
* Source/WebKit/UIProcess/ProvisionalPageProxy.h:
(WebKit::ProvisionalPageProxy::contextIDForVisibilityPropagationInModelProcess const):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::modelProcessID const):
(WebKit::WebPageProxy::modelProcessDidFinishLaunching):
(WebKit::WebPageProxy::modelProcessExited):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::m_resetModelProcessCrashCountTimer):
(WebKit::WebProcessPool::ensureModelProcess):
(WebKit::WebProcessPool::ensureProtectedModelProcess):
(WebKit::WebProcessPool::modelProcessDidFinishLaunching):
(WebKit::WebProcessPool::modelProcessExited):
(WebKit::WebProcessPool::createModelProcessConnection):
(WebKit::WebProcessPool::updateProcessAssertions):
* Source/WebKit/UIProcess/WebProcessPool.h:
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::createModelProcessConnection):
(WebKit::WebProcessProxy::modelProcessDidFinishLaunching):
(WebKit::WebProcessProxy::modelProcessExited):
* Source/WebKit/UIProcess/WebProcessProxy.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::didCreateContextInModelProcessForVisibilityPropagation):
(WebKit::PageClientImpl::modelProcessDidExit):
* Source/WebKit/UIProcess/ios/WKContentView.h:
* Source/WebKit/UIProcess/ios/WKContentView.mm:
(-[WKContentView _setupVisibilityPropagationViewForModelProcess]):
(-[WKContentView _removeVisibilityPropagationViewForModelProcess]):
(-[WKContentView _modelProcessDidExit]):
(-[WKContentView _didRelaunchProcess]):
(-[WKContentView _modelProcessDidCreateContextForVisibilityPropagation]):
(-[WKContentView _createVisibilityPropagationView]):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Model/ModelProcessConnection.h:
* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.h: Added.
(WebKit::ModelProcessModelPlayer::page):
(WebKit::ModelProcessModelPlayer::client):
* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.mm: Added.
(WebKit::ModelProcessModelPlayer::create):
(WebKit::ModelProcessModelPlayer::ModelProcessModelPlayer):
(WebKit::ModelProcessModelPlayer::~ModelProcessModelPlayer):
(WebKit::ModelProcessModelPlayer::load):
(WebKit::ModelProcessModelPlayer::sizeDidChange):
(WebKit::ModelProcessModelPlayer::layer):
(WebKit::ModelProcessModelPlayer::handleMouseDown):
(WebKit::ModelProcessModelPlayer::handleMouseMove):
(WebKit::ModelProcessModelPlayer::handleMouseUp):
(WebKit::ModelProcessModelPlayer::enterFullscreen):
(WebKit::ModelProcessModelPlayer::getCamera):
(WebKit::ModelProcessModelPlayer::setCamera):
(WebKit::ModelProcessModelPlayer::isPlayingAnimation):
(WebKit::ModelProcessModelPlayer::setAnimationIsPlaying):
(WebKit::ModelProcessModelPlayer::isLoopingAnimation):
(WebKit::ModelProcessModelPlayer::setIsLoopingAnimation):
(WebKit::ModelProcessModelPlayer::animationDuration):
(WebKit::ModelProcessModelPlayer::animationCurrentTime):
(WebKit::ModelProcessModelPlayer::setAnimationCurrentTime):
(WebKit::ModelProcessModelPlayer::hasAudio):
(WebKit::ModelProcessModelPlayer::isMuted):
(WebKit::ModelProcessModelPlayer::setIsMuted):
(WebKit::ModelProcessModelPlayer::accessibilityChildren):
* Source/WebKit/WebProcess/Model/WebModelPlayerProvider.cpp:
(WebKit::WebModelPlayerProvider::createModelPlayer):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::modelProcessConnectionDidBecomeAvailable):
(WebKit::WebPage::~WebPage):
(WebKit::WebPage::updatePreferences):
(WebKit::WebPage::configureLoggingChannel):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebProcess.cpp:
(WebKit::WebProcess::ensureModelProcessConnection):
(WebKit::WebProcess::modelProcessConnectionClosed):
* Source/WebKit/WebProcess/WebProcess.h:
(WebKit::WebProcess::existingModelProcessConnection):

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




More information about the webkit-changes mailing list