Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0aa9402244d02204000756d26981253ddb6a9578
      
https://github.com/WebKit/WebKit/commit/0aa9402244d02204000756d26981253ddb6a9578
  Author: Sihui Liu <[email protected]>
  Date:   2024-08-06 (Tue, 06 Aug 2024)

  Changed paths:
    M LayoutTests/TestExpectations
    M 
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-explicit-commit.any-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-explicit-commit.any.js
    M 
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-explicit-commit.any.worker-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/structured-clone.any.worker_101-last-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/structured-clone.any_101-last-expected.txt
    M LayoutTests/inspector/indexeddb/clearObjectStore.html
    M LayoutTests/inspector/indexeddb/requestData.html
    M LayoutTests/platform/mac/TestExpectations
    M Source/WebCore/Modules/indexeddb/IDBRequest.h
    M Source/WebCore/Modules/indexeddb/IDBTransaction.cpp
    M Source/WebCore/Modules/indexeddb/server/IDBBackingStore.h
    M Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h
    M Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp
    M Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.h
    M Source/WebCore/Modules/indexeddb/server/SQLiteIDBCursor.cpp
    M Source/WebCore/Modules/indexeddb/server/SQLiteIDBTransaction.cpp
    M Source/WebCore/Modules/indexeddb/server/SQLiteIDBTransaction.h
    M Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp

  Log Message:
  -----------
  imported/w3c/web-platform-tests/IndexedDB/idb-explicit-commit.any.html is 
failing
https://bugs.webkit.org/show_bug.cgi?id=277659
rdar://133254563

Reviewed by Chris Dumez.

To fix test failure, this patch makes following changes:
1. Add support for simultaneous transactions in SQLiteIDBBackingStore, by only 
creating a SQLite transaction when the
mode of IDBTransaction is readwrite. With this change, the backend can support 
simultaneous readonly transactions per
spec. Also, update existing checks in operations that expect SQLite transaction 
to exists, to expect either SQLite
transaction exists or the transaction is read-only.
2. When IDBTransaction.commit() is invoked during event dispatch for a request, 
consider the request as handled by
incrementing handledRequestResultsCount. Otherwise, the IndexedDB backend will 
take the request as not handled by
client, and if the event is error, the backend would abort the transaction 
instead of committing it. According to spec,
if error event is handled, the transaction can commit; if error event is not 
handled, the transaction should abort.

This patch also updates some tests that start simultaneous read-only 
transactions and expect the transactions to happen
in order to start transaction in order (i.e. starting a new transaction when 
the previous one has finished), to make
the result deterministic.

* LayoutTests/TestExpectations:
* 
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-explicit-commit.any-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-explicit-commit.any.js:
* 
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-explicit-commit.any.worker-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/structured-clone.any.worker_101-last-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/structured-clone.any_101-last-expected.txt:
* LayoutTests/inspector/indexeddb/clearObjectStore.html:
* LayoutTests/inspector/indexeddb/requestData.html:
* LayoutTests/platform/mac/TestExpectations:
* Source/WebCore/Modules/indexeddb/IDBRequest.h:
(WebCore::IDBRequest::isEventBeingDispatched const):
* Source/WebCore/Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::commitInternal):
* Source/WebCore/Modules/indexeddb/server/IDBBackingStore.h:
* Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h:
* Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::createObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::getRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getAllObjectStoreRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::getAllIndexRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getCount):
(WebCore::IDBServer::SQLiteIDBBackingStore::openCursor):
(WebCore::IDBServer::SQLiteIDBBackingStore::iterateCursor):
* Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.h:
* Source/WebCore/Modules/indexeddb/server/SQLiteIDBCursor.cpp:
(WebCore::IDBServer::SQLiteIDBCursor::createSQLiteStatement):
(WebCore::IDBServer::SQLiteIDBCursor::resetAndRebindStatement):
(WebCore::IDBServer::SQLiteIDBCursor::resetAndRebindPreIndexStatementIfNecessary):
(WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):
(WebCore::IDBServer::SQLiteIDBCursor::iterate):
* Source/WebCore/Modules/indexeddb/server/SQLiteIDBTransaction.cpp:
(WebCore::IDBServer::SQLiteIDBTransaction::begin):
(WebCore::IDBServer::SQLiteIDBTransaction::commit):
(WebCore::IDBServer::SQLiteIDBTransaction::moveBlobFilesIfNecessary):
(WebCore::IDBServer::SQLiteIDBTransaction::deleteBlobFilesIfNecessary):
(WebCore::IDBServer::SQLiteIDBTransaction::abort):
(WebCore::IDBServer::SQLiteIDBTransaction::maybeOpenBackingStoreCursor):
(WebCore::IDBServer::SQLiteIDBTransaction::maybeOpenCursor):
(WebCore::IDBServer::SQLiteIDBTransaction::notifyCursorsOfChanges):
(WebCore::IDBServer::SQLiteIDBTransaction::inProgressOrReadOnly const):
(WebCore::IDBServer::SQLiteIDBTransaction::addBlobFile):
(WebCore::IDBServer::SQLiteIDBTransaction::addRemovedBlobFile):
(WebCore::IDBServer::SQLiteIDBTransaction::sqliteDatabase const):
* Source/WebCore/Modules/indexeddb/server/SQLiteIDBTransaction.h:
(WebCore::IDBServer::SQLiteIDBTransaction::isReadOnly const):
* Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::takeNextRunnableTransaction):

Canonical link: https://commits.webkit.org/281933@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to