- Revision
- 283374
- Author
- pvol...@apple.com
- Date
- 2021-10-01 09:48:07 -0700 (Fri, 01 Oct 2021)
Log Message
Send Launch Services database to GPU process
https://bugs.webkit.org/show_bug.cgi?id=225151
<rdar://74749122>
Reviewed by Brent Fulgham.
Send Launch Services database to the GPU process after it has finished launching, like we do for WebContent processes.
The Launch Services database is represented as an XPC object, and needs to be sent over a dedicated XPC channel.
* GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
* UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::didFinishLaunching):
(WebKit::GPUProcessProxy::addSession):
* UIProcess/Network/NetworkProcessProxyCocoa.mm:
(WebKit::NetworkProcessProxy::XPCEventHandler::handleXPCEvent const):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::setWebsiteDataStore):
(WebKit::WebProcessProxy::didFinishLaunching):
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToProcess const):
(WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToAllProcesses):
(WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToWebProcess): Deleted.
(WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToAllWebProcesses): Deleted.
* UIProcess/WebsiteData/WebsiteDataStore.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (283373 => 283374)
--- trunk/Source/WebKit/ChangeLog 2021-10-01 16:27:24 UTC (rev 283373)
+++ trunk/Source/WebKit/ChangeLog 2021-10-01 16:48:07 UTC (rev 283374)
@@ -1,3 +1,30 @@
+2021-10-01 Per Arne Vollan <pvol...@apple.com>
+
+ Send Launch Services database to GPU process
+ https://bugs.webkit.org/show_bug.cgi?id=225151
+ <rdar://74749122>
+
+ Reviewed by Brent Fulgham.
+
+ Send Launch Services database to the GPU process after it has finished launching, like we do for WebContent processes.
+ The Launch Services database is represented as an XPC object, and needs to be sent over a dedicated XPC channel.
+
+ * GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
+ * UIProcess/GPU/GPUProcessProxy.cpp:
+ (WebKit::GPUProcessProxy::didFinishLaunching):
+ (WebKit::GPUProcessProxy::addSession):
+ * UIProcess/Network/NetworkProcessProxyCocoa.mm:
+ (WebKit::NetworkProcessProxy::XPCEventHandler::handleXPCEvent const):
+ * UIProcess/WebProcessProxy.cpp:
+ (WebKit::WebProcessProxy::setWebsiteDataStore):
+ (WebKit::WebProcessProxy::didFinishLaunching):
+ * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
+ (WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToProcess const):
+ (WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToAllProcesses):
+ (WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToWebProcess): Deleted.
+ (WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToAllWebProcesses): Deleted.
+ * UIProcess/WebsiteData/WebsiteDataStore.h:
+
2021-10-01 Youenn Fablet <you...@apple.com>
Attribute IOSurfaces created by camera and decoders to responsible WebProcess
Modified: trunk/Source/WebKit/GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in (283373 => 283374)
--- trunk/Source/WebKit/GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in 2021-10-01 16:27:24 UTC (rev 283373)
+++ trunk/Source/WebKit/GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in 2021-10-01 16:48:07 UTC (rev 283374)
@@ -695,7 +695,9 @@
#else
(global-name "com.apple.windowserver.active")
#endif
+#if __MAC_OS_X_VERSION_MIN_REQUIRED < 120000
(global-name "com.apple.lsd.mapdb")
+#endif
(global-name "com.apple.fonts")
(global-name "com.apple.PowerManagement.control")
(global-name "com.apple.trustd.agent")
Modified: trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp (283373 => 283374)
--- trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp 2021-10-01 16:27:24 UTC (rev 283373)
+++ trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp 2021-10-01 16:48:07 UTC (rev 283374)
@@ -432,6 +432,14 @@
if (xpc_connection_t connection = this->connection()->xpcConnection())
m_throttler.didConnectToProcess(xpc_connection_get_pid(connection));
#endif
+
+#if PLATFORM(COCOA)
+ auto it = m_sessionIDs.begin();
+ if (it != m_sessionIDs.end()) {
+ auto webSiteDataStore = WebsiteDataStore::existingDataStoreForSessionID(*m_sessionIDs.begin());
+ webSiteDataStore->sendNetworkProcessXPCEndpointToProcess(*this);
+ }
+#endif
}
void GPUProcessProxy::updateProcessAssertion()
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxyCocoa.mm (283373 => 283374)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxyCocoa.mm 2021-10-01 16:27:24 UTC (rev 283373)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxyCocoa.mm 2021-10-01 16:48:07 UTC (rev 283374)
@@ -54,7 +54,7 @@
if (messageName == LaunchServicesDatabaseXPCConstants::xpcLaunchServicesDatabaseXPCEndpointMessageName) {
m_networkProcess->m_endpointMessage = event;
for (auto& dataStore : copyToVectorOf<Ref<WebsiteDataStore>>(m_networkProcess->m_websiteDataStores))
- dataStore->sendNetworkProcessXPCEndpointToAllWebProcesses();
+ dataStore->sendNetworkProcessXPCEndpointToAllProcesses();
}
return true;
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (283373 => 283374)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2021-10-01 16:27:24 UTC (rev 283373)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2021-10-01 16:48:07 UTC (rev 283374)
@@ -338,8 +338,12 @@
WEBPROCESSPROXY_RELEASE_LOG(Process, "setWebsiteDataStore() dataStore=%p, sessionID=%" PRIu64, &dataStore, dataStore.sessionID().toUInt64());
m_websiteDataStore = &dataStore;
#if PLATFORM(COCOA)
- dataStore.sendNetworkProcessXPCEndpointToWebProcess(*this);
+ dataStore.sendNetworkProcessXPCEndpointToProcess(*this);
+#if ENABLE(GPU_PROCESS)
+ if (GPUProcessProxy::singletonIfCreated())
+ dataStore.sendNetworkProcessXPCEndpointToProcess(*GPUProcessProxy::singletonIfCreated());
#endif
+#endif
updateRegistrationWithDataStore();
send(Messages::WebProcess::SetWebsiteDataStoreParameters(processPool().webProcessDataStoreParameters(*this, dataStore)), 0);
}
@@ -1067,7 +1071,7 @@
#if PLATFORM(COCOA)
if (m_websiteDataStore)
- m_websiteDataStore->sendNetworkProcessXPCEndpointToWebProcess(*this);
+ m_websiteDataStore->sendNetworkProcessXPCEndpointToProcess(*this);
#endif
RELEASE_ASSERT(!m_webConnection);
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm (283373 => 283374)
--- trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm 2021-10-01 16:27:24 UTC (rev 283373)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm 2021-10-01 16:48:07 UTC (rev 283374)
@@ -49,6 +49,10 @@
#import <wtf/cocoa/Entitlements.h>
#import <wtf/text/cf/StringConcatenateCF.h>
+#if ENABLE(GPU_PROCESS)
+#import "GPUProcessProxy.h"
+#endif
+
#if PLATFORM(IOS_FAMILY)
#import <UIKit/UIApplication.h>
#import <pal/ios/ManagedConfigurationSoftLink.h>
@@ -594,7 +598,7 @@
return WTF::hasEntitlement(networkProcess().connection()->xpcConnection(), entitlement.utf8().data());
}
-void WebsiteDataStore::sendNetworkProcessXPCEndpointToWebProcess(WebProcessProxy& process)
+void WebsiteDataStore::sendNetworkProcessXPCEndpointToProcess(AuxiliaryProcessProxy& process) const
{
if (process.state() != AuxiliaryProcessProxy::State::Running)
return;
@@ -607,10 +611,14 @@
xpc_connection_send_message(connection->xpcConnection(), message);
}
-void WebsiteDataStore::sendNetworkProcessXPCEndpointToAllWebProcesses()
+void WebsiteDataStore::sendNetworkProcessXPCEndpointToAllProcesses()
{
for (auto& process : m_processes)
- sendNetworkProcessXPCEndpointToWebProcess(process);
+ sendNetworkProcessXPCEndpointToProcess(process);
+#if ENABLE(GPU_PROCESS)
+ if (GPUProcessProxy::singletonIfCreated())
+ sendNetworkProcessXPCEndpointToProcess(*GPUProcessProxy::singletonIfCreated());
+#endif
}
}
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (283373 => 283374)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h 2021-10-01 16:27:24 UTC (rev 283373)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h 2021-10-01 16:48:07 UTC (rev 283374)
@@ -82,6 +82,7 @@
namespace WebKit {
class AuthenticatorManager;
+class AuxiliaryProcessProxy;
class SecKeyProxyStore;
class DeviceIdHashSaltStorage;
class NetworkProcessProxy;
@@ -278,8 +279,8 @@
void dispatchOnQueue(Function<void()>&&);
#if PLATFORM(COCOA)
- void sendNetworkProcessXPCEndpointToWebProcess(WebProcessProxy&);
- void sendNetworkProcessXPCEndpointToAllWebProcesses();
+ void sendNetworkProcessXPCEndpointToProcess(AuxiliaryProcessProxy&) const;
+ void sendNetworkProcessXPCEndpointToAllProcesses();
static bool useNetworkLoader();
#endif