Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 53f9008a438290492ab7cf44e50f9102b8e18f56
https://github.com/WebKit/WebKit/commit/53f9008a438290492ab7cf44e50f9102b8e18f56
Author: Jer Noble <[email protected]>
Date: 2026-03-03 (Tue, 03 Mar 2026)
Changed paths:
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/platform/graphics/MediaPlayer.cpp
M Source/WebCore/platform/graphics/MediaPlayer.h
M
Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp
M
Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h
M
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
A
Tools/TestWebKitAPI/Tests/WebCore/cocoa/MediaPlayerPrivateAVFoundationObjCTests.mm
Log Message:
-----------
[Cocoa] Add IsAudible test for 308503@main
rdar://171583006
https://bugs.webkit.org/show_bug.cgi?id=309033
Reviewed by Jean-Yves Avenard.
Add a test for the behavior fixed by 308503@main, where depending upon the
order in which
setMuted() and setVolume() were called, the MediaPlayer PrivateAVFoundationObjC
object would not
update whether it was audible.
To do so, give default implementations to (nearly) all the methods in
MediaPlayerClient, which makes
writing unit tests for MediaPlayer very simple. Additionally, add a type traits
macro to
MediaPlayerPrivateAVFoundationObjC to enable the test code to safely cast to
that type from
MediaPlayerPrivateInterface.
Tests: Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
Tools/TestWebKitAPI/Tests/WebCore/cocoa/MediaPlayerPrivateAVFoundationObjCTests.mm
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayerClient::mediaContentTypesRequiringHardwareSupport const):
(WebCore::MediaPlayerClient::allowedMediaContainerTypes const):
(WebCore::MediaPlayerClient::allowedMediaCodecTypes const):
(WebCore::MediaPlayerClient::allowedMediaVideoCodecIDs const):
(WebCore::MediaPlayerClient::allowedMediaAudioCodecIDs const):
(WebCore::MediaPlayerClient::allowedMediaCaptionFormatTypes const):
(WebCore::MediaPlayerClient::mediaPlayerCreateResourceLoader):
(WebCore::nullLogger): Deleted.
* Source/WebCore/platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerNetworkStateChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerReadyStateChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerVolumeChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerMuteChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerSeeked): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerTimeChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerDurationChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerRateChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerPlaybackStateChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerResourceNotSupported): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerRepaint): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerSizeChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerEngineUpdated): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerFirstVideoFrameAvailable): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerCharacteristicChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerRenderingCanBeAccelerated): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerRenderingModeChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerAcceleratedCompositingEnabled): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerActiveSourceBuffersChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerKeyNeeded): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerMediaKeysStorageDirectory const):
Deleted.
(WebCore::MediaPlayerClient::mediaPlayerInitializationDataEncountered): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerWaitingForKeyChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerCurrentPlaybackTargetIsWirelessChanged):
Deleted.
(WebCore::MediaPlayerClient::mediaPlayerWillInitializeMediaEngine): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerDidInitializeMediaEngine): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerReferrer const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerUserAgent const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerIsFullscreen const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerIsFullscreenPermitted const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerIsVideo const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerContentBoxRect const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerContentsScale const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerPlatformVolumeConfigurationRequired
const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerIsLooping const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerCachedResourceLoader const): Deleted.
(WebCore::MediaPlayerClient::doesHaveAttribute const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerShouldUsePersistentCache const):
Deleted.
(WebCore::MediaPlayerClient::mediaPlayerMediaCacheDirectory const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerDidAddAudioTrack): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerDidAddTextTrack): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerDidAddVideoTrack): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerDidRemoveAudioTrack): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerDidRemoveTextTrack): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerDidRemoveVideoTrack): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerDidReportGPUMemoryFootprint): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerReloadAndResumePlaybackIfNeeded):
Deleted.
(WebCore::MediaPlayerClient::textTrackRepresentationBoundsChanged): Deleted.
(WebCore::MediaPlayerClient::outOfBandTrackSources): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerNetworkInterfaceName const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerGetRawCookies const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerSourceApplicationIdentifier const):
Deleted.
(WebCore::MediaPlayerClient::mediaPlayerElementId const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerEngineFailedToLoad): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerRequestedPlaybackRate const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerFullscreenMode const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerIsVideoFullscreenStandby const):
Deleted.
(WebCore::MediaPlayerClient::mediaPlayerPreferredAudioCharacteristics const):
Deleted.
(WebCore::MediaPlayerClient::mediaPlayerShouldDisableSleep const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerShouldCheckHardwareSupport const):
Deleted.
(WebCore::MediaPlayerClient::mediaPlayerBufferedTimeRangesChanged): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerSeekableTimeRangesChanged): Deleted.
(WebCore::MediaPlayerClient::documentSecurityOrigin const): Deleted.
(WebCore::MediaPlayerClient::audioOutputDeviceId const): Deleted.
(WebCore::MediaPlayerClient::audioOutputDeviceIdOverride const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerQueueTaskOnEventLoop): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerOnNewVideoFrameMetadata): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerShouldDisableHDR const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerVideoLayerSize const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerVideoLayerSizeDidChange): Deleted.
(WebCore::MediaPlayerClient::isGStreamerHolePunchingEnabled const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerVideoTarget const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerSoundStageSize const): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerLogIdentifier): Deleted.
(WebCore::MediaPlayerClient::canShowWhileLocked const): Deleted.
*
Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::setHasAudio):
*
Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
*
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
(isType):
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
*
Tools/TestWebKitAPI/Tests/WebCore/cocoa/MediaPlayerPrivateAVFoundationObjCTests.mm:
Added.
(TestWebKitAPI::MediaPlayerPrivateAVFoundationObjCTest::mediaPlayerClientIdentifier
const):
(TestWebKitAPI::MediaPlayerPrivateAVFoundationObjCTest::playerPrivate const):
(TestWebKitAPI::MediaPlayerPrivateAVFoundationObjCTest::videoWithAudioURL
const):
(TestWebKitAPI::MediaPlayerPrivateAVFoundationObjCTest::videoWithoutAudioURL
const):
(TestWebKitAPI::MediaPlayerPrivateAVFoundationObjCTest::waitForReadyStateGreaterThan):
(TestWebKitAPI::TEST_F(MediaPlayerPrivateAVFoundationObjCTest, Basic)):
(TestWebKitAPI::TEST_F(MediaPlayerPrivateAVFoundationObjCTest, IsAudible)):
(TestWebKitAPI::TEST_F(MediaPlayerPrivateAVFoundationObjCTest,
IsAudibleSilentVideo)):
Canonical link: https://commits.webkit.org/308568@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications