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