Changeset 248597 in webkit
- Timestamp:
- Aug 13, 2019 10:08:54 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r248596 r248597 1 2019-08-13 Sihui Liu <sihui_liu@apple.com> 2 3 Make sure UniqueIDBDatabaseConnection unregister itself from IDBServer 4 https://bugs.webkit.org/show_bug.cgi?id=200650 5 <rdar://problem/54236010> 6 7 Reviewed by Youenn Fablet. 8 9 We register UniqueIDBDatabaseConnection unconditionally to IDBServer but fail to unregister if UniqueIDBDatabase 10 of UniqueIDBDatabaseConnection is gone. 11 12 * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp: 13 (WebCore::IDBServer::UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection): 14 (WebCore::IDBServer::UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection): 15 * Modules/indexeddb/server/UniqueIDBDatabaseConnection.h: 16 (WebCore::IDBServer::UniqueIDBDatabaseConnection::server): 17 * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp: 18 (WebCore::IDBServer::UniqueIDBDatabaseTransaction::UniqueIDBDatabaseTransaction): 19 (WebCore::IDBServer::UniqueIDBDatabaseTransaction::~UniqueIDBDatabaseTransaction): 20 * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h: 21 1 22 2019-08-13 Zalan Bujtas <zalan@apple.com> 2 23 -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp
r244027 r248597 46 46 UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection(UniqueIDBDatabase& database, ServerOpenDBRequest& request) 47 47 : m_database(makeWeakPtr(database)) 48 , m_server(makeWeakPtr(m_database->server())) 48 49 , m_connectionToClient(request.connection()) 49 50 , m_openRequestIdentifier(request.requestData().requestIdentifier()) 50 51 { 51 m_ database->server().registerDatabaseConnection(*this);52 m_server->registerDatabaseConnection(*this); 52 53 m_connectionToClient->registerDatabaseConnection(*this); 53 54 } … … 55 56 UniqueIDBDatabaseConnection::~UniqueIDBDatabaseConnection() 56 57 { 57 if (m_ database)58 m_ database->server().unregisterDatabaseConnection(*this);58 if (m_server) 59 m_server->unregisterDatabaseConnection(*this); 59 60 m_connectionToClient->unregisterDatabaseConnection(*this); 60 61 } -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.h
r246596 r248597 55 55 const IDBResourceIdentifier& openRequestIdentifier() { return m_openRequestIdentifier; } 56 56 UniqueIDBDatabase* database() { return m_database.get(); } 57 IDBServer* server() { return m_server.get(); } 57 58 IDBConnectionToClient& connectionToClient() { return m_connectionToClient; } 58 59 … … 91 92 92 93 WeakPtr<UniqueIDBDatabase> m_database; 94 WeakPtr<IDBServer> m_server; 93 95 Ref<IDBConnectionToClient> m_connectionToClient; 94 96 IDBResourceIdentifier m_openRequestIdentifier; -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp
r244027 r248597 54 54 m_originalDatabaseInfo = std::make_unique<IDBDatabaseInfo>(database->info()); 55 55 56 auto& server = database->server(); 57 m_server = makeWeakPtr(server); 58 server.registerTransaction(*this); 56 if (auto* server = m_databaseConnection->server()) 57 server->registerTransaction(*this); 59 58 } 60 59 … … 64 63 database->transactionDestroyed(*this); 65 64 66 if ( m_server)67 m_server->unregisterTransaction(*this);65 if (auto* server = m_databaseConnection->server()) 66 server->unregisterTransaction(*this); 68 67 } 69 68 -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h
r246596 r248597 102 102 Ref<UniqueIDBDatabaseConnection> m_databaseConnection; 103 103 IDBTransactionInfo m_transactionInfo; 104 WeakPtr<IDBServer> m_server;105 104 106 105 std::unique_ptr<IDBDatabaseInfo> m_originalDatabaseInfo;
Note: See TracChangeset
for help on using the changeset viewer.