Title: [278317] trunk/Source/WebKit
- Revision
- 278317
- Author
- [email protected]
- Date
- 2021-06-01 11:57:43 -0700 (Tue, 01 Jun 2021)
Log Message
Resume WebIDBServer when it is about to be closed
https://bugs.webkit.org/show_bug.cgi?id=226502
rdar://78691498
Reviewed by Chris Dumez.
We started to acquire m_serverLock in WebIDBServer::close() in r278179 to stop database activities on the main
thread. However, m_serverLock may already be held for suspension, and WebIDBServer::close() may be called
before resume(). We need to resume WebIDBServer so m_serverLock can be acquired for stopping database activities.
This also makes sure background thread is resumed before WebIDBServer is removed from NetworkProcess.
* NetworkProcess/IndexedDB/WebIDBServer.cpp:
(WebKit::WebIDBServer::~WebIDBServer):
(WebKit::WebIDBServer::close):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (278316 => 278317)
--- trunk/Source/WebKit/ChangeLog 2021-06-01 18:50:17 UTC (rev 278316)
+++ trunk/Source/WebKit/ChangeLog 2021-06-01 18:57:43 UTC (rev 278317)
@@ -1,3 +1,20 @@
+2021-06-01 Sihui Liu <[email protected]>
+
+ Resume WebIDBServer when it is about to be closed
+ https://bugs.webkit.org/show_bug.cgi?id=226502
+ rdar://78691498
+
+ Reviewed by Chris Dumez.
+
+ We started to acquire m_serverLock in WebIDBServer::close() in r278179 to stop database activities on the main
+ thread. However, m_serverLock may already be held for suspension, and WebIDBServer::close() may be called
+ before resume(). We need to resume WebIDBServer so m_serverLock can be acquired for stopping database activities.
+ This also makes sure background thread is resumed before WebIDBServer is removed from NetworkProcess.
+
+ * NetworkProcess/IndexedDB/WebIDBServer.cpp:
+ (WebKit::WebIDBServer::~WebIDBServer):
+ (WebKit::WebIDBServer::close):
+
2021-06-01 Chris Dumez <[email protected]>
Enable WebPageProxy's release logging in ephemeral sessions
Modified: trunk/Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp (278316 => 278317)
--- trunk/Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp 2021-06-01 18:50:17 UTC (rev 278316)
+++ trunk/Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp 2021-06-01 18:57:43 UTC (rev 278317)
@@ -58,6 +58,7 @@
ASSERT(RunLoop::isMain());
// close() has to be called to make sure thread exits.
ASSERT(!m_closeCallback);
+ ASSERT(!m_isSuspended);
}
void WebIDBServer::getOrigins(CompletionHandler<void(HashSet<WebCore::SecurityOriginData>&&)>&& callback)
@@ -427,6 +428,11 @@
callOnMainRunLoop([protectedThis = WTFMove(protectedThis)] { });
});
+#if PLATFORM(IOS_FAMILY)
+ // Network process may become active and close WebIDBServer before receiving resume message.
+ resume();
+#endif
+
{
Locker locker { m_serverLock };
if (m_server)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes