Title: [240086] branches/safari-607-branch/Source/WebCore
Revision
240086
Author
[email protected]
Date
2019-01-16 15:28:49 -0800 (Wed, 16 Jan 2019)

Log Message

Apply patch. rdar://problem/47260377

    Cherry-pick r240039. rdar://problem/47260377

        IndexedDB: leak WebIDBConnectionToClient for retain cycle
        https://bugs.webkit.org/show_bug.cgi?id=193097
        <rdar://problem/46899601>

        Reviewed by David Kilzer.

        Fix API test failure after r239887. After removing the retain cycle, IDBConnectionToClient will no longer live
        forever so make sure it is not destructed before UniqueIDBDatabaseConnection unregisters itself.

        * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::fireVersionChangeEvent):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didAbortTransaction):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCommitTransaction):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCreateObjectStore):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didDeleteObjectStore):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didRenameObjectStore):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didClearObjectStore):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCreateIndex):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didDeleteIndex):
        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didRenameIndex):
        * Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:

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

Modified Paths

Diff

Modified: branches/safari-607-branch/Source/WebCore/ChangeLog (240085 => 240086)


--- branches/safari-607-branch/Source/WebCore/ChangeLog	2019-01-16 23:28:46 UTC (rev 240085)
+++ branches/safari-607-branch/Source/WebCore/ChangeLog	2019-01-16 23:28:49 UTC (rev 240086)
@@ -2,6 +2,68 @@
 
         Apply patch. rdar://problem/47260377
 
+    Cherry-pick r240039. rdar://problem/47260377
+    
+        IndexedDB: leak WebIDBConnectionToClient for retain cycle
+        https://bugs.webkit.org/show_bug.cgi?id=193097
+        <rdar://problem/46899601>
+    
+        Reviewed by David Kilzer.
+    
+        Fix API test failure after r239887. After removing the retain cycle, IDBConnectionToClient will no longer live
+        forever so make sure it is not destructed before UniqueIDBDatabaseConnection unregisters itself.
+    
+        * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::fireVersionChangeEvent):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didAbortTransaction):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCommitTransaction):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCreateObjectStore):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didDeleteObjectStore):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didRenameObjectStore):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didClearObjectStore):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCreateIndex):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didDeleteIndex):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didRenameIndex):
+        * Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
+    
+        git-svn-id: http://svn.webkit.org/repository/webkit/trunk@240039 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2019-01-16  David Kilzer  <[email protected]>
+
+            Cherry-pick r240039. rdar://problem/47260377
+
+        2019-01-16  Sihui Liu  <[email protected]>
+
+            IndexedDB: leak WebIDBConnectionToClient for retain cycle
+            https://bugs.webkit.org/show_bug.cgi?id=193097
+            <rdar://problem/46899601>
+
+            Reviewed by David Kilzer.
+
+            Fix API test failure after r239887. After removing the retain cycle, IDBConnectionToClient will no longer live
+            forever so make sure it is not destructed before UniqueIDBDatabaseConnection unregisters itself.
+
+            * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection):
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection):
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::fireVersionChangeEvent):
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::didAbortTransaction):
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCommitTransaction):
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCreateObjectStore):
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::didDeleteObjectStore):
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::didRenameObjectStore):
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::didClearObjectStore):
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCreateIndex):
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::didDeleteIndex):
+            (WebCore::IDBServer::UniqueIDBDatabaseConnection::didRenameIndex):
+            * Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
+
+2019-01-16  Alan Coon  <[email protected]>
+
+        Apply patch. rdar://problem/47260377
+
     Cherry-pick r239887. rdar://problem/47260377
     
         IndexedDB: leak WebIDBConnectionToClient for retain cycle

Modified: branches/safari-607-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp (240085 => 240086)


--- branches/safari-607-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp	2019-01-16 23:28:46 UTC (rev 240085)
+++ branches/safari-607-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp	2019-01-16 23:28:49 UTC (rev 240086)
@@ -49,7 +49,7 @@
     , m_openRequestIdentifier(request.requestData().requestIdentifier())
 {
     m_database->server().registerDatabaseConnection(*this);
-    m_connectionToClient.registerDatabaseConnection(*this);
+    m_connectionToClient->registerDatabaseConnection(*this);
 }
 
 UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection()
@@ -56,7 +56,7 @@
 {
     if (m_database)
         m_database->server().unregisterDatabaseConnection(*this);
-    m_connectionToClient.unregisterDatabaseConnection(*this);
+    m_connectionToClient->unregisterDatabaseConnection(*this);
 }
 
 bool UniqueIDBDatabaseConnection::hasNonFinishedTransactions() const
