[webkit-changes] [WebKit/WebKit] eec0bd: Add a SQLite Interface for Web Extension storage

kiaraarose noreply at github.com
Tue Dec 5 14:33:34 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: eec0bdebc484b8f58438640acf831ad486234388
      https://github.com/WebKit/WebKit/commit/eec0bdebc484b8f58438640acf831ad486234388
  Author: Kiara Rose <kiara_rose at apple.com>
  Date:   2023-12-05 (Tue, 05 Dec 2023)

  Changed paths:
    M Source/WebKit/Configurations/WebKit.xcconfig
    M Source/WebKit/Platform/cocoa/CocoaHelpers.h
    M Source/WebKit/Platform/cocoa/CocoaHelpers.mm
    A Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteDatabase.h
    A Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteDatabase.mm
    A Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteDatatypeTraits.h
    A Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteHelpers.h
    A Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteRow.h
    A Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteRow.mm
    A Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStatement.h
    A Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStatement.mm
    A Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.h
    A Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.mm
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj

  Log Message:
  -----------
  Add a SQLite Interface for Web Extension storage
https://bugs.webkit.org/show_bug.cgi?id=265830

Reviewed by Timothy Hatcher.

This patch implements an Objective-C SQLite interface to be used for managing storage for web extensions.
This interface will be used for APIs such as Storage, Scripting, and Declarative Net Request.
_WKWebExtensionSQLiteStore will contain the generic methods needed for managing this storage,
and subclasses should be made for more requests for those APIs.

Testing:
Tested adding and removing data from storage for local test web extension.

* Source/WebKit/Configurations/WebKit.xcconfig:
Add libsqlite3.dylib to the WebKit framework.

