Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 41866885204eefce7d8bfe48862f1a75e970967f
      
https://github.com/WebKit/WebKit/commit/41866885204eefce7d8bfe48862f1a75e970967f
  Author: Basuke Suzuki <[email protected]>
  Date:   2025-02-18 (Tue, 18 Feb 2025)

  Changed paths:
    M Source/WTF/wtf/ContinuousApproximateTime.cpp
    M Source/WTF/wtf/ContinuousApproximateTime.h
    M Source/WebCore/Headers.cmake
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    A Source/WebCore/loader/ResourceMonitorPersistence.cpp
    A Source/WebCore/loader/ResourceMonitorPersistence.h
    M Source/WebCore/loader/ResourceMonitorThrottler.cpp
    M Source/WebCore/loader/ResourceMonitorThrottler.h
    A Source/WebCore/loader/ResourceMonitorThrottlerHolder.cpp
    A Source/WebCore/loader/ResourceMonitorThrottlerHolder.h
    M Source/WebCore/platform/sql/SQLiteDatabase.cpp
    M Source/WebCore/platform/sql/SQLiteDatabase.h
    M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.h
    M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
    M 
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in
    M Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp
    M Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
    M Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.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/WebCore/ResourceMonitor.cpp
    M Tools/WebKitTestRunner/TestController.cpp

  Log Message:
  -----------
  Add persistence support for ResourceMonitorThrottler
https://bugs.webkit.org/show_bug.cgi?id=286652
rdar://142653861

Reviewed by Chris Dumez.

ResourceMonitorThrottler doesn't have persistent support yet and the stored 
data will be gone
when application quits. Adding persistence support for ResourceMonitorThrottler 
to make the data
meaningful over launch to launch.

Also change from ApproximateTime to ContinuousApproximateTime to keep counting 
while sleeping.

Add tests for persistence on API test.

* Source/WTF/wtf/ContinuousApproximateTime.cpp:
(WTF::ContinuousApproximateTime::fromWallTime):
* Source/WTF/wtf/ContinuousApproximateTime.h:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/loader/ResourceMonitorPersistence.cpp: Added.
(WebCore::ResourceMonitorPersistence::ResourceMonitorPersistence):
(WebCore::ResourceMonitorPersistence::~ResourceMonitorPersistence):
(WebCore::continuousApproximateTimeToDouble):
(WebCore::doubleToContinuousApproximateTime):
(WebCore::ResourceMonitorPersistence::reportSQLError):
(WebCore::ResourceMonitorPersistence::openDatabase):
(WebCore::ResourceMonitorPersistence::deleteAllRecords):
(WebCore::ResourceMonitorPersistence::deleteExpiredRecords):
(WebCore::ResourceMonitorPersistence::importRecords):
(WebCore::ResourceMonitorPersistence::recordAccess):
(WebCore::ResourceMonitorPersistence::closeDatabase):
* Source/WebCore/loader/ResourceMonitorPersistence.h: Copied from 
Source/WebCore/loader/ResourceMonitorThrottler.h.
* Source/WebCore/loader/ResourceMonitorThrottler.cpp:
(WebCore::ResourceMonitorThrottler::ResourceMonitorThrottler):
(WebCore::ResourceMonitorThrottler::~ResourceMonitorThrottler):
(WebCore::ResourceMonitorThrottler::throttlerForHost):
(WebCore::ResourceMonitorThrottler::removeOldestThrottler):
(WebCore::ResourceMonitorThrottler::tryAccess):
(WebCore::ResourceMonitorThrottler::clearAllData):
(WebCore::ResourceMonitorThrottler::maintainHosts):
(WebCore::ResourceMonitorThrottler::setCountPerDuration):
(WebCore::ResourceMonitorThrottler::AccessThrottler::tryAccessAndUpdateHistory):
(WebCore::ResourceMonitorThrottler::AccessThrottler::oldestAccessTime const):
(WebCore::ResourceMonitorThrottler::AccessThrottler::tryExpire):
(WebCore::ResourceMonitorThrottler::create): Deleted.
* Source/WebCore/loader/ResourceMonitorThrottler.h:
* Source/WebCore/loader/ResourceMonitorThrottlerHolder.cpp: Added.
(WebCore::ResourceMonitorThrottlerHolder::sharedWorkQueueSingleton):
(WebCore::ResourceMonitorThrottlerHolder::create):
(WebCore::ResourceMonitorThrottlerHolder::ResourceMonitorThrottlerHolder):
(WebCore::ResourceMonitorThrottlerHolder::~ResourceMonitorThrottlerHolder):
(WebCore::ResourceMonitorThrottlerHolder::tryAccess):
(WebCore::ResourceMonitorThrottlerHolder::clearAllData):
(WebCore::ResourceMonitorThrottlerHolder::setCountPerDuration):
* Source/WebCore/loader/ResourceMonitorThrottlerHolder.h: Copied from 
Source/WebCore/loader/ResourceMonitorThrottler.h.
* Source/WebCore/platform/sql/SQLiteDatabase.cpp:
(WebCore::SQLiteDatabase::indexExists):
* Source/WebCore/platform/sql/SQLiteDatabase.h:
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::shouldOffloadIFrameForHost):
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteDataImpl):
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::m_resourceMonitorThrottlerDirectory):
(WebKit::NetworkSession::resourceMonitorThrottler):
(WebKit::NetworkSession::protectedResourceMonitorThrottler):
(WebKit::NetworkSession::clearResourceMonitorThrottlerData):
(WebKit::m_isDeclarativeWebPushEnabled): Deleted.
* Source/WebKit/NetworkProcess/NetworkSession.h:
* Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h:
* 
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in:
* Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp:
(WKWebsiteDataStoreConfigurationCopyResourceMonitorThrottlerDirectory):
(WKWebsiteDataStoreConfigurationSetResourceMonitorThrottlerDirectory):
* Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration _resourceMonitorThrottlerDirectory]):
(-[_WKWebsiteDataStoreConfiguration _setResourceMonitorThrottlerDirectory:]):
* Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::defaultResourceMonitorThrottlerDirectory):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::resolveDirectories):
(WebKit::WebsiteDataStore::parameters):
(WebKit::WebsiteDataStore::defaultResourceMonitorThrottlerDirectory):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
(WebKit::WebsiteDataStoreConfiguration::initializePaths):
(WebKit::WebsiteDataStoreConfiguration::Directories::isolatedCopy const):
(WebKit::WebsiteDataStoreConfiguration::Directories::isolatedCopy):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
(WebKit::WebsiteDataStoreConfiguration::resourceMonitorThrottlerDirectory 
const):
(WebKit::WebsiteDataStoreConfiguration::setResourceMonitorThrottlerDirectory):
* Tools/TestWebKitAPI/Tests/WebCore/ResourceMonitor.cpp:
(TestWebKitAPI::ResourceMonitorTest::prepareThrottler):
(TestWebKitAPI::ResourceMonitorTest::throttler):
(TestWebKitAPI::ResourceMonitorTest::now):
(TestWebKitAPI::ResourceMonitorTest::later):
(TestWebKitAPI::ResourceMonitorTest::tryAccess):
(TestWebKitAPI::ResourceMonitorTest::temporaryDatabasePath):
(TestWebKitAPI::TEST_F(ResourceMonitorTest, ThrottlerPersistence)):
(TestWebKitAPI::TEST_F(ResourceMonitorTest, ThrottlerCreateAndDelete)):
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::configureWebsiteDataStoreTemporaryDirectories):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to