Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: daadfcfb7025c547ebeff695223e0fdaa41c6101
https://github.com/WebKit/WebKit/commit/daadfcfb7025c547ebeff695223e0fdaa41c6101
Author: Youenn Fablet <[email protected]>
Date: 2025-02-23 (Sun, 23 Feb 2025)
Changed paths:
A
LayoutTests/storage/filesystemaccess/writable-file-stream-abort-expected.txt
A LayoutTests/storage/filesystemaccess/writable-file-stream-abort.html
M Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.cpp
A Source/WebCore/Modules/filesystemaccess/FileSystemStorageConnection.cpp
M Source/WebCore/Modules/filesystemaccess/FileSystemStorageConnection.h
M
Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp
M
Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.h
M Source/WebCore/Modules/streams/WritableStream.cpp
M Source/WebCore/Modules/streams/WritableStream.h
M Source/WebCore/Modules/streams/WritableStreamInternals.js
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/bindings/js/InternalWritableStream.cpp
M Source/WebCore/bindings/js/InternalWritableStream.h
M Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.cpp
M Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.h
M Source/WebKit/NetworkProcess/storage/FileSystemStorageManager.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.h
M
Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.messages.in
M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
M Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
M Tools/WebKitTestRunner/TestInvocation.cpp
Log Message:
-----------
Abort FileSystem writables in case of network process crash or storage
clearing
https://bugs.webkit.org/show_bug.cgi?id=287235
rdar://problem/144380830
Reviewed by Sihui Liu.
When a writable is open, it may be aborted in case the network process crashes
or in case the underlying file is deleted.
To support this mechanism, we allow networking process to invalidate a writable
like done for sync access handles.
Similarly, if a network process crashes, we add the same mechanism for
writables as for sync access handles.
When a writable (aka FileSystemWritableFileStream) gets crated, we register it
in its FileSystemStorageConnection.
When a writable is closed, we unregister it as well.
When a FileSystemStorageConnection is instructed to error a writable, it will
call the new WritableStream errorIfPossible method.
Covered by added test.
* LayoutTests/storage/filesystemaccess/writable-file-stream-abort-expected.txt:
Added.
* LayoutTests/storage/filesystemaccess/writable-file-stream-abort.html: Added.
* Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.cpp:
(WebCore::FileSystemFileHandle::createWritable):
(WebCore::FileSystemFileHandle::closeWritable):
* Source/WebCore/Modules/filesystemaccess/FileSystemStorageConnection.cpp:
Added.
(WebCore::FileSystemStorageConnection::errorFileSystemWritable):
(WebCore::FileSystemStorageConnection::registerFileSystemWritable):
(WebCore::FileSystemStorageConnection::unregisterFileSystemWritable):
* Source/WebCore/Modules/filesystemaccess/FileSystemStorageConnection.h:
* Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp:
(WebCore::WorkerFileSystemStorageConnection::createWritable):
* Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.h:
* Source/WebCore/Modules/streams/WritableStream.cpp:
(WebCore::WritableStream::errorIfPossible):
* Source/WebCore/Modules/streams/WritableStream.h:
* Source/WebCore/Modules/streams/WritableStreamInternals.js:
(writableStreamErrorIfPossible):
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/bindings/js/InternalWritableStream.cpp:
(WebCore::InternalWritableStream::errorIfPossible):
* Source/WebCore/bindings/js/InternalWritableStream.h:
* Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.cpp:
(WebKit::FileSystemStorageHandle::writables const):
* Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.h:
* Source/WebKit/NetworkProcess/storage/FileSystemStorageManager.cpp:
(WebKit::FileSystemStorageManager::close):
* Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.cpp:
(WebKit::WebFileSystemStorageConnection::errorWritable):
(WebKit::WebFileSystemStorageConnection::connectionClosed):
(WebKit::WebFileSystemStorageConnection::createWritable):
(WebKit::WebFileSystemStorageConnection::invalidateWritable):
(WebKit::WebFileSystemStorageConnection::closeWritable):
* Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.h:
*
Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.messages.in:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::clearStorage):
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:
* Tools/WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
Canonical link: https://commits.webkit.org/290915@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