Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0951ebda6a7aa5edba8cfb11e83d4aa1c6a893ce
      
https://github.com/WebKit/WebKit/commit/0951ebda6a7aa5edba8cfb11e83d4aa1c6a893ce
  Author: Ben Nham <[email protected]>
  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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to