Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8b87453fe510be3928eefdb1dc1995632915525c
      
https://github.com/WebKit/WebKit/commit/8b87453fe510be3928eefdb1dc1995632915525c
  Author: Basuke Suzuki <[email protected]>
  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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to