[webkit-changes] [WebKit/WebKit] daadfc: Abort FileSystem writables in case of network proc...

youennf noreply at github.com
Sun Feb 23 11:14:31 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: daadfcfb7025c547ebeff695223e0fdaa41c6101
      https://github.com/WebKit/WebKit/commit/daadfcfb7025c547ebeff695223e0fdaa41c6101
  Author: Youenn Fablet <youenn at 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


More information about the webkit-changes mailing list