Changeset 194781 in webkit
- Timestamp:
- Jan 8, 2016 1:12:08 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 18 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r194779 r194781 1 2016-01-08 Brady Eidson <beidson@apple.com> 2 3 Modern IDB: Blocked event can fire on a delete request even after the last open connection has closed. 4 https://bugs.webkit.org/show_bug.cgi?id=152896 5 6 Reviewed by Alex Christensen. 7 8 * platform/mac-wk1/TestExpectations: 9 10 * platform/wk2/imported/w3c/indexeddb/idbfactory_open12-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open12-expected.txt. 11 * platform/wk2/imported/w3c/indexeddb/idbversionchangeevent-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-expected.txt. 12 13 * storage/indexeddb/database-wrapper-expected.txt: 14 * storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt: 15 * storage/indexeddb/deletedatabase-not-blocked-expected.txt: 16 * storage/indexeddb/intversion-upgrades-expected.txt: 17 * storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js: 18 * storage/indexeddb/resources/deletedatabase-not-blocked.js: 19 * storage/indexeddb/resources/setversion-not-blocked.js: 20 * storage/indexeddb/setversion-not-blocked-expected.txt: 21 1 22 2016-01-08 Michael Catanzaro <mcatanzaro@igalia.com> 2 23 -
trunk/LayoutTests/imported/w3c/ChangeLog
r194771 r194781 1 2016-01-08 Brady Eidson <beidson@apple.com> 2 3 Modern IDB: Blocked event can fire on a delete request even after the last open connection has closed. 4 https://bugs.webkit.org/show_bug.cgi?id=152896 5 6 Reviewed by Alex Christensen. 7 8 * indexeddb/idbfactory_open12-expected.txt: 9 * indexeddb/idbversionchangeevent-expected.txt: 10 * indexeddb/transaction-lifetime-expected.txt: 11 1 12 2016-01-08 Brady Eidson <beidson@apple.com> 2 13 -
trunk/LayoutTests/imported/w3c/indexeddb/idbfactory_open12-expected.txt
r189264 r194781 1 1 2 2 PASS IDBFactory.open() - upgradeneeded gets VersionChangeEvent 3 FAIL IDBFactory.open() - upgradeneeded gets VersionChangeEvent - second upgrade assert_unreached: unexpected open.blocked event Reached unreachable code 3 PASS IDBFactory.open() - upgradeneeded gets VersionChangeEvent - second upgrade 4 4 -
trunk/LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-expected.txt
r189264 r194781 1 1 2 FAIL IDBVersionChangeEvent fired in upgradeneeded, versionchange and deleteDatabase assert_equals: new version (versionchange) expected (object) null but got (number) 0 2 PASS IDBVersionChangeEvent fired in upgradeneeded, versionchange and deleteDatabase 3 3 -
trunk/LayoutTests/imported/w3c/indexeddb/transaction-lifetime-expected.txt
r189264 r194781 1 1 2 FAIL Test events opening a second database when one connection is open already assert_unreached: open2.blocked Reached unreachable code 2 PASS Test events opening a second database when one connection is open already 3 3 -
trunk/LayoutTests/platform/mac-wk1/TestExpectations
r194771 r194781 75 75 76 76 # W3C IDB tests - Legacy IDB fails, Modern IDB fails differently 77 imported/w3c/indexeddb/idbversionchangeevent.htm [ Failure ]78 77 imported/w3c/indexeddb/keypath.htm [ Failure ] 79 78 -
trunk/LayoutTests/storage/indexeddb/database-wrapper-expected.txt
r163963 r194781 28 28 sawVersionChangeEvent = true 29 29 30 onBlocked():31 FIXME: Blocked event shouldn't fire. http://crbug.com/10012332 33 30 openAgainSuccess(): 34 31 PASS sawVersionChangeEvent is true -
trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt
r163963 r194781 28 28 db.close() 29 29 30 deleteBlockedCallback():31 PASS sawVersionChange is true32 sawDeleteBlocked = true33 34 30 deleteSuccessCallback(): 35 31 PASS sawVersionChange is true 36 FIXME: Blocked events shouldn't fire if connections close in versionchange handler. http://crbug.com/100123 37 FAIL sawDeleteBlocked should be false. Was true. 32 PASS sawDeleteBlocked is false 38 33 PASS sawUpgradeNeeded is true 39 34 PASS successfullyParsed is true -
trunk/LayoutTests/storage/indexeddb/deletedatabase-not-blocked-expected.txt
r141013 r194781 20 20 h.close() 21 21 22 deleteDatabaseOnBlocked():23 blockedEventFired = true24 25 22 deleteDatabaseOnSuccess(): 26 FIXME: blocked event should not fire since connection closed. http://webkit.org/b/71130 27 FAIL blockedEventFired should be false. Was true. 23 PASS blockedEventFired is false 28 24 PASS successfullyParsed is true 29 25 -
trunk/LayoutTests/storage/indexeddb/intversion-upgrades-expected.txt
r193980 r194781 23 23 connection1VersionChangeCallback(): 24 24 connection1.close() 25 26 connection2BlockedCallback():27 This should not be called: http://crbug.com/10012328 25 29 26 connection2UpgradeNeeded(): -
trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js
r163963 r194781 64 64 preamble(evt); 65 65 shouldBeTrue("sawVersionChange"); 66 debug("FIXME: Blocked events shouldn't fire if connections close in versionchange handler. http://crbug.com/100123");67 66 shouldBeFalse("sawDeleteBlocked"); 68 67 shouldBeTrue("sawUpgradeNeeded"); -
trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-not-blocked.js
r163963 r194781 35 35 request.onsuccess = function deleteDatabaseOnSuccess(evt) { 36 36 preamble(evt); 37 debug("FIXME: blocked event should not fire since connection closed. http://webkit.org/b/71130");38 37 shouldBeFalse("blockedEventFired"); 39 38 finishJSTest(); -
trunk/LayoutTests/storage/indexeddb/resources/setversion-not-blocked.js
r163963 r194781 43 43 preamble(evt); 44 44 shouldBeTrue("versionchangeEventFired"); 45 debug("FIXME: blocked should not have fired since connection closed; http://webkit.org/b/71130");46 45 shouldBeFalse("blockedEventFired"); 47 46 finishJSTest(); -
trunk/LayoutTests/storage/indexeddb/setversion-not-blocked-expected.txt
r135223 r194781 23 23 h1.close() 24 24 25 h2OpenBlocked():26 PASS event.oldVersion is 127 PASS event.newVersion is 228 blockedEventFired = true29 30 25 h2UpgradeNeeded(): 31 26 PASS event.oldVersion is 1 … … 34 29 h2OpenSuccess(): 35 30 PASS versionchangeEventFired is true 36 FIXME: blocked should not have fired since connection closed; http://webkit.org/b/71130 37 FAIL blockedEventFired should be false. Was true. 31 PASS blockedEventFired is false 38 32 PASS successfullyParsed is true 39 33 -
trunk/Source/WebCore/ChangeLog
r194775 r194781 1 2016-01-08 Brady Eidson <beidson@apple.com> 2 3 Modern IDB: Blocked event can fire on a delete request even after the last open connection has closed. 4 https://bugs.webkit.org/show_bug.cgi?id=152896 5 6 Reviewed by Alex Christensen. 7 8 No new tests (Progression in many tests). 9 10 * Modules/indexeddb/client/IDBFactoryImpl.cpp: 11 (WebCore::IDBClient::IDBFactory::deleteDatabase): 12 13 * Modules/indexeddb/server/UniqueIDBDatabase.cpp: 14 (WebCore::IDBServer::UniqueIDBDatabase::performCurrentDeleteOperation): Allow for handling 2+ delete operations in a row. 15 (WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore): Ditto. 16 (WebCore::IDBServer::UniqueIDBDatabase::connectionClosedFromClient): Call "notifyCurrentRequestConnectionClosedOrFiredVersionChangeEvent" 17 after the connection is actually removed from the set of open connections. 18 * Modules/indexeddb/server/UniqueIDBDatabase.h: 19 1 20 2016-01-08 Zalan Bujtas <zalan@apple.com> 2 21 -
trunk/Source/WebCore/Modules/indexeddb/client/IDBFactoryImpl.cpp
r193428 r194781 125 125 RefPtr<WebCore::IDBOpenDBRequest> IDBFactory::deleteDatabase(ScriptExecutionContext* context, const String& name, ExceptionCode& ec) 126 126 { 127 LOG(IndexedDB, "IDBFactory::deleteDatabase ");127 LOG(IndexedDB, "IDBFactory::deleteDatabase - %s", name.utf8().data()); 128 128 129 129 if (name.isNull()) { -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp
r194671 r194781 165 165 { 166 166 ASSERT(isMainThread()); 167 LOG(IndexedDB, "(main) UniqueIDBDatabase::performCurrentDeleteOperation"); 168 169 ASSERT(m_databaseInfo); 167 LOG(IndexedDB, "(main) UniqueIDBDatabase::performCurrentDeleteOperation - %s", m_identifier.debugString().utf8().data()); 168 170 169 ASSERT(m_currentOpenDBRequest); 171 170 ASSERT(m_currentOpenDBRequest->isDeleteRequest()); … … 190 189 ASSERT(m_openDatabaseConnections.isEmpty()); 191 190 192 m_deleteBackingStoreInProgress = true; 193 m_server.postDatabaseTask(createCrossThreadTask(*this, &UniqueIDBDatabase::deleteBackingStore)); 191 // It's possible to have multiple delete requests queued up in a row. 192 // In that scenario only the first request will actually have to delete the database. 193 // Subsequent requests can immediately notify their completion. 194 195 if (m_databaseInfo) { 196 m_deleteBackingStoreInProgress = true; 197 m_server.postDatabaseTask(createCrossThreadTask(*this, &UniqueIDBDatabase::deleteBackingStore)); 198 } else { 199 ASSERT(m_mostRecentDeletedDatabaseInfo); 200 didDeleteBackingStore(); 201 } 194 202 } 195 203 … … 212 220 LOG(IndexedDB, "(main) UniqueIDBDatabase::didDeleteBackingStore"); 213 221 214 ASSERT(m_databaseInfo);215 222 ASSERT(m_currentOpenDBRequest); 216 223 ASSERT(m_currentOpenDBRequest->isDeleteRequest()); … … 220 227 ASSERT(m_openDatabaseConnections.isEmpty()); 221 228 222 m_currentOpenDBRequest->notifyDidDeleteDatabase(*m_databaseInfo); 229 if (m_databaseInfo) 230 m_mostRecentDeletedDatabaseInfo = WTFMove(m_databaseInfo); 231 232 ASSERT(m_mostRecentDeletedDatabaseInfo); 233 m_currentOpenDBRequest->notifyDidDeleteDatabase(*m_mostRecentDeletedDatabaseInfo); 223 234 m_currentOpenDBRequest = nullptr; 224 m_databaseInfo = nullptr; 235 225 236 m_deletePending = false; 226 237 m_deleteBackingStoreInProgress = false; … … 1008 1019 ASSERT(m_openDatabaseConnections.contains(&connection)); 1009 1020 1010 if (m_currentOpenDBRequest)1011 notifyCurrentRequestConnectionClosedOrFiredVersionChangeEvent(connection.identifier());1012 1013 1021 Deque<RefPtr<UniqueIDBDatabaseTransaction>> pendingTransactions; 1014 1022 while (!m_pendingTransactions.isEmpty()) { … … 1023 1031 RefPtr<UniqueIDBDatabaseConnection> refConnection(&connection); 1024 1032 m_openDatabaseConnections.remove(&connection); 1033 1034 if (m_currentOpenDBRequest) 1035 notifyCurrentRequestConnectionClosedOrFiredVersionChangeEvent(connection.identifier()); 1036 1025 1037 if (connection.hasNonFinishedTransactions()) { 1026 1038 m_closePendingDatabaseConnections.add(WTFMove(refConnection)); -
trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h
r194670 r194781 194 194 std::unique_ptr<IDBBackingStore> m_backingStore; 195 195 std::unique_ptr<IDBDatabaseInfo> m_databaseInfo; 196 std::unique_ptr<IDBDatabaseInfo> m_mostRecentDeletedDatabaseInfo; 196 197 197 198 HashMap<uint64_t, ErrorCallback> m_errorCallbacks;
Note: See TracChangeset
for help on using the changeset viewer.