[webkit-changes] [WebKit/WebKit] 222e49: Adjust heuristics for reported quota

Sihui noreply at github.com
Tue May 23 17:06:02 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 222e49e258bd16148526d2fc81ea7e98f55aa39a
      https://github.com/WebKit/WebKit/commit/222e49e258bd16148526d2fc81ea7e98f55aa39a
  Author: Sihui Liu <sihui_liu at apple.com>
  Date:   2023-05-23 (Tue, 23 May 2023)

  Changed paths:
    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/OriginQuotaManager.cpp
    M Source/WebKit/NetworkProcess/storage/OriginQuotaManager.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:
  -----------
  Adjust heuristics for reported quota
https://bugs.webkit.org/show_bug.cgi?id=256615
rdar://problem/109173368

Reviewed by Youenn Fablet.

In existing implementation, StorageManager API returns a fixed value when existing usage is smaller than the fixed value
(standardReportedQuota, and default value is 10 GB). This patch makes a few improvements:
1. Calculate standardReportedQuota based on originQuotaRatio and standardVolumeCapacity, instead of directly setting
value for standardReportedQuota -- standardReportedQuota = standardVolumeCapacity * originQuotaRatio.
2. Unlike defaultStandardReportedQuota, defaultStandardVolumeCapacity is different on different platforms by default,
which will make the reported quota value more reasonable.
3. Ensure reported quota is at least twice the current usage. A problem in existing implementation is client needs to
store over 10 GB to find out the quota that is bigger than 10 GB, but if client sees the reported quota as 10 GB, they
may never store over that.
4. OriginQuotaManager::reportedQuota() uses reported usage (`OriginQuotaManager::usage()`) instead of actual disk usage
(`m_usage`). Reported usage tracks the realtime usage which includes the granted space, and we use that in
quota check for storage operation.

Test: WKWebsiteDataStoreConfiguration.StandardVolumeCapacity

* 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/OriginQuotaManager.cpp:
(WebKit::OriginQuotaManager::reportedQuota):
(WebKit::OriginQuotaManager::reportedQuota const): Deleted.
* Source/WebKit/NetworkProcess/storage/OriginQuotaManager.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration standardVolumeCapacity]):
(-[_WKWebsiteDataStoreConfiguration setStandardVolumeCapacity:]):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::parameters):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::defaultStandardVolumeCapacity):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
(WebKit::WebsiteDataStoreConfiguration::WebsiteDataStoreConfiguration):
(WebKit::WebsiteDataStoreConfiguration::copy const):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
(WebKit::WebsiteDataStoreConfiguration::standardVolumeCapacity const):
(WebKit::WebsiteDataStoreConfiguration::setStandardVolumeCapacity):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm:
(TestWebKitAPI::TEST):

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




More information about the webkit-changes mailing list