Title: [248651] branches/safari-608-branch/Source/WebCore
Revision
248651
Author
alanc...@apple.com
Date
2019-08-13 18:19:20 -0700 (Tue, 13 Aug 2019)

Log Message

Cherry-pick r248597. rdar://problem/54282817

    Make sure UniqueIDBDatabaseConnection unregister itself from IDBServer
    https://bugs.webkit.org/show_bug.cgi?id=200650
    <rdar://problem/54236010>

    Reviewed by Youenn Fablet.

    We register UniqueIDBDatabaseConnection unconditionally to IDBServer but fail to unregister if UniqueIDBDatabase
    of UniqueIDBDatabaseConnection is gone.

    * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
    (WebCore::IDBServer::UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection):
    (WebCore::IDBServer::UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection):
    * Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
    (WebCore::IDBServer::UniqueIDBDatabaseConnection::server):
    * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
    (WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction):
    (WebCore::IDBServer::UniqueIDBDatabaseTransaction::~UniqueIDBDatabaseTransaction):
    * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248597 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-608-branch/Source/WebCore/ChangeLog (248650 => 248651)


--- branches/safari-608-branch/Source/WebCore/ChangeLog	2019-08-14 01:05:27 UTC (rev 248650)
+++ branches/safari-608-branch/Source/WebCore/ChangeLog	2019-08-14 01:19:20 UTC (rev 248651)
@@ -1,5 +1,52 @@
 2019-08-13  Alan Coon  <alanc...@apple.com>
 
+        Cherry-pick r248597. rdar://problem/54282817
+
+    Make sure UniqueIDBDatabaseConnection unregister itself from IDBServer
+    https://bugs.webkit.org/show_bug.cgi?id=200650
+    <rdar://problem/54236010>
+    
+    Reviewed by Youenn Fablet.
+    
+    We register UniqueIDBDatabaseConnection unconditionally to IDBServer but fail to unregister if UniqueIDBDatabase
+    of UniqueIDBDatabaseConnection is gone.
+    
+    * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
+    (WebCore::IDBServer::UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection):
+    (WebCore::IDBServer::UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection):
+    * Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
+    (WebCore::IDBServer::UniqueIDBDatabaseConnection::server):
+    * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
+    (WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction):
+    (WebCore::IDBServer::UniqueIDBDatabaseTransaction::~UniqueIDBDatabaseTransaction):
+    * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248597 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2019-08-13  Sihui Liu  <sihui_...@apple.com>
+
+            Make sure UniqueIDBDatabaseConnection unregister itself from IDBServer
+            https://bugs.webkit.org/show_bug.cgi?id=200650
+            <rdar://problem/54236010>
+
+            Reviewed by Youenn Fablet.
+
+            We register UniqueIDBDatabaseConnection unconditionally to IDBServer but fail to unregister if UniqueIDBDatabase
+            of UniqueIDBDatabaseConnection is gone.
+
+            * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection):
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection):
+            * Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::server):
+            * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
+            (WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction):
+            (WebCore::IDBServer::UniqueIDBDatabaseTransaction::~UniqueIDBDatabaseTransaction):
+            * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
+
+2019-08-13  Alan Coon  <alanc...@apple.com>
+
         Cherry-pick r248499. rdar://problem/54237800
 
     Can’t sort videos on a YouTube channel page on iPad

Modified: branches/safari-608-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp (248650 => 248651)


--- branches/safari-608-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp	2019-08-14 01:05:27 UTC (rev 248650)
+++ branches/safari-608-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp	2019-08-14 01:19:20 UTC (rev 248651)
@@ -45,17 +45,18 @@
 
 UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection(UniqueIDBDatabase& database, ServerOpenDBRequest& request)
     : m_database(makeWeakPtr(database))
+    , m_server(makeWeakPtr(m_database->server()))
     , m_connectionToClient(request.connection())
     , m_openRequestIdentifier(request.requestData().requestIdentifier())
 {
-    m_database->server().registerDatabaseConnection(*this);
+    m_server->registerDatabaseConnection(*this);
     m_connectionToClient->registerDatabaseConnection(*this);
 }
 
 UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection()
 {
-    if (m_database)
-        m_database->server().unregisterDatabaseConnection(*this);
+    if (m_server)
+        m_server->unregisterDatabaseConnection(*this);
     m_connectionToClient->unregisterDatabaseConnection(*this);
 }
 

Modified: branches/safari-608-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.h (248650 => 248651)


--- branches/safari-608-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.h	2019-08-14 01:05:27 UTC (rev 248650)
+++ branches/safari-608-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.h	2019-08-14 01:19:20 UTC (rev 248651)
@@ -54,6 +54,7 @@
 
     const IDBResourceIdentifier& openRequestIdentifier() { return m_openRequestIdentifier; }
     UniqueIDBDatabase* database() { return m_database.get(); }
+    IDBServer* server() { return m_server.get(); }
     IDBConnectionToClient& connectionToClient() { return m_connectionToClient; }
 
     void connectionPendingCloseFromClient();
@@ -90,6 +91,7 @@
     UniqueIDBDatabaseConnection(UniqueIDBDatabase&, ServerOpenDBRequest&);
 
     WeakPtr<UniqueIDBDatabase> m_database;
+    WeakPtr<IDBServer> m_server;
     Ref<IDBConnectionToClient> m_connectionToClient;
     IDBResourceIdentifier m_openRequestIdentifier;
 

Modified: branches/safari-608-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp (248650 => 248651)


--- branches/safari-608-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp	2019-08-14 01:05:27 UTC (rev 248650)
+++ branches/safari-608-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp	2019-08-14 01:19:20 UTC (rev 248651)
@@ -53,9 +53,8 @@
     if (m_transactionInfo.mode() == IDBTransactionMode::Versionchange)
         m_originalDatabaseInfo = std::make_unique<IDBDatabaseInfo>(database->info());
 
-    auto& server = database->server();
-    m_server = makeWeakPtr(server);
-    server.registerTransaction(*this);
+    if (auto* server = m_databaseConnection->server())
+        server->registerTransaction(*this);
 }
 
 UniqueIDBDatabaseTransaction::~UniqueIDBDatabaseTransaction()
@@ -63,8 +62,8 @@
     if (auto database = m_databaseConnection->database())
         database->transactionDestroyed(*this);
 
-    if (m_server)
-        m_server->unregisterTransaction(*this);
+    if (auto* server = m_databaseConnection->server())
+        server->unregisterTransaction(*this);
 }
 
 IDBDatabaseInfo* UniqueIDBDatabaseTransaction::originalDatabaseInfo() const

Modified: branches/safari-608-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h (248650 => 248651)


--- branches/safari-608-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h	2019-08-14 01:05:27 UTC (rev 248650)
+++ branches/safari-608-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h	2019-08-14 01:19:20 UTC (rev 248651)
@@ -101,7 +101,6 @@
 
     Ref<UniqueIDBDatabaseConnection> m_databaseConnection;
     IDBTransactionInfo m_transactionInfo;
-    WeakPtr<IDBServer> m_server;
 
     std::unique_ptr<IDBDatabaseInfo> m_originalDatabaseInfo;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to