Changeset 293758 in webkit
- Timestamp:
- May 3, 2022 8:17:09 PM (2 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r293757 r293758 1 2022-05-03 Per Arne Vollan <pvollan@apple.com> 2 3 Add logging related to Launch Services database 4 https://bugs.webkit.org/show_bug.cgi?id=240032 5 6 Reviewed by Geoffrey Garen. 7 8 We have reports indicating that it can sometime take unexpectedly long time for the Network process to provide 9 the Launch Services database to the WebContent and GPU process. Add some logging to help diagnose the issue. 10 There are also some related selector response checks that can be removed now. 11 12 * NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm: 13 (WebKit::LaunchServicesDatabaseObserver::LaunchServicesDatabaseObserver): 14 (WebKit::LaunchServicesDatabaseObserver::startObserving): 15 (WebKit::LaunchServicesDatabaseObserver::~LaunchServicesDatabaseObserver): 16 (WebKit::databaseContext): Deleted. 17 * UIProcess/Network/NetworkProcessProxy.cpp: 18 (WebKit::NetworkProcessProxy::NetworkProcessProxy): 19 (WebKit::NetworkProcessProxy::didFinishLaunching): 20 * UIProcess/Network/NetworkProcessProxyCocoa.mm: 21 (WebKit::NetworkProcessProxy::sendXPCEndpointToProcess): 22 * WebProcess/cocoa/LaunchServicesDatabaseManager.mm: 23 (WebKit::LaunchServicesDatabaseManager::handleEvent): 24 1 25 2022-05-03 Yusuke Suzuki <ysuzuki@apple.com> 2 26 -
trunk/Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm
r293744 r293758 34 34 namespace WebKit { 35 35 36 #if HAVE(LSDATABASECONTEXT)37 static LSDatabaseContext *databaseContext()38 {39 static dispatch_once_t once;40 static LSDatabaseContext *context = nullptr;41 dispatch_once(&once, ^{42 context = [NSClassFromString(@"LSDatabaseContext") sharedDatabaseContext];43 });44 return context;45 }46 #endif47 48 36 LaunchServicesDatabaseObserver::LaunchServicesDatabaseObserver(NetworkProcess&) 49 37 { 50 38 #if HAVE(LSDATABASECONTEXT) 51 if (![databaseContext() respondsToSelector:@selector(addDatabaseChangeObserver4WebKit:)]) 52 return; 53 54 m_observer = [databaseContext() addDatabaseChangeObserver4WebKit:^(xpc_object_t change) { 39 m_observer = [LSDatabaseContext.sharedDatabaseContext addDatabaseChangeObserver4WebKit:^(xpc_object_t change) { 55 40 auto message = adoptOSObject(xpc_dictionary_create(nullptr, nullptr, 0)); 56 41 xpc_dictionary_set_string(message.get(), XPCEndpoint::xpcMessageNameKey, LaunchServicesDatabaseXPCConstants::xpcUpdateLaunchServicesDatabaseMessageName); … … 79 64 80 65 #if HAVE(LSDATABASECONTEXT) 81 if (![databaseContext() respondsToSelector:@selector(addDatabaseChangeObserver4WebKit:)]) { 82 auto message = adoptOSObject(xpc_dictionary_create(nullptr, nullptr, 0)); 83 xpc_dictionary_set_string(message.get(), XPCEndpoint::xpcMessageNameKey, LaunchServicesDatabaseXPCConstants::xpcUpdateLaunchServicesDatabaseMessageName); 84 xpc_connection_send_message(connection.get(), message.get()); 85 return; 86 } 87 88 RetainPtr<id> observer = [databaseContext() addDatabaseChangeObserver4WebKit:^(xpc_object_t change) { 66 RetainPtr<id> observer = [LSDatabaseContext.sharedDatabaseContext addDatabaseChangeObserver4WebKit:^(xpc_object_t change) { 89 67 auto message = adoptOSObject(xpc_dictionary_create(nullptr, nullptr, 0)); 90 68 xpc_dictionary_set_string(message.get(), XPCEndpoint::xpcMessageNameKey, LaunchServicesDatabaseXPCConstants::xpcUpdateLaunchServicesDatabaseMessageName); … … 94 72 }]; 95 73 96 [ databaseContext()removeDatabaseChangeObserver4WebKit:observer.get()];74 [LSDatabaseContext.sharedDatabaseContext removeDatabaseChangeObserver4WebKit:observer.get()]; 97 75 #else 98 76 auto message = adoptOSObject(xpc_dictionary_create(nullptr, nullptr, 0)); … … 105 83 { 106 84 #if HAVE(LSDATABASECONTEXT) 107 if (![databaseContext() respondsToSelector:@selector(removeDatabaseChangeObserver4WebKit:)]) 108 return; 109 110 [databaseContext() removeDatabaseChangeObserver4WebKit:m_observer.get()]; 85 [LSDatabaseContext.sharedDatabaseContext removeDatabaseChangeObserver4WebKit:m_observer.get()]; 111 86 #endif 112 87 } -
trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
r293744 r293758 242 242 , m_cookieManager(makeUniqueRef<WebCookieManagerProxy>(*this)) 243 243 { 244 RELEASE_LOG(Process, "%p - NetworkProcessProxy::NetworkProcessProxy", this); 245 244 246 connect(); 245 247 sendCreationParametersToNewProcess(); … … 550 552 void NetworkProcessProxy::didFinishLaunching(ProcessLauncher* launcher, IPC::Connection::Identifier connectionIdentifier) 551 553 { 554 RELEASE_LOG(Process, "%p - NetworkProcessProxy::didFinishLaunching", this); 555 552 556 AuxiliaryProcessProxy::didFinishLaunching(launcher, connectionIdentifier); 553 557 -
trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxyCocoa.mm
r293744 r293758 81 81 bool NetworkProcessProxy::sendXPCEndpointToProcess(AuxiliaryProcessProxy& process) 82 82 { 83 RELEASE_LOG(Process, "%p - NetworkProcessProxy::sendXPCEndpointToProcess(%p) state = %d has connection = %d XPC endpoint message = %p", this, &process, process.state(), process.hasConnection(), xpcEndpointMessage()); 84 83 85 if (process.state() != AuxiliaryProcessProxy::State::Running) 84 86 return false; 85 auto* connection = process.connection(); 86 if (!connection) 87 if (!process.hasConnection()) 87 88 return false; 88 89 auto message = xpcEndpointMessage(); 89 90 if (!message) 90 91 return false; 91 xpc_connection_send_message(connection->xpcConnection(), message); 92 auto xpcConnection = process.connection()->xpcConnection(); 93 RELEASE_ASSERT(xpcConnection); 94 xpc_connection_send_message(xpcConnection, message); 92 95 return true; 93 96 } -
trunk/Source/WebKit/WebProcess/cocoa/LaunchServicesDatabaseManager.mm
r293744 r293758 50 50 auto database = xpc_dictionary_get_value(message, LaunchServicesDatabaseXPCConstants::xpcLaunchServicesDatabaseKey); 51 51 52 if (database) { 53 auto context = [NSClassFromString(@"LSDatabaseContext") sharedDatabaseContext]; 54 if (![context respondsToSelector:@selector(observeDatabaseChange4WebKit:)]) 55 return; 56 [context observeDatabaseChange4WebKit:database]; 57 } 52 RELEASE_LOG(Loading, "Received Launch Services database %p", database); 53 54 if (database) 55 [LSDatabaseContext.sharedDatabaseContext observeDatabaseChange4WebKit:database]; 58 56 #endif 59 57 m_semaphore.signal();
Note: See TracChangeset
for help on using the changeset viewer.