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

Reply via email to