haikuwebkit/Source/WebCore/Modules/indexeddb/server
Sihui Liu 73adacdf77 Implement IDBTransaction.durability
https://bugs.webkit.org/show_bug.cgi?id=228289

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

* web-platform-tests/IndexedDB/idlharness.any-expected.txt:
* web-platform-tests/IndexedDB/idlharness.any.worker-expected.txt:
* web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any-expected.txt:
* web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any.worker-expected.txt:

Source/WebCore:

Spec: https://www.w3.org/TR/IndexedDB/#dom-idbtransaction-durability
      https://www.w3.org/TR/IndexedDB/#dictdef-idbtransactionoptions

IDBTransaction.durability gives a hint about durability of a transaction. If it's strict, backend would try
syncing data to database file after transaction commit, which enforces durability. If it's relaxed, it means
data may stay in the OS buffer some time after transaction commit, which gives better performance. Firefox and
Chrome already implemented durability. They have different ways of setting durability, and we choose to use
TransactionOptions as spec.

Rebaselined existing tests.
New tests: storage/indexeddb/idbtransaction-durability-private.html
           storage/indexeddb/idbtransaction-durability.html

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Headers.cmake:
* Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::transaction):
* Modules/indexeddb/IDBDatabase.h:
* Modules/indexeddb/IDBDatabase.idl:
* Modules/indexeddb/IDBTransaction.h:
* Modules/indexeddb/IDBTransaction.idl:
* Modules/indexeddb/IDBTransactionDurability.h: Added.
* Modules/indexeddb/IDBTransactionDurability.idl: Added.
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::commitTransaction):
* Modules/indexeddb/server/SQLiteIDBTransaction.h:
(WebCore::IDBServer::SQLiteIDBTransaction::durability const):
* Modules/indexeddb/shared/IDBTransactionInfo.cpp:
(WebCore::IDBTransactionInfo::clientTransaction):
(WebCore::IDBTransactionInfo::IDBTransactionInfo):
(WebCore::IDBTransactionInfo::isolatedCopy):
* Modules/indexeddb/shared/IDBTransactionInfo.h:
(WebCore::IDBTransactionInfo::durability const):
(WebCore::IDBTransactionInfo::encode const):
(WebCore::IDBTransactionInfo::decode):
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/sql/SQLiteDatabase.cpp:
(WebCore::checkpointModeValue):
(WebCore::SQLiteDatabase::checkpoint):
(WebCore::SQLiteDatabase::useWALJournalMode):
* platform/sql/SQLiteDatabase.h:

LayoutTests:

* storage/indexeddb/idbtransaction-durability-expected.txt: Added.
* storage/indexeddb/idbtransaction-durability-private-expected.txt: Added.
* storage/indexeddb/idbtransaction-durability-private.html: Added.
* storage/indexeddb/idbtransaction-durability.html: Added.
* storage/indexeddb/resources/idbtransaction-durability.js: Added.
(onOpenUpgradeNeeded):
(onOpenSuccess):
(onTransactionComplete):


Canonical link: https://commits.webkit.org/240055@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@280415 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-07-29 04:04:18 +00:00
..
IDBBackingStore.h IDBFactory.databases should not return databases with invalid version 2021-07-28 23:35:42 +00:00
IDBConnectionToClient.cpp
IDBConnectionToClient.h
IDBConnectionToClientDelegate.h
IDBSerialization.cpp Use Vector<uint8_t> instead of Vector<char> to store bytes in SharedBuffer 2021-06-05 01:16:43 +00:00
IDBSerialization.h Remove WTF::Optional synonym for std::optional, using that class template directly instead 2021-05-30 16:11:40 +00:00
IDBServer.cpp IDBFactory.databases should not return databases with invalid version 2021-07-28 23:35:42 +00:00
IDBServer.h Implement IDBTransaction.commit() 2021-07-19 23:09:48 +00:00
IndexValueEntry.cpp
IndexValueEntry.h
IndexValueStore.cpp Remove StringBuilder::appendNumber 2021-05-13 16:18:32 +00:00
IndexValueStore.h
MemoryBackingStoreTransaction.cpp
MemoryBackingStoreTransaction.h
MemoryCursor.cpp Add lock for static cursorMap in MemoryCursor 2021-06-16 19:12:06 +00:00
MemoryCursor.h
MemoryIDBBackingStore.cpp MemoryIDBBackingStore cleanup. 2021-07-15 20:12:14 +00:00
MemoryIDBBackingStore.h IDBFactory.databases should not return databases with invalid version 2021-07-28 23:35:42 +00:00
MemoryIndex.cpp Remove WTF::Optional synonym for std::optional, using that class template directly instead 2021-05-30 16:11:40 +00:00
MemoryIndex.h Remove WTF::Optional synonym for std::optional, using that class template directly instead 2021-05-30 16:11:40 +00:00
MemoryIndexCursor.cpp
MemoryIndexCursor.h
MemoryObjectStore.cpp Introduce a shared IDB serialization thread 2021-06-03 04:57:45 +00:00
MemoryObjectStore.h Introduce a shared IDB serialization thread 2021-06-03 04:57:45 +00:00
MemoryObjectStoreCursor.cpp Next step toward using std::optional directly instead of through WTF::Optional typedef 2021-05-28 01:26:23 +00:00
MemoryObjectStoreCursor.h Remove <wtf/Optional.h> 2021-06-02 06:45:51 +00:00
SQLiteIDBBackingStore.cpp Implement IDBTransaction.durability 2021-07-29 04:04:18 +00:00
SQLiteIDBBackingStore.h IDBFactory.databases should not return databases with invalid version 2021-07-28 23:35:42 +00:00
SQLiteIDBCursor.cpp Adopt WTF::Span in SQLiteStatement 2021-06-09 05:03:32 +00:00
SQLiteIDBCursor.h Remove WTF::Optional synonym for std::optional, using that class template directly instead 2021-05-30 16:11:40 +00:00
SQLiteIDBTransaction.cpp
SQLiteIDBTransaction.h Implement IDBTransaction.durability 2021-07-29 04:04:18 +00:00
ServerOpenDBRequest.cpp
ServerOpenDBRequest.h
UniqueIDBDatabase.cpp IDBFactory.databases should not return databases with invalid version 2021-07-28 23:35:42 +00:00
UniqueIDBDatabase.h IDBFactory.databases should not return databases with invalid version 2021-07-28 23:35:42 +00:00
UniqueIDBDatabaseConnection.cpp
UniqueIDBDatabaseConnection.h Use WeakPtr with UniqueIDBDatabaseConnection 2021-07-15 20:40:06 +00:00
UniqueIDBDatabaseTransaction.cpp Implement IDBTransaction.commit() 2021-07-19 23:09:48 +00:00
UniqueIDBDatabaseTransaction.h Implement IDBTransaction.commit() 2021-07-19 23:09:48 +00:00