[webkit-changes] [WebKit/WebKit] 7bc1fa: Allow quota to be set based on disk space

Sihui noreply at github.com
Sun Mar 19 10:46:11 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7bc1fa58b65a096aac9d4317f074d4318e43b886
      https://github.com/WebKit/WebKit/commit/7bc1fa58b65a096aac9d4317f074d4318e43b886
  Author: Sihui Liu <sihui_liu at apple.com>
  Date:   2023-03-19 (Sun, 19 Mar 2023)

  Changed paths:
    M Source/WTF/wtf/FileSystem.cpp
    M Source/WTF/wtf/FileSystem.h
    M Source/WTF/wtf/playstation/FileSystemPlayStation.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp
    M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
    M Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/QuotaManager.cpp
    M Source/WebKit/NetworkProcess/storage/QuotaManager.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm

  Log Message:
  -----------
  Allow quota to be set based on disk space
https://bugs.webkit.org/show_bug.cgi?id=253978
rdar://106769648

Reviewed by Geoffrey Garen.

Make it possible to set origin quota based on disk space. This is achieved by letting client specify a originQuotaRatio,
and using it to compute the quota: originQuota = totalDiskSpace * originQuotaRatio. If originQuotaRatio it is unset, we
will use perOriginStorageQuota for quota. By default, originQuotaRatio is unset.

Also, when quota is set using originQuotaRatio, quota increase will not be allowed (client will not receive delegate
callback about quota is exceeded).

To mitigate fingerprinting issue, StorageManager.estimate() might report a quota that is lower than actual qutoa when
usage is small.

Test: WKWebsiteDataStoreConfiguration.OriginQuotaRatio

* Source/WTF/wtf/FileSystem.cpp:
(WTF::FileSystemImpl::volumeCapacity):
* Source/WTF/wtf/FileSystem.h:
* Source/WTF/wtf/playstation/FileSystemPlayStation.cpp:
(WTF::FileSystemImpl::volumeCapacity):
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::createNetworkStorageManager):
* Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.cpp:
(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):
* Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::create):
(WebKit::NetworkStorageManager::NetworkStorageManager):
(WebKit::NetworkStorageManager::originStorageManager):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:
(WebKit::OriginStorageManager::estimate):
* Source/WebKit/NetworkProcess/storage/QuotaManager.cpp:
(WebKit::QuotaManager::handleRequests):
(WebKit::QuotaManager::reportedQuota const):
* Source/WebKit/NetworkProcess/storage/QuotaManager.h:
(WebKit::QuotaManager::create):
(WebKit::QuotaManager::quota const): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration originQuotaRatio]):
(-[_WKWebsiteDataStoreConfiguration setOriginQuotaRatio:]):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::parameters):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::originQuotaRatio):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
(WebKit::WebsiteDataStoreConfiguration::copy const):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
(WebKit::WebsiteDataStoreConfiguration::originQuotaRatio const):
(WebKit::WebsiteDataStoreConfiguration::setOriginQuotaRatio):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm:
(-[WKWebsiteDataStoreMessageHandler userContentController:didReceiveScriptMessage:]):
(TestWebKitAPI::TEST):

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




More information about the webkit-changes mailing list