Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d03d3a51627299d0e4de746b80889edf43fe93a5 https://github.com/WebKit/WebKit/commit/d03d3a51627299d0e4de746b80889edf43fe93a5 Author: Jean-Yves Avenard <j...@apple.com> Date: 2024-06-12 (Wed, 12 Jun 2024)
Changed paths: A LayoutTests/media/picture-in-picture/video-playback-system-interruption-and-resume-expected.txt A LayoutTests/media/picture-in-picture/video-playback-system-interruption-and-resume.html M Source/WebCore/platform/audio/PlatformMediaSession.cpp M Source/WebCore/platform/audio/PlatformMediaSession.h M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp Log Message: ----------- REGRESSION (275831@main): Music video can't be played after tapping music video in Music app https://bugs.webkit.org/show_bug.cgi?id=275391 rdar://128055030 Reviewed by Jer Noble. Commit 275831@main exposed two long-standing and existing issue: 1- When the video is paused following a system interruption, currentTime can continue to progress despite the new video rate being 0. 2- The HTMLMediaElement can incorrectly resume playback of a paused video. 1) was due to MediaPlayerPrivateAVFObjC::paused() returning false as it only checks if the AVPlayer status was AVPlayerTimeControlStatusPaused. This caused the default `timeIsProgressing()` implementation to return true ; hence the time estimation in the content process to continue. 2) When the PlatformMediaSession was receiving an interruption notification, it would be ignored on start, but not on end, which would resume playback. Add test. * LayoutTests/media/picture-in-picture/video-playback-system-interruption-and-resume-expected.txt: Added. * LayoutTests/media/picture-in-picture/video-playback-system-interruption-and-resume.html: Added. * Source/WebCore/platform/audio/PlatformMediaSession.cpp: (WebCore::PlatformMediaSession::activeInterruptionCount const): We add a flag indicating if the notification was ignored, in order to determine if playback needs to be resumed later. (WebCore::PlatformMediaSession::interruptionType const): (WebCore::PlatformMediaSession::beginInterruption): (WebCore::PlatformMediaSession::endInterruption): (WebCore::PlatformMediaSession::blockedBySystemInterruption const): * Source/WebCore/platform/audio/PlatformMediaSession.h: Add method. (WebCore::PlatformMediaSession::interruptionCount const): Deleted. * Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: * Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: (WebKit::MediaPlayerPrivateRemote::rateChanged): Add logging Canonical link: https://commits.webkit.org/279977@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes