[webkit-changes] [WebKit/WebKit] 92cb56: Add initial implementation of FileSystemWritableFi...
Sihui
noreply at github.com
Thu Dec 5 01:03:44 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 92cb5665c378bef8d73a61a782ad57291520f77d
https://github.com/WebKit/WebKit/commit/92cb5665c378bef8d73a61a782ad57291520f77d
Author: Sihui Liu <sihui_liu at apple.com>
Date: 2024-12-05 (Thu, 05 Dec 2024)
Changed paths:
M LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-move.https.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-move.https.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-IndexedDB.https.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-IndexedDB.https.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-BroadcastChannel.https.window-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-Error.https.window-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-MessagePort-frames.https.window-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-MessagePort-windows.https.window-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-MessagePort-workers.https.window-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-frames.https.window-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-windows.https.window-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-workers.https.window-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-remove.https.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-remove.https.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemDirectoryHandle-getFileHandle.https.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemDirectoryHandle-getFileHandle.https.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemDirectoryHandle-iteration.https.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemDirectoryHandle-iteration.https.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemDirectoryHandle-removeEntry.https.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemDirectoryHandle-removeEntry.https.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemFileHandle-getFile.https.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemFileHandle-getFile.https.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemFileHandle-move.https.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemFileHandle-move.https.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemWritableFileStream-piped.https.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemWritableFileStream-piped.https.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemWritableFileStream-write.https.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemWritableFileStream-write.https.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemWritableFileStream.https.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemWritableFileStream.https.any.worker-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/idlharness.https.any-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/fs/idlharness.https.any.worker-expected.txt
M LayoutTests/storage/filesystemaccess/resources/shared.js
A LayoutTests/storage/filesystemaccess/resources/writable-file-stream-seek.js
A LayoutTests/storage/filesystemaccess/resources/writable-file-stream-truncate.js
A LayoutTests/storage/filesystemaccess/resources/writable-file-stream-write.js
A LayoutTests/storage/filesystemaccess/writable-file-stream-seek-expected.txt
A LayoutTests/storage/filesystemaccess/writable-file-stream-seek.html
A LayoutTests/storage/filesystemaccess/writable-file-stream-truncate-expected.txt
A LayoutTests/storage/filesystemaccess/writable-file-stream-truncate.html
A LayoutTests/storage/filesystemaccess/writable-file-stream-write-expected.txt
A LayoutTests/storage/filesystemaccess/writable-file-stream-write.html
M Source/JavaScriptCore/runtime/GenericTypedArrayView.h
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WTF/wtf/FileSystem.cpp
M Source/WTF/wtf/FileSystem.h
M Source/WebCore/CMakeLists.txt
M Source/WebCore/DerivedSources-input.xcfilelist
M Source/WebCore/DerivedSources-output.xcfilelist
M Source/WebCore/DerivedSources.make
M Source/WebCore/Headers.cmake
M Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.cpp
M Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.h
M Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.idl
M Source/WebCore/Modules/filesystemaccess/FileSystemStorageConnection.h
A Source/WebCore/Modules/filesystemaccess/FileSystemWritableFileStream.cpp
A Source/WebCore/Modules/filesystemaccess/FileSystemWritableFileStream.h
A Source/WebCore/Modules/filesystemaccess/FileSystemWritableFileStream.idl
A Source/WebCore/Modules/filesystemaccess/FileSystemWritableFileStreamSink.cpp
A Source/WebCore/Modules/filesystemaccess/FileSystemWritableFileStreamSink.h
A Source/WebCore/Modules/filesystemaccess/FileSystemWriteCommandType.h
M Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp
M Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.h
M Source/WebCore/Modules/identity/CredentialRequestCoordinator.cpp
M Source/WebCore/Modules/streams/WritableStream.h
M Source/WebCore/SaferCPPExpectations/UncountedLambdaCapturesCheckerExpectations
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/bindings/js/WebCoreBuiltinNames.h
M Source/WebCore/fileapi/Blob.cpp
M Source/WebCore/fileapi/Blob.h
M Source/WebCore/platform/FileHandle.cpp
M Source/WebCore/platform/FileHandle.h
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
M Source/WebKit/NetworkProcess/NetworkProcess.cpp
M Source/WebKit/NetworkProcess/storage/FileSystemStorageError.h
M Source/WebKit/NetworkProcess/storage/FileSystemStorageError.serialization.in
M Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.cpp
M Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.h
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.messages.in
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.h
Log Message:
-----------
Add initial implementation of FileSystemWritableFileStream
https://bugs.webkit.org/show_bug.cgi?id=283841
rdar://problem/140709733
Reviewed by Youenn Fablet.
Add initial support for FileSystemWritableFileStream: client can now create it via createWritable() method and use it to
modify an OPFS file (via WritableStreamDefaultWriter methods) in Window context.
Spec: https://fs.spec.whatwg.org/#api-filesystemwritablefilestream.
New tests: storage/filesystemaccess/writable-file-stream-write.html
storage/filesystemaccess/writable-file-stream-seek.html
storage/filesystemaccess/writable-file-stream-truncate.html
Rebaseline existing tests since they can proceed futher after createWritable() is available. Some tests still fail
because the methods of FileSystemWritableFileStream are not implemented yet.
* LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-move.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-move.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-IndexedDB.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-IndexedDB.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-BroadcastChannel.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-Error.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-MessagePort-frames.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-MessagePort-windows.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-MessagePort-workers.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-frames.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-windows.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-postMessage-workers.https.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-remove.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemBaseHandle-remove.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemDirectoryHandle-getFileHandle.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemDirectoryHandle-getFileHandle.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemDirectoryHandle-iteration.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemDirectoryHandle-iteration.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemDirectoryHandle-removeEntry.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemDirectoryHandle-removeEntry.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemFileHandle-getFile.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemFileHandle-getFile.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemFileHandle-move.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemFileHandle-move.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemFileHandle-sync-access-handle-writable-lock.https.tentative.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemWritableFileStream-piped.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemWritableFileStream-piped.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemWritableFileStream-write.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemWritableFileStream-write.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemWritableFileStream.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/FileSystemWritableFileStream.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/idlharness.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fs/idlharness.https.any.worker-expected.txt:
* LayoutTests/storage/filesystemaccess/resources/shared.js:
(finishTest):
(async asyncReadFileAsText):
* LayoutTests/storage/filesystemaccess/resources/writable-file-stream-seek.js: Added.
(async test):
* LayoutTests/storage/filesystemaccess/resources/writable-file-stream-truncate.js: Added.
(async checkFileContent):
(async test):
* LayoutTests/storage/filesystemaccess/resources/writable-file-stream-write.js: Added.
(input.new.Number):
(async runTest):
(async test):
* LayoutTests/storage/filesystemaccess/writable-file-stream-seek-expected.txt: Added.
* LayoutTests/storage/filesystemaccess/writable-file-stream-seek.html: Added.
* LayoutTests/storage/filesystemaccess/writable-file-stream-truncate-expected.txt: Added.
* LayoutTests/storage/filesystemaccess/writable-file-stream-truncate.html: Added.
* LayoutTests/storage/filesystemaccess/writable-file-stream-write-expected.txt: Added.
* LayoutTests/storage/filesystemaccess/writable-file-stream-write.html: Added.
* Source/JavaScriptCore/runtime/GenericTypedArrayView.h:
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WTF/wtf/FileSystem.cpp:
(WTF::FileSystemImpl::copyFile):
* Source/WTF/wtf/FileSystem.h:
* Source/WebCore/CMakeLists.txt:
* Source/WebCore/DerivedSources-input.xcfilelist:
* Source/WebCore/DerivedSources-output.xcfilelist:
* Source/WebCore/DerivedSources.make:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.cpp:
(WebCore::FileSystemFileHandle::createWritable):
(WebCore::FileSystemFileHandle::closeWritable):
(WebCore::FileSystemFileHandle::executeCommandForWritable):
* Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.h:
* Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.idl:
* Source/WebCore/Modules/filesystemaccess/FileSystemStorageConnection.h:
* Source/WebCore/Modules/filesystemaccess/FileSystemWritableFileStream.cpp: Added.
(WebCore::FileSystemWritableFileStream::create):
(WebCore::FileSystemWritableFileStream::FileSystemWritableFileStream):
(WebCore::FileSystemWritableFileStream::write):
(WebCore::FileSystemWritableFileStream::seek):
(WebCore::FileSystemWritableFileStream::truncate):
* Source/WebCore/Modules/filesystemaccess/FileSystemWritableFileStream.h: Copied from Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.idl.
* Source/WebCore/Modules/filesystemaccess/FileSystemWritableFileStream.idl: Copied from Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.idl.
* Source/WebCore/Modules/filesystemaccess/FileSystemWritableFileStreamSink.cpp: Added.
(WebCore::writeParamsFromChunk):
(WebCore::fetchDataBytesForWrite):
(WebCore::FileSystemWritableFileStreamSink::create):
(WebCore::FileSystemWritableFileStreamSink::FileSystemWritableFileStreamSink):
(WebCore::FileSystemWritableFileStreamSink::~FileSystemWritableFileStreamSink):
(WebCore::FileSystemWritableFileStreamSink::write):
(WebCore::FileSystemWritableFileStreamSink::close):
(WebCore::FileSystemWritableFileStreamSink::error):
* Source/WebCore/Modules/filesystemaccess/FileSystemWritableFileStreamSink.h: Copied from Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.idl.
* Source/WebCore/Modules/filesystemaccess/FileSystemWriteCommandType.h: Copied from Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.idl.
* Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp:
(WebCore::WorkerFileSystemStorageConnection::createWritable):
(WebCore::WorkerFileSystemStorageConnection::closeWritable):
(WebCore::WorkerFileSystemStorageConnection::executeCommandForWritable):
* Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.h:
* Source/WebCore/Modules/identity/CredentialRequestCoordinator.cpp:
* Source/WebCore/Modules/streams/WritableStream.h:
* Source/WebCore/SaferCPPExpectations/UncountedLambdaCapturesCheckerExpectations:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/bindings/js/WebCoreBuiltinNames.h:
* Source/WebCore/fileapi/Blob.cpp:
(WebCore::Blob::getArrayBuffer):
* Source/WebCore/fileapi/Blob.h:
* Source/WebCore/platform/FileHandle.cpp:
(WebCore::FileHandle::path const):
* Source/WebCore/platform/FileHandle.h:
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::updateSharedPreferencesForWebProcess):
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
* Source/WebKit/NetworkProcess/storage/FileSystemStorageError.h:
(WebKit::convertToException):
* Source/WebKit/NetworkProcess/storage/FileSystemStorageError.serialization.in:
* Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.cpp:
(WebKit::FileSystemStorageHandle::createWritable):
(WebKit::FileSystemStorageHandle::closeWritable):
(WebKit::FileSystemStorageHandle::executeCommandForWritableInternal):
(WebKit::FileSystemStorageHandle::executeCommandForWritable):
* Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::startReceivingMessageFromConnection):
(WebKit::NetworkStorageManager::stopReceivingMessageFromConnection):
(WebKit::NetworkStorageManager::updateSharedPreferencesForConnection):
(WebKit::NetworkStorageManager::createWritable):
(WebKit::NetworkStorageManager::closeWritable):
(WebKit::NetworkStorageManager::executeCommandForWritable):
(WebKit::NetworkStorageManager::sharedPreferencesForWebProcess const):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.messages.in:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.cpp:
(WebKit::WebFileSystemStorageConnection::createWritable):
(WebKit::WebFileSystemStorageConnection::closeWritable):
(WebKit::WebFileSystemStorageConnection::executeCommandForWritable):
* Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.h:
Canonical link: https://commits.webkit.org/287390@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list