[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