[webkit-changes] [WebKit/WebKit] 781b9f: Make data eviction based on user interaction time ...
Sihui
noreply at github.com
Wed Apr 12 20:47:46 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 781b9f59f164fdfb902bdbbe5c67f6472a2b8a0f
https://github.com/WebKit/WebKit/commit/781b9f59f164fdfb902bdbbe5c67f6472a2b8a0f
Author: Sihui Liu <sihui_liu at apple.com>
Date: 2023-04-12 (Wed, 12 Apr 2023)
Changed paths:
M Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp
M Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h
M Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h
M Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp
M Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h
M Source/WebKit/NetworkProcess/NetworkProcess.cpp
M Source/WebKit/NetworkProcess/NetworkProcess.h
M Source/WebKit/NetworkProcess/NetworkSession.cpp
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/WebKit.xcodeproj/project.pbxproj
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm
Log Message:
-----------
Make data eviction based on user interaction time when ITP is enabled
https://bugs.webkit.org/show_bug.cgi?id=255272
Reviewed by Youenn Fablet.
Revamp data eviction from exceeding total quota. The major changes:
1. NetworkStorageManager tracks total usage and performs eviction by itself instead of relying on NetworkQuotaManager;
this is because NetworkStorageManager has a list of origins that are being used (m_originStorageManagers) and it's more
convenient to do operation on OriginStorageManager from NetworkStorageManager.
2. NetworkStorageManager uses how much space is granted to all origins as estimated total usage. It only calculates the
real usage when estimated usage is bigger than quota, and then uses real usage to decide if eviction is needed.
3. When ITP is enabled, NetworkStorageManager decides the eviction order of origins based on interaction time from ITP;
when ITP is not enabled, NetworkStorageManager decides the order based on last modification time of storage files or
directories.
4. NetworkStorageManager will update last modification time of storage files or directories of an origin when it is
granted space.
API test: WKWebsiteDataStoreConfiguration.TotalQuotaRatioWithResourceLoadStatisticsEnabled
* Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
(WebKit::ResourceLoadStatisticsDatabaseStore::allDomainsWithLastAccessedTime const):
* Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
* Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
* Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::registrableDomainsWithLastAccessedTime):
* Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::registrableDomainsWithLastAccessedTime):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::createNetworkStorageManager):
(WebKit::NetworkSession::NetworkSession):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::create):
(WebKit::NetworkStorageManager::NetworkStorageManager):
(WebKit::NetworkStorageManager::writeOriginToFileIfNecessary):
(WebKit::NetworkStorageManager::spaceGrantedForOrigin):
(WebKit::NetworkStorageManager::schedulePerformEviction):
(WebKit::NetworkStorageManager::prepareForEviction):
(WebKit::NetworkStorageManager::lastModificationTimeForOrigin const):
(WebKit::NetworkStorageManager::donePrepareForEviction):
(WebKit::NetworkStorageManager::performEviction):
(WebKit::NetworkStorageManager::originStorageManager):
(WebKit::NetworkStorageManager::updateLastModificationTimeForOrigin):
(WebKit::NetworkStorageManager::quotaManager): Deleted.
(WebKit::NetworkStorageManager::updateOriginModificationTime): Deleted.
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/NetworkProcess/storage/OriginQuotaManager.cpp:
(WebKit::OriginQuotaManager::create):
(WebKit::OriginQuotaManager::OriginQuotaManager):
(WebKit::OriginQuotaManager::usage):
(WebKit::OriginQuotaManager::grantWithCurrentQuota):
(WebKit::OriginQuotaManager::spaceGranted):
(WebKit::OriginQuotaManager::grantFastPath):
(WebKit::OriginQuotaManager::usageUpdated): Deleted.
* Source/WebKit/NetworkProcess/storage/OriginQuotaManager.h:
(WebKit::OriginQuotaManager::create):
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:
(WebKit::OriginStorageManager::createQuotaManager):
(WebKit::OriginStorageManager::OriginStorageManager):
* Source/WebKit/NetworkProcess/storage/OriginStorageManager.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebsiteDatastore.mm:
(TestWebKitAPI::TEST):
Canonical link: https://commits.webkit.org/262900@main
More information about the webkit-changes
mailing list