@@ -127,7 +127,7 @@
 void UniqueIDBDatabaseConnection::fireVersionChangeEvent(const IDBResourceIdentifier& requestIdentifier, uint64_t requestedVersion)
 {
     ASSERT(!m_closePending);
-    m_connectionToClient.fireVersionChangeEvent(*this, requestIdentifier, requestedVersion);
+    m_connectionToClient->fireVersionChangeEvent(*this, requestIdentifier, requestedVersion);
 }
 
 UniqueIDBDatabaseTransaction& UniqueIDBDatabaseConnection::createVersionChangeTransaction(uint64_t newVersion)
@@ -172,7 +172,7 @@
     ASSERT(m_database);
     ASSERT(takenTransaction || m_database->hardClosedForUserDelete());
     if (takenTransaction)
-        m_connectionToClient.didAbortTransaction(transactionIdentifier, error);
+        m_connectionToClient->didAbortTransaction(transactionIdentifier, error);
 }
 
 void UniqueIDBDatabaseConnection::didCommitTransaction(UniqueIDBDatabaseTransaction& transaction, const IDBError& error)
@@ -184,7 +184,7 @@
     ASSERT(m_transactionMap.contains(transactionIdentifier));
     m_transactionMap.remove(transactionIdentifier);
 
-    m_connectionToClient.didCommitTransaction(transactionIdentifier, error);
+    m_connectionToClient->didCommitTransaction(transactionIdentifier, error);
 }
 
 void UniqueIDBDatabaseConnection::didCreateObjectStore(const IDBResultData& resultData)
@@ -191,7 +191,7 @@
 {
     LOG(IndexedDB, "UniqueIDBDatabaseConnection::didCreateObjectStore");
 
-    m_connectionToClient.didCreateObjectStore(resultData);
+    m_connectionToClient->didCreateObjectStore(resultData);
 }
 
 void UniqueIDBDatabaseConnection::didDeleteObjectStore(const IDBResultData& resultData)
@@ -198,7 +198,7 @@
 {
     LOG(IndexedDB, "UniqueIDBDatabaseConnection::didDeleteObjectStore");
 
-    m_connectionToClient.didDeleteObjectStore(resultData);
+    m_connectionToClient->didDeleteObjectStore(resultData);
 }
 
 void UniqueIDBDatabaseConnection::didRenameObjectStore(const IDBResultData& resultData)
@@ -205,7 +205,7 @@
 {
     LOG(IndexedDB, "UniqueIDBDatabaseConnection::didRenameObjectStore");
 
-    m_connectionToClient.didRenameObjectStore(resultData);
+    m_connectionToClient->didRenameObjectStore(resultData);
 }
 
 void UniqueIDBDatabaseConnection::didClearObjectStore(const IDBResultData& resultData)
@@ -212,7 +212,7 @@
 {
     LOG(IndexedDB, "UniqueIDBDatabaseConnection::didClearObjectStore");
 
-    m_connectionToClient.didClearObjectStore(resultData);
+    m_connectionToClient->didClearObjectStore(resultData);
 }
 
 void UniqueIDBDatabaseConnection::didCreateIndex(const IDBResultData& resultData)
@@ -219,7 +219,7 @@
 {
     LOG(IndexedDB, "UniqueIDBDatabaseConnection::didCreateIndex");
 
-    m_connectionToClient.didCreateIndex(resultData);
+    m_connectionToClient->didCreateIndex(resultData);
 }
 
 void UniqueIDBDatabaseConnection::didDeleteIndex(const IDBResultData& resultData)
@@ -226,7 +226,7 @@
 {
     LOG(IndexedDB, "UniqueIDBDatabaseConnection::didDeleteIndex");
 
-    m_connectionToClient.didDeleteIndex(resultData);
+    m_connectionToClient->didDeleteIndex(resultData);
 }
 
 void UniqueIDBDatabaseConnection::didRenameIndex(const IDBResultData& resultData)
@@ -233,7 +233,7 @@
 {
     LOG(IndexedDB, "UniqueIDBDatabaseConnection::didRenameIndex");
 
-    m_connectionToClient.didRenameIndex(resultData);
+    m_connectionToClient->didRenameIndex(resultData);
 }
 
 bool UniqueIDBDatabaseConnection::connectionIsClosing() const

Modified: branches/safari-607-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.h (240085 => 240086)


--- branches/safari-607-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.h	2019-01-16 23:28:46 UTC (rev 240085)
+++ branches/safari-607-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.h	2019-01-16 23:28:49 UTC (rev 240086)
@@ -90,7 +90,7 @@
     UniqueIDBDatabaseConnection(UniqueIDBDatabase&, ServerOpenDBRequest&);
 
     WeakPtr<UniqueIDBDatabase> m_database;
-    IDBConnectionToClient& m_connectionToClient;
+    Ref<IDBConnectionToClient> m_connectionToClient;
     IDBResourceIdentifier m_openRequestIdentifier;
 
     bool m_closePending { false };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to