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

Reply via email to