Changeset 290521 in webkit
- Timestamp:
- Feb 25, 2022 12:08:55 PM (2 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r290513 r290521 1 2022-02-25 Per Arne Vollan <pvollan@apple.com> 2 3 Make sure there is a default Networking process to provide the Launch Services database 4 https://bugs.webkit.org/show_bug.cgi?id=236629 5 6 Reviewed by Brent Fulgham. 7 8 The WebContent processes relies on getting the Launch Services database from the Networking process. 9 It is possible to enter a state where there is no default Network process, but a Network process is 10 running because a Website data store is holding a reference to it. This patch addresses this issue 11 by removing Network process references in all remaining Website data stores when the last process 12 pool is being deleted. 13 14 * UIProcess/WebProcessPool.cpp: 15 (WebKit::WebProcessPool::~WebProcessPool): 16 * UIProcess/WebsiteData/WebsiteDataStore.cpp: 17 (WebKit::WebsiteDataStore::removeNetworkProcessReference): 18 * UIProcess/WebsiteData/WebsiteDataStore.h: 19 1 20 2022-02-25 Youenn Fablet <youenn@apple.com> 2 21 -
trunk/Source/WebKit/UIProcess/WebProcessPool.cpp
r290394 r290521 330 330 } 331 331 332 if (processPools().isEmpty() && !!NetworkProcessProxy::defaultNetworkProcess()) 333 NetworkProcessProxy::defaultNetworkProcess() = nullptr; 332 if (processPools().isEmpty()) { 333 WebsiteDataStore::forEachWebsiteDataStore([](auto& websiteDataStore) { 334 websiteDataStore.removeNetworkProcessReference(); 335 }); 336 if (auto& networkProcess = NetworkProcessProxy::defaultNetworkProcess()) { 337 ASSERT(networkProcess->hasOneRef()); 338 networkProcess = nullptr; 339 } 340 } 334 341 } 335 342 -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
r290329 r290521 227 227 } 228 228 229 void WebsiteDataStore::removeNetworkProcessReference() 230 { 231 m_networkProcess = nullptr; 232 } 233 229 234 void WebsiteDataStore::registerProcess(WebProcessProxy& process) 230 235 { -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
r289721 r290521 126 126 NetworkProcessProxy& networkProcess(); 127 127 NetworkProcessProxy* networkProcessIfExists() { return m_networkProcess.get(); } 128 128 void removeNetworkProcessReference(); 129 129 130 static WebsiteDataStore* existingDataStoreForSessionID(PAL::SessionID); 130 131
Note: See TracChangeset
for help on using the changeset viewer.