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

Reply via email to