Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0e2fcbe8a2a403c36b31eab8cd9bfad6ed5ced89
      
https://github.com/WebKit/WebKit/commit/0e2fcbe8a2a403c36b31eab8cd9bfad6ed5ced89
  Author: Sihui Liu <[email protected]>
  Date:   2026-05-11 (Mon, 11 May 2026)

  Changed paths:
    M Source/WebKit/NetworkProcess/NetworkProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkProcess.h
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
    M 
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in
    M Source/WebKit/NetworkProcess/cache/NetworkCache.cpp
    M Source/WebKit/NetworkProcess/cache/NetworkCache.h
    M Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp
    M Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.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/WebsiteDataStoreConfiguration.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebsiteDatastore.mm

  Log Message:
  -----------
  Throttle time-based website data eviction to run once per week
https://bugs.webkit.org/show_bug.cgi?id=314277
rdar://176418771

Reviewed by Ben Nham.

Throttle eviction to run at most once per configured interval (default 7 days), 
controlled by a timestamp file that is
written after each eviction attempt. Introduce 
timeBasedEvictionIntervalOverride SPI on _WKWebsiteDataStoreConfiguration
for testing.

Additionally, to make the access time more accurate, the eviction now takes 
disk cache last access time into account
when deciding whether to evict an origin's data.

Tests: TimeBasedEviction.DiskCacheAccessUpdatesTimestamp
       TimeBasedEviction.ThrottledToConfiguredInterval

Some existing tests are also updated since time-based eviction happens 
asynchronously now (after fetching orgin access
time from disk cache).

* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::diskCacheOriginAccessTimes):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::createNetworkStorageManager):
* Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h:
* 
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in:
* Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::fetchOriginAccessTimes):
* Source/WebKit/NetworkProcess/cache/NetworkCache.h:
* Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::traverseWithinRootPath):
* Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::create):
(WebKit::NetworkStorageManager::NetworkStorageManager):
(WebKit::NetworkStorageManager::shouldPerformTimeBasedEvictionNow):
(WebKit::NetworkStorageManager::performTimeBasedEviction):
(WebKit::NetworkStorageManager::prepareForTimeBasedEviction):
(WebKit::NetworkStorageManager::donePrepareForTimeBasedEviction):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration timeBasedEvictionIntervalOverride]):
(-[_WKWebsiteDataStoreConfiguration setTimeBasedEvictionIntervalOverride:]):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::parameters):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
(WebKit::WebsiteDataStoreConfiguration::copy const):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
(WebKit::WebsiteDataStoreConfiguration::timeBasedEvictionIntervalOverride 
const):
(WebKit::WebsiteDataStoreConfiguration::setTimeBasedEvictionIntervalOverride):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebsiteDatastore.mm:
(TestWebKitAPI::triggerTimeBasedEviction):
(TestWebKitAPI::(TimeBasedEviction, Basic)):
(TestWebKitAPI::(TimeBasedEviction, IndexedDBReadUpdatesTimestamp)):
(TestWebKitAPI::(TimeBasedEviction, LocalStorageReadUpdatesTimestamp)):
(TestWebKitAPI::(TimeBasedEviction, CacheStorageReadUpdatesTimestamp)):
(TestWebKitAPI::(TimeBasedEviction, FileSystemAPIReadUpdatesTimestamp)):
(TestWebKitAPI::(TimeBasedEviction, DiskCacheAccessUpdatesTimestamp)):
(TestWebKitAPI::(TimeBasedEviction, ThrottledToConfiguredInterval)):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to