* Source/WebKit/Platform/cocoa/CocoaHelpers.h:
* Source/WebKit/Platform/cocoa/CocoaHelpers.mm:
(WebKit::ensureDirectoryExists):
(WebKit::removeFileAtURL):
(WebKit::removeDirectoryIfEmpty):
(WebKit::separateResourceForkPath):
* Source/WebKit/Shared/Extensions/SQLiteDatatypeTraits.h: Added.
(WebKit::SQLiteDatatypeTraits<int>::fetch):
(WebKit::SQLiteDatatypeTraits<int>::bind):
(WebKit::SQLiteDatatypeTraits<int64_t>::fetch):
(WebKit::SQLiteDatatypeTraits<int64_t>::bind):
(WebKit::SQLiteDatatypeTraits<double>::fetch):
(WebKit::SQLiteDatatypeTraits<double>::bind):
(WebKit::SQLiteDatatypeTraits<NSString::fetch):
(WebKit::SQLiteDatatypeTraits<NSString::bind):
(WebKit::SQLiteDatatypeTraits<NSData::fetch):
(WebKit::SQLiteDatatypeTraits<NSData::bind):
(WebKit::SQLiteDatatypeTraits<NSDate::fetch):
(WebKit::SQLiteDatatypeTraits<NSDate::bind):
(WebKit::SQLiteDatatypeTraits<NSNumber::fetch):
(WebKit::SQLiteDatatypeTraits<NSNumber::bind):
(WebKit::SQLiteDatatypeTraits<NSObject::fetch):
(WebKit::SQLiteDatatypeTraits<NSObject::bind):
(WebKit::SQLiteDatatypeTraits<std::nullptr_t>::fetch):
(WebKit::SQLiteDatatypeTraits<std::nullptr_t>::bind):
(WebKit::SQLiteDatatypeTraits<decltype):
* Source/WebKit/Shared/Extensions/SQLiteHelpers.h: Added.
(WebKit::SQLiteIsExecutionError):
(WebKit::SQLiteStatementBindAllParameters):
(WebKit::SQLiteDatabaseExecute):
(WebKit::SQLiteDatabaseExecuteAndReturnError):
(WebKit::_SQLiteDatabaseExecuteAndReturnError):
(WebKit::SQLiteDatabaseFetch):
(WebKit::_SQLiteStatementBindParameter):
(WebKit::_SQLiteStatementBindAllParameters):
(WebKit::_SQLiteStatementBindTupleParameters):
(WebKit::SQLiteEnumerationBlock::SQLiteEnumerationBlock):
(WebKit::SQLiteEnumerationBlock::_callBlockWithAllColumns):
(WebKit::SQLiteEnumerationBlock::callBlockWithAllColumns):
(WebKit::_StatementCallBlockWithAllColumns):
(WebKit::_WBSStatementFetchColumnsInTuple):
(WebKit::WBSStatementFetchColumnsInTuple):
(WebKit::_SQLiteStatementBindOrStep):
(WebKit::_SQLiteStatementBind):
(WebKit::SQLiteDatabaseEnumerate):
(WebKit::SQLiteDatabaseEnumerateRows):
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteDatabase.h: Added.
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteDatabase.mm: Added.
(-[_WKWebExtensionSQLiteDatabase initWithURL:queue:]):
(-[_WKWebExtensionSQLiteDatabase dealloc]):
(-[_WKWebExtensionSQLiteDatabase close]):
(-[_WKWebExtensionSQLiteDatabase reportErrorWithCode:query:error:]):
(-[_WKWebExtensionSQLiteDatabase reportErrorWithCode:statement:error:]):
(-[_WKWebExtensionSQLiteDatabase enableWAL:]):
(-[_WKWebExtensionSQLiteDatabase openWithAccessType:error:]):
(-[_WKWebExtensionSQLiteDatabase openWithAccessType:vfs:error:]):
(-[_WKWebExtensionSQLiteDatabase openWithAccessType:protectionType:vfs:error:]):
(-[_WKWebExtensionSQLiteDatabase _openWithFlags:vfs:error:]):
(+[_WKWebExtensionSQLiteDatabase inMemoryDatabaseURL]):
(+[_WKWebExtensionSQLiteDatabase privateOnDiskDatabaseURL]):
(+[_WKWebExtensionSQLiteDatabase _errorWithSQLiteErrorCode:userInfo:]):
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteRow.h: Added.
(-[_WKWebExtensionSQLiteRow uncopiedDataAtIndex:]):
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteRow.mm: Added.
(-[_WKWebExtensionSQLiteRow init]):
(-[_WKWebExtensionSQLiteRow initWithStatement:]):
(-[_WKWebExtensionSQLiteRow initWithCurrentRowOfEnumerator:]):
(-[_WKWebExtensionSQLiteRow stringAtIndex:]):
(-[_WKWebExtensionSQLiteRow intAtIndex:]):
(-[_WKWebExtensionSQLiteRow int64AtIndex:]):
(-[_WKWebExtensionSQLiteRow doubleAtIndex:]):
(-[_WKWebExtensionSQLiteRow boolAtIndex:]):
(-[_WKWebExtensionSQLiteRow dataAtIndex:]):
(-[_WKWebExtensionSQLiteRow uncopiedDataAtIndex:]):
(-[_WKWebExtensionSQLiteRow uncopiedRawDataAtIndex:]):
(-[_WKWebExtensionSQLiteRow _isNullAtIndex:]):
(-[_WKWebExtensionSQLiteRow objectAtIndex:]):
(-[_WKWebExtensionSQLiteRowEnumerator initWithResultsOfStatement:]):
(-[_WKWebExtensionSQLiteRowEnumerator nextObject]):
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStatement.h: Added.
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStatement.mm: Added.
(-[_WKWebExtensionSQLiteStatement init]):
(-[_WKWebExtensionSQLiteStatement initWithDatabase:query:error:]):
(-[_WKWebExtensionSQLiteStatement initWithDatabase:query:]):
(-[_WKWebExtensionSQLiteStatement dealloc]):
(-[_WKWebExtensionSQLiteStatement execute]):
(-[_WKWebExtensionSQLiteStatement execute:]):
(-[_WKWebExtensionSQLiteStatement fetch]):
(-[_WKWebExtensionSQLiteStatement fetchWithEnumerationBlock:error:]):
(-[_WKWebExtensionSQLiteStatement reset]):
(-[_WKWebExtensionSQLiteStatement invalidate]):
(-[_WKWebExtensionSQLiteStatement bindString:atParameterIndex:]):
(-[_WKWebExtensionSQLiteStatement bindInt:atParameterIndex:]):
(-[_WKWebExtensionSQLiteStatement bindInt64:atParameterIndex:]):
(-[_WKWebExtensionSQLiteStatement bindDouble:atParameterIndex:]):
(-[_WKWebExtensionSQLiteStatement bindData:atParameterIndex:]):
(-[_WKWebExtensionSQLiteStatement bindNullAtParameterIndex:]):
(-[_WKWebExtensionSQLiteStatement columnNamesToIndexes]):
(-[_WKWebExtensionSQLiteStatement columnNames]):
(-[_WKWebExtensionSQLiteStatement _isValid]):
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.h: Added.
* Source/WebKit/Shared/Extensions/_WKWebExtensionSQLiteStore.mm: Added.
(-[_WKWebExtensionSQLiteStore dealloc]):
(-[_WKWebExtensionSQLiteStore deleteStorageWithCompletionHandler:]):
(-[_WKWebExtensionSQLiteStore deleteDatabaseWithCompletionHandler:]):
(-[_WKWebExtensionSQLiteStore useInMemoryDatabase]):
(-[_WKWebExtensionSQLiteStore _vacuum]):
(-[_WKWebExtensionSQLiteStore _openDatabaseIfNecessaryReturningErrorMessage:]):
(-[_WKWebExtensionSQLiteStore _openDatabase:deleteDatabaseFileOnError:]):
(-[_WKWebExtensionSQLiteStore _isDatabaseOpen]):
(-[_WKWebExtensionSQLiteStore _deleteDatabaseFileAtURL:reopenDatabase:]):
(-[_WKWebExtensionSQLiteStore _deleteExtensionStorageFolderIfEmpty]):
(-[_WKWebExtensionSQLiteStore _deleteDatabaseIfEmpty]):
(-[_WKWebExtensionSQLiteStore _deleteDatabase]):
(-[_WKWebExtensionSQLiteStore _handleSchemaVersioningWithDeleteDatabaseFileOnError:]):
(-[_WKWebExtensionSQLiteStore _migrateToCurrentSchemaVersionIfNeeded]):
(-[_WKWebExtensionSQLiteStore _setDatabaseSchemaVersion:]):
(-[_WKWebExtensionSQLiteStore _currentDatabaseSchemaVersion]):
(-[_WKWebExtensionSQLiteStore _databaseURL]):
(-[_WKWebExtensionSQLiteStore _createFreshDatabaseSchema]):
(-[_WKWebExtensionSQLiteStore _resetDatabaseSchema]):
(-[_WKWebExtensionSQLiteStore _isDatabaseEmpty]):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:

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




More information about the webkit-changes mailing list