[webkit-changes] [WebKit/WebKit] 270681: FileSystemSyncAccessHandle::write should perform q...

Sihui noreply at github.com
Tue Jan 31 11:00:59 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2706810bb38f1f596337fbdc99fce9db9be53c7b
      https://github.com/WebKit/WebKit/commit/2706810bb38f1f596337fbdc99fce9db9be53c7b
  Author: Sihui Liu <sihui_liu at apple.com>
  Date:   2023-01-31 (Tue, 31 Jan 2023)

  Changed paths:
    A LayoutTests/storage/filesystemaccess/resources/sync-access-handle-storage-limit.js
    A LayoutTests/storage/filesystemaccess/sync-access-handle-storage-limit-worker-expected.txt
    A LayoutTests/storage/filesystemaccess/sync-access-handle-storage-limit-worker.html
    M Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.cpp
    M Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.h
    M Source/WebCore/Modules/filesystemaccess/FileSystemStorageConnection.h
    M Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp
    M Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.h
    M Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp
    M Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.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/NetworkProcess/storage/FileSystemStorageManager.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/NetworkProcess/storage/OriginStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/OriginStorageManager.h
    M Source/WebKit/Scripts/webkit/messages.py
    A Source/WebKit/Shared/FileSystemSyncAccessHandleInfo.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.h

  Log Message:
  -----------
  FileSystemSyncAccessHandle::write should perform quota check
https://bugs.webkit.org/show_bug.cgi?id=250400
rdar://93588782

Reviewed by Youenn Fablet.

Implement basic quota check for FileSystemSyncAccessHandle. The general ideas are:
1. Each FileSystemSyncAccessHandle has a capacity intialized to current file size.
2. For write operation on FileSystemSyncAccessHandle, if the new size after write exceeds current capacity, it needs to
send a request to increase capacity.
3. The capacity of FileSystemSyncAccessHandle will be viewed as occupied (even if the real file size is smaller) in
origin quota computation.
4. FileSystem data shares origin quota with IndexedDB and CacheStorage.

* LayoutTests/storage/filesystemaccess/resources/sync-access-handle-storage-limit.js: Added.
(async test):
* LayoutTests/storage/filesystemaccess/sync-access-handle-storage-limit-worker-expected.txt: Added.
* LayoutTests/storage/filesystemaccess/sync-access-handle-storage-limit-worker.html: Added.
* Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.cpp:
(WebCore::FileSystemFileHandle::createSyncAccessHandle):
(WebCore::FileSystemFileHandle::requestNewCapacityForSyncAccessHandle):
* Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.h:
* Source/WebCore/Modules/filesystemaccess/FileSystemStorageConnection.h:
(WebCore::FileSystemStorageConnection::SyncAccessHandleInfo::isolatedCopy):
* Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.cpp:
(WebCore::FileSystemSyncAccessHandle::create):
(WebCore::FileSystemSyncAccessHandle::FileSystemSyncAccessHandle):
(WebCore::FileSystemSyncAccessHandle::write):
(WebCore::FileSystemSyncAccessHandle::requestSpaceForWrite):
* Source/WebCore/Modules/filesystemaccess/FileSystemSyncAccessHandle.h:
* Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp:
(WebCore::WorkerFileSystemStorageConnection::didCreateSyncAccessHandle):
(WebCore::WorkerFileSystemStorageConnection::requestNewCapacityForSyncAccessHandle):
* Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.h:
* Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.cpp:
(WebKit::FileSystemStorageHandle::close):
(WebKit::FileSystemStorageHandle::createSyncAccessHandle):
(WebKit::FileSystemStorageHandle::closeSyncAccessHandle):
(WebKit::FileSystemStorageHandle::activeSyncAccessHandle):
(WebKit::FileSystemStorageHandle::isActiveSyncAccessHandle):
(WebKit::FileSystemStorageHandle::allocatedUnusedCapacity):
(WebKit::FileSystemStorageHandle::requestNewCapacityForSyncAccessHandle):
* Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.h:
(WebKit::FileSystemStorageHandle::activeSyncAccessHandle const): Deleted.
* Source/WebKit/NetworkProcess/storage/FileSystemStorageManager.cpp:
(WebKit::FileSystemStorageManager::FileSystemStorageManager):
(WebKit::FileSystemStorageManager::allocatedUnusedCapacity const):
(WebKit::FileSystemStorageManager::requestSpace):
* Source/WebKit/NetworkProcess/storage/FileSystemStorageManager.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::createSyncAccessHandle):
(WebKit::NetworkStorageManager::requestNewCapacityForSyncAccessHandle):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.messages.in:
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:
(WebKit::OriginStorageManager::StorageBucket::existingFileSystemStorageManager):
(WebKit::OriginStorageManager::StorageBucket::fileSystemStorageManager):
(WebKit::OriginStorageManager::createQuotaManager):
(WebKit::OriginStorageManager::quotaManager):
(WebKit::OriginStorageManager::fileSystemStorageManager):
(WebKit::OriginStorageManager::existingFileSystemStorageManager):
(WebKit::createQuotaManager): Deleted.
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.h:
* Source/WebKit/Scripts/webkit/messages.py:
(types_that_cannot_be_forward_declared):
* Source/WebKit/Shared/FileSystemSyncAccessHandleInfo.h: Copied from Source/WebCore/Modules/filesystemaccess/FileSystemFileHandle.h.
(WebKit::FileSystemSyncAccessHandleInfo::encode const):
(WebKit::FileSystemSyncAccessHandleInfo::decode):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.cpp:
(WebKit::WebFileSystemStorageConnection::createSyncAccessHandle):
(WebKit::WebFileSystemStorageConnection::requestNewCapacityForSyncAccessHandle):
* Source/WebKit/WebProcess/WebCoreSupport/WebFileSystemStorageConnection.h:

Canonical link: https://commits.webkit.org/259635@main




More information about the webkit-changes mailing list