Changeset 194904 in webkit
- Timestamp:
- Jan 12, 2016, 11:17:45 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r194898 r194904 1 2016-01-12 Brady Eidson <beidson@apple.com> 2 3 Modern IDB: storage/indexeddb/dont-wedge.html is flaky. 4 https://bugs.webkit.org/show_bug.cgi?id=152892 5 6 Reviewed by Alex Christensen. 7 8 * platform/mac-wk1/TestExpectations: 9 1 10 2016-01-12 Antti Koivisto <antti@apple.com> 2 11 -
trunk/LayoutTests/platform/mac-wk1/TestExpectations
r194874 r194904 93 93 storage/indexeddb/delete-closed-database-object.html [ Skip ] 94 94 storage/indexeddb/request-leak.html [ Failure ] 95 96 # Flaky timeout on the bots97 webkit.org/b/152892 storage/indexeddb/dont-wedge.html [ Pass Timeout ]98 95 99 96 # No workers support in Modern IDB yet -
trunk/Source/WebCore/ChangeLog
r194900 r194904 1 2016-01-12 Brady Eidson <beidson@apple.com> 2 3 Modern IDB: storage/indexeddb/dont-wedge.html is flaky. 4 https://bugs.webkit.org/show_bug.cgi?id=152892 5 6 Reviewed by Alex Christensen. 7 8 No new tests (Reenabled existing test). 9 10 * Modules/indexeddb/client/IDBConnectionToServer.cpp: 11 (WebCore::IDBClient::IDBConnectionToServer::abortOpenAndUpgradeNeeded): 12 * Modules/indexeddb/client/IDBConnectionToServer.h: 13 * Modules/indexeddb/client/IDBConnectionToServerDelegate.h: 14 15 * Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp: 16 (WebCore::IDBClient::IDBOpenDBRequest::requestCompleted): If the database was opened 17 or an upgrade transaction was started, but the script execution context is already 18 stopped, immediately message back to the server so it doesn't wedge. 19 20 * Modules/indexeddb/server/IDBServer.cpp: 21 (WebCore::IDBServer::IDBServer::abortOpenAndUpgradeNeeded): 22 * Modules/indexeddb/server/IDBServer.h: 23 24 * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp: 25 (WebCore::IDBServer::UniqueIDBDatabaseTransaction::abortWithoutCallback): 26 * Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h: 27 28 * Modules/indexeddb/shared/InProcessIDBServer.cpp: 29 (WebCore::InProcessIDBServer::abortOpenAndUpgradeNeeded): 30 * Modules/indexeddb/shared/InProcessIDBServer.h: 31 1 32 2016-01-12 Commit Queue <commit-queue@webkit.org> 2 33 -
trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp
r194452 r194904 363 363 } 364 364 365 void IDBConnectionToServer::abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier) 366 { 367 LOG(IndexedDB, "IDBConnectionToServer::abortOpenAndUpgradeNeeded"); 368 369 m_delegate->abortOpenAndUpgradeNeeded(databaseConnectionIdentifier, transactionIdentifier); 370 } 371 365 372 void IDBConnectionToServer::registerDatabaseConnection(IDBDatabase& database) 366 373 { -
trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.h
r194452 r194904 113 113 114 114 void databaseConnectionClosed(IDBDatabase&); 115 116 // To be used when an IDBOpenDBRequest gets a new database connection, optionally with a 117 // versionchange transaction, but the page is already torn down. 118 void abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier); 119 115 120 void registerDatabaseConnection(IDBDatabase&); 116 121 void unregisterDatabaseConnection(IDBDatabase&); -
trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServerDelegate.h
r194452 r194904 75 75 virtual void establishTransaction(uint64_t databaseConnectionIdentifier, const IDBTransactionInfo&) = 0; 76 76 virtual void databaseConnectionClosed(uint64_t databaseConnectionIdentifier) = 0; 77 virtual void abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier) = 0; 77 78 virtual void didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier) = 0; 78 79 -
trunk/Source/WebCore/Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp
r194754 r194904 166 166 LOG(IndexedDB, "IDBOpenDBRequest::requestCompleted"); 167 167 168 if (m_contextStopped) 168 // If an Open request was completed after the page has navigated, leaving this request 169 // with a stopped script execution context, we need to message back to the server so it 170 // doesn't hang waiting on a database connection or transaction that will never exist. 171 if (m_contextStopped) { 172 switch (data.type()) { 173 case IDBResultType::OpenDatabaseSuccess: 174 connection().abortOpenAndUpgradeNeeded(data.databaseConnectionIdentifier(), IDBResourceIdentifier::emptyValue()); 175 break; 176 case IDBResultType::OpenDatabaseUpgradeNeeded: 177 connection().abortOpenAndUpgradeNeeded(data.databaseConnectionIdentifier(), data.transactionInfo().identifier()); 178 break; 179 default: 180 break; 181 } 182 169 183 return; 184 } 170 185 171 186 switch (data.type()) { -
trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.cpp
r194496 r194904 340 340 } 341 341 342 void IDBServer::abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier) 343 { 344 LOG(IndexedDB, "IDBServer::abortOpenAndUpgradeNeeded"); 345 346 auto transaction = m_transactions.get(transactionIdentifier); 347 if (transaction) 348 transaction->abortWithoutCallback(); 349 350 auto databaseConnection = m_databaseConnections.get(databaseConnectionIdentifier); 351 if (!databaseConnection) 352 return; 353 354 databaseConnection->connectionClosedFromClient(); 355 } 356 342 357 void IDBServer::didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier) 343 358 { -
trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.h
r194452 r194904 76 76 void establishTransaction(uint64_t databaseConnectionIdentifier, const IDBTransactionInfo&); 77 77 void databaseConnectionClosed(uint64_t databaseConnectionIdentifier); 78 void abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier); 78 79 void didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier); 79 80 -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp
r194414 r194904 76 76 } 77 77 78 void UniqueIDBDatabaseTransaction::abortWithoutCallback() 79 { 80 LOG(IndexedDB, "UniqueIDBDatabaseTransaction::abortWithoutCallback"); 81 82 m_databaseConnection->database().abortTransaction(*this, [](const IDBError&) { }); 83 } 84 78 85 bool UniqueIDBDatabaseTransaction::isVersionChange() const 79 86 { -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h
r194414 r194904 65 65 66 66 void abort(); 67 void abortWithoutCallback(); 67 68 void commit(); 68 69 -
trunk/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp
r194452 r194904 370 370 } 371 371 372 void InProcessIDBServer::abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier) 373 { 374 RefPtr<InProcessIDBServer> self(this); 375 RunLoop::current().dispatch([this, self, databaseConnectionIdentifier, transactionIdentifier] { 376 m_server->abortOpenAndUpgradeNeeded(databaseConnectionIdentifier, transactionIdentifier); 377 }); 378 } 379 372 380 void InProcessIDBServer::didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier) 373 381 { -
trunk/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.h
r194452 r194904 73 73 virtual void establishTransaction(uint64_t databaseConnectionIdentifier, const IDBTransactionInfo&) override final; 74 74 virtual void databaseConnectionClosed(uint64_t databaseConnectionIdentifier) override final; 75 virtual void abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier) override final; 75 76 virtual void didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier) override final; 76 77
Note:
See TracChangeset
for help on using the changeset viewer.