Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d10f7ce53734b9bb35b3b3783ddf0f19b5559eed
https://github.com/WebKit/WebKit/commit/d10f7ce53734b9bb35b3b3783ddf0f19b5559eed
Author: Jessica Cheung <[email protected]>
Date: 2025-09-30 (Tue, 30 Sep 2025)
Changed paths:
M Source/WebCore/PAL/pal/cocoa/ScreenTimeSoftLink.h
M Source/WebCore/PAL/pal/cocoa/ScreenTimeSoftLink.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
M Tools/TestWebKitAPI/Tests/WebKitCocoa/ScreenTime.mm
Log Message:
-----------
[Screen Time] Unexpected power usage due to ScreenTimeWebExtension performing
CA Commits when invisible
https://bugs.webkit.org/show_bug.cgi?id=299634
rdar://156520177
Reviewed by Tim Horton and Aditya Keerthi.
ScreenTimeWebExtension is performing more CA commits when
not rendering, than expected. As a result, there is more power usage
than anticipated.
As a temporary solution, only install the STWebpageController for
managed-users. This is achieved by using STScreenTimeConfigurationObserver
to observe the enforcesChildRestrictions property.
* Source/WebCore/PAL/pal/cocoa/ScreenTimeSoftLink.h:
* Source/WebCore/PAL/pal/cocoa/ScreenTimeSoftLink.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _installScreenTimeWebpageControllerIfNeeded]):
(-[WKWebView _uninstallScreenTimeWebpageController]):
(-[WKWebView observeValueForKeyPath:ofObject:change:context:]):
(-[WKWebView _screenTimeConfigurationObserver]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
Change all API tests to set enforcesChildRestrictions to YES after the
WKWebView is created but before _installScreenTimeWebpageControllerIfNeeded
is called. In a follow-up PR, I will be adding a KVO API test for
enforcesChildRestrictions.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/ScreenTime.mm:
(swizzleEnforcesChildRestrictions):
(testSuppressUsageRecordingWithDataStore):
(testShowsSystemScreenTimeBlockingView):
(testWebContentIsNotClickableShowingSystemScreenTimeBlockingView):
(TEST(ScreenTime, IsBlockedByScreenTimeTrue)):
(TEST(ScreenTime, IsBlockedByScreenTimeFalse)):
(TEST(ScreenTime, IsBlockedByScreenTimeMultiple)):
(TEST(ScreenTime, IsBlockedByScreenTimeKVO)):
(TEST(ScreenTime, IdentifierNil)):
(TEST(ScreenTime, IdentifierString)):
(TEST(ScreenTime, IdentifierStringWithRemoveData)):
(TEST(ScreenTime, WKWebViewFillsStackView)):
(TEST(ScreenTime, URLIsPlayingVideo)):
(TEST(ScreenTime, URLIsPictureInPicture)):
(TEST(ScreenTime, FetchData)):
(TEST(ScreenTime, RemoveDataWithTimeInterval)):
(TEST(ScreenTime, RemoveData)):
(TEST(ScreenTime, OffscreenSystemScreenTimeBlockingView)):
(TEST(ScreenTime, OffscreenBlurredScreenTimeBlockingView)):
(TEST(ScreenTime, DoNotDonateURLsInOccludedWebView)):
(TEST(ScreenTime, CreateControllerAfterOffscreenWebViewBecomesInWindow)):
(TEST(ScreenTime,
ScreenTimeControllerSetsURLWhenOffscreenWebViewBecomesInWindow)):
(TEST(ScreenTime, ScreenTimeControllerInstalledAfterRestoreFromSessionState)):
(TEST(ScreenTime, ScreenTimeControllerViewOnlyInstalledForHTTPFamily)):
(TEST(ScreenTime, ScreenTimeControllerNotInstalledForNoChildRestrictions)):
Canonical link: https://commits.webkit.org/300778@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