[webkit-changes] [WebKit/WebKit] 8b8745: Introduce iframe resource monitoring.
Basuke Suzuki
noreply at github.com
Wed Dec 11 06:54:44 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8b87453fe510be3928eefdb1dc1995632915525c
https://github.com/WebKit/WebKit/commit/8b87453fe510be3928eefdb1dc1995632915525c
Author: Basuke Suzuki <basuke at apple.com>
Date: 2024-12-11 (Wed, 11 Dec 2024)
Changed paths:
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/contentextensions/ContentExtensionsBackend.cpp
M Source/WebCore/contentextensions/ContentExtensionsBackend.h
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/loader/DocumentLoader.cpp
M Source/WebCore/loader/ResourceLoadInfo.h
M Source/WebCore/loader/ResourceLoader.cpp
M Source/WebCore/loader/ResourceLoader.h
A Source/WebCore/loader/ResourceMonitor.cpp
A Source/WebCore/loader/ResourceMonitor.h
A Source/WebCore/loader/ResourceMonitorChecker.cpp
A Source/WebCore/loader/ResourceMonitorChecker.h
M Source/WebCore/page/LocalFrame.cpp
M Source/WebCore/page/LocalFrame.h
Log Message:
-----------
Introduce iframe resource monitoring.
https://bugs.webkit.org/show_bug.cgi?id=284198
rdar://137691088
Reviewed by Ben Nham.
Introduce new feature to monitor resource usage of iframe and its subresources.
The new class ResourceMonitor is the class to manage resource usage and existing
classes cooperate to send update to the class.
Monitoring is initiated by using ContentExtensionsBackend's ContentRuleList against
the urls of main frame document and subresources.
The feature is off by default.
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/contentextensions/ContentExtensionsBackend.cpp:
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForResourceMonitoring):
* Source/WebCore/contentextensions/ContentExtensionsBackend.h:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::resourceMonitor):
(WebCore::Document::setResourceMonitor):
(WebCore::Document::parentResourceMonitor):
* Source/WebCore/dom/Document.h:
* Source/WebCore/loader/DocumentLoader.cpp:
(WebCore::shouldEnableResourceMonitor):
(WebCore::DocumentLoader::commitData):
* Source/WebCore/loader/ResourceLoadInfo.h:
(WebCore::ContentExtensions::ResourceLoadInfo::isolatedCopy const):
(WebCore::ContentExtensions::ResourceLoadInfo::isolatedCopy):
* Source/WebCore/loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::didReceiveResponse):
(WebCore::ResourceLoader::didReceiveBuffer):
(WebCore::ResourceLoader::resourceMonitor):
* Source/WebCore/loader/ResourceLoader.h:
* Source/WebCore/loader/ResourceMonitor.cpp: Added.
(WebCore::networkUsageThresholdWithRandomNoise):
(WebCore::ResourceMonitor::create):
(WebCore::ResourceMonitor::ResourceMonitor):
(WebCore::ResourceMonitor::setEligibility):
(WebCore::ResourceMonitor::didReceiveResponse):
(WebCore::ResourceMonitor::addNetworkUsage):
(WebCore::ResourceMonitor::checkNetworkUsageExcessIfNecessary):
(WebCore::ResourceMonitor::protectedFrame const):
(WebCore::ResourceMonitor::parentResourceMonitor const):
* Source/WebCore/loader/ResourceMonitor.h: Added.
* Source/WebCore/loader/ResourceMonitorChecker.cpp: Added.
(WebCore::ResourceMonitorChecker::singleton):
(WebCore::ResourceMonitorChecker::ResourceMonitorChecker):
(WebCore::ResourceMonitorChecker::checkEligibility):
(WebCore::ResourceMonitorChecker::checkEligibilityForTesting):
(WebCore::ResourceMonitorChecker::checkEligibilityWithLock):
(WebCore::ResourceMonitorChecker::setContentRuleList):
* Source/WebCore/loader/ResourceMonitorChecker.h: Added.
* Source/WebCore/page/LocalFrame.cpp:
(WebCore::LocalFrame::networkUsageDidExceedThreshold):
(WebCore::LocalFrame::showResourceMonitoringError):
* Source/WebCore/page/LocalFrame.h:
Canonical link: https://commits.webkit.org/287667@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list