[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