[webkit-changes] [WebKit/WebKit] 12630d: Enable calculating quota based on disk space in We...

Sihui noreply at github.com
Thu Oct 19 17:54:47 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 12630df61ee89415d3f76e3f96dc2799ab491ade
      https://github.com/WebKit/WebKit/commit/12630df61ee89415d3f76e3f96dc2799ab491ade
  Author: Sihui Liu <sihui_liu at apple.com>
  Date:   2023-10-19 (Thu, 19 Oct 2023)

  Changed paths:
    M LayoutTests/http/tests/IndexedDB/storage-limit-1.https.html
    M LayoutTests/http/tests/IndexedDB/storage-limit-2.https.html
    M LayoutTests/http/tests/IndexedDB/storage-limit.https.html
    M LayoutTests/http/wpt/cache-storage/cache-quota-add.any.js
    M LayoutTests/http/wpt/cache-storage/cache-quota-after-restart.any.js
    M LayoutTests/http/wpt/cache-storage/cache-quota.any.js
    M LayoutTests/http/wpt/cache-storage/quota-third-party.https.html
    M LayoutTests/storage/filesystemaccess/sync-access-handle-storage-limit-worker.html
    M LayoutTests/storage/indexeddb/resources/request-size-estimate.js
    M LayoutTests/storage/indexeddb/resources/storage-limit.js
    M Source/WebKit/NetworkProcess/NetworkProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkProcess.h
    M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
    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/NetworkProcess/storage/OriginStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/OriginStorageManager.h
    M Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp
    M Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
    M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
    M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
    M Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
    M Tools/WebKitTestRunner/TestController.cpp
    M Tools/WebKitTestRunner/TestController.h
    M Tools/WebKitTestRunner/TestInvocation.cpp

  Log Message:
  -----------
  Enable calculating quota based on disk space in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=263323
rdar://117139033

Reviewed by Youenn Fablet.

When originQuotaRatio and totalQuotaRatio of WebsiteDataStoreConfiguration are non-null, quota is calculated based on
disk space and ratio values. Since 263250 at main, these values are non-null by default, which means WebKit apps by default
have quota calculated based on disk space instead of using a fixed quota value.

To ensure quota-related tests run correctly, WebKitTestRunner currently still uses fixed quota, by explicitly setting
originQuotaRatio and totalQuotaRatio to null (see TestController::configureWebsiteDataStoreTemporaryDirectories). This
is not ideal as WebKit has different behavior in different quota mechanisms. For example, when origin quota is reached,
in old mechanism (fixed quota), WebKit ask clients whether to increase quota before proceeding with storage task; in new
mechanism (quota calculated based on disk space), task will fail directly. This difference has impacted our performance
testing (run-perf-tests) -- in old mechanism, many IPCs may be sent when the storage is big. To make WebKitTestRunner
test the new default behavior, this patch makes originQuotaRatio and totalQuotaRatio in WebKitTestRunner non-null.

Some layout tests rely on the old quota mechanism. For example, they may want to check if quota error can be correctly
thrown and handled with a small amount of data. To keep those tests working, this patch adds
TestRunner::setOriginQuotaRatioEnabled that allows a test to ask for old quota mechanism: when originQuotaRatioEnabled
is false, network process uses fixed quota. originQuotaRatioEnabled is reset to true between tests to make sure old
quota mechanism are only used for tests that needs it.

* LayoutTests/http/tests/IndexedDB/storage-limit-1.https.html:
* LayoutTests/http/tests/IndexedDB/storage-limit-2.https.html:
* LayoutTests/http/tests/IndexedDB/storage-limit.https.html:
* LayoutTests/http/wpt/cache-storage/cache-quota-add.any.js:
* LayoutTests/http/wpt/cache-storage/cache-quota-after-restart.any.js:
* LayoutTests/http/wpt/cache-storage/cache-quota.any.js:
* LayoutTests/http/wpt/cache-storage/quota-third-party.https.html:
* LayoutTests/storage/filesystemaccess/sync-access-handle-storage-limit-worker.html:
* LayoutTests/storage/indexeddb/resources/request-size-estimate.js:
* LayoutTests/storage/indexeddb/resources/storage-limit.js:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::setOriginQuotaRatioEnabledForTesting):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::originQuotaManagerParameters):
(WebKit::NetworkStorageManager::originStorageManager):
(WebKit::NetworkStorageManager::setOriginQuotaRatioEnabledForTesting):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/OriginQuotaManager.cpp:
(WebKit::OriginQuotaManager::create):
(WebKit::OriginQuotaManager::OriginQuotaManager):
(WebKit::OriginQuotaManager::updateParametersForTesting):
* Source/WebKit/NetworkProcess/storage/OriginQuotaManager.h:
(WebKit::OriginQuotaManager::create): Deleted.
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:
(WebKit::OriginStorageManager::createQuotaManager):
(WebKit::OriginStorageManager::OriginStorageManager):
(WebKit::OriginStorageManager::quotaManager):
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.h:
* Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreSetOriginQuotaRatioEnabled):
* Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::setOriginQuotaRatioEnabledForTesting):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setOriginQuotaRatioEnabled):
* Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::configureWebsiteDataStoreTemporaryDirectories):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::setOriginQuotaRatioEnabled):
* Tools/WebKitTestRunner/TestController.h:
* Tools/WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

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




More information about the webkit-changes mailing list