[webkit-changes] [WebKit/WebKit] 0951eb: Add memory footprint notification callbacks

bnham noreply at github.com
Thu Feb 15 08:05:56 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0951ebda6a7aa5edba8cfb11e83d4aa1c6a893ce
      https://github.com/WebKit/WebKit/commit/0951ebda6a7aa5edba8cfb11e83d4aa1c6a893ce
  Author: Ben Nham <nham at apple.com>
  Date:   2024-02-15 (Thu, 15 Feb 2024)

  Changed paths:
    M Source/WTF/wtf/MemoryPressureHandler.cpp
    M Source/WTF/wtf/MemoryPressureHandler.h
    M Source/WebKit/Shared/WebProcessCreationParameters.h
    M Source/WebKit/Shared/WebProcessCreationParameters.serialization.in
    M Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp
    M Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h
    M Source/WebKit/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h
    M Source/WebKit/UIProcess/WebProcessPool.cpp
    M Source/WebKit/UIProcess/WebProcessProxy.cpp
    M Source/WebKit/UIProcess/WebProcessProxy.h
    M Source/WebKit/UIProcess/WebProcessProxy.messages.in
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreClient.h
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
    M Source/WebKit/WebProcess/WebProcess.cpp
    M Tools/TestWebKitAPI/SourcesCocoa.txt
    M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
    A Tools/TestWebKitAPI/Tests/WebKitCocoa/MemoryFootprintThreshold.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/SnapshotStore.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKPageHasMediaStreamingActivity.mm

  Log Message:
  -----------
  Add memory footprint notification callbacks
https://bugs.webkit.org/show_bug.cgi?id=269317
rdar://problem/122908959

Reviewed by Brady Eidson.

We want to observe when sites in the field exceed various key memory footprint thresholds (e.g. 2GB,
4GB, etc.). To do this, we let the embedder specify those thresholds in _WKProcessPoolConfiguration.
We also add a _WKWebsiteDataStore delegate method that is called when WebContent's footprint exceeds
those thresholds.

Theis notification only works on the Mac, since they require the use of the periodic memory monitor
(which is only enabled on Mac).

* Source/WTF/wtf/MemoryPressureHandler.cpp:
(WTF::MemoryPressureHandler::setMemoryFootprintPollIntervalForTesting):
(WTF::MemoryPressureHandler::setMemoryFootprintNotificationThresholds):
(WTF::MemoryPressureHandler::measurementTimerFired):
* Source/WTF/wtf/MemoryPressureHandler.h:
* Source/WebKit/Shared/WebProcessCreationParameters.h:
* Source/WebKit/Shared/WebProcessCreationParameters.serialization.in:
* Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
* Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration setMemoryFootprintPollIntervalForTesting:]):
(-[_WKProcessPoolConfiguration memoryFootprintPollIntervalForTesting]):
(-[_WKProcessPoolConfiguration memoryFootprintNotificationThresholds]):
(-[_WKProcessPoolConfiguration setMemoryFootprintNotificationThresholds:]):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h:
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::initializeNewWebProcess):
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didExceedMemoryFootprintThreshold):
* Source/WebKit/UIProcess/WebProcessProxy.h:
* Source/WebKit/UIProcess/WebProcessProxy.messages.in:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreClient.h:
(WebKit::WebsiteDataStoreClient::didExceedMemoryFootprintThreshold):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
(WebKit::WebsiteDataStoreConfiguration::setMemoryFootprintNotificationThresholds):
(WebKit::WebsiteDataStoreConfiguration::memoryFootprintNotificationThresholds):
* Source/WebKit/WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/MemoryFootprintThreshold.mm: Added.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewSuspendAllMediaPlayback.mm:

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




More information about the webkit-changes mailing list