Changeset 293743 in webkit
- Timestamp:
- May 3, 2022 3:23:23 PM (2 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r293734 r293743 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 Per Arne Vollan <pvollan@apple.com> 2 26 -
trunk/Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm
r292197 r293743 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
r293562 r293743 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
r292197 r293743 81 81 bool NetworkProcessProxy::sendXPCEndpointToProcess(AuxiliaryProcessProxy& process) 82 82 { 83 RELEASE_LOG(Process, "%p - NetworkProcessProxy::sendXPCEndpointToProcess(%p) state = %d connection = %p XPC endpoint message = %p", this, &process, process.state(), process.connection(), xpcEndpointMessage()); 84 83 85 if (process.state() != AuxiliaryProcessProxy::State::Running) 84 86 return false; -
trunk/Source/WebKit/WebProcess/cocoa/LaunchServicesDatabaseManager.mm
r292197 r293743 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.