Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: daadfcfb7025c547ebeff695223e0fdaa41c6101 https://github.com/WebKit/WebKit/commit/daadfcfb7025c547ebeff695223e0fdaa41c6101 Author: Youenn Fablet <you...@apple.com> 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 webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes