[webkit-changes] [WebKit/WebKit] cac2e6: Legacy EME WebKitMediaKeys createSessions unknown ...

Eric Carlson noreply at github.com
Mon Mar 4 12:47:01 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cac2e6433cf382126d1d9202d8e74180017df218
      https://github.com/WebKit/WebKit/commit/cac2e6433cf382126d1d9202d8e74180017df218
  Author: Eric Carlson <eric.carlson at apple.com>
  Date:   2024-03-04 (Mon, 04 Mar 2024)

  Changed paths:
    M Source/WebCore/html/HTMLMediaElement.cpp
    M Source/WebCore/platform/graphics/MediaPlayer.cpp
    M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h
    M Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm

  Log Message:
  -----------
  Legacy EME WebKitMediaKeys createSessions unknown error
https://bugs.webkit.org/show_bug.cgi?id=262874
rdar://116689080

Reviewed by Jer Noble.

If a media resource protected with the legacy EME API loads very quickly, the media player
in GPU process may try to generate a key request before the HTMLMediaElement in the web
process has signaled it is OK to continue after a key request. Have HTMLMediaElement
call player->setShouldContinueAfterKeyNeeded as soon as the media player is allocaged so
it will know before media data loading begins.

No new test added because the problem is extremely timing dependent and I was never able
to reproduce in a layout test.

* Source/WebCore/html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::createMediaPlayer): Call updateShouldContinueAfterNeedKey.

* Source/WebCore/platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::loadWithNextMediaEngine): Call shouldWaitForLoadingOfResource.
(WebCore::MediaPlayer::setShouldContinueAfterKeyNeeded):

* Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC): Add logging.
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource): Check
m_shouldContinueAfterKeyNeeded instead of calling up to the player.
(WebCore::MediaPlayerPrivateAVFoundationObjC::didCancelLoadingRequest): Add logging.
(WebCore::MediaPlayerPrivateAVFoundationObjC::didStopLoadingRequest): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldContinueAfterKeyNeeded): Check
m_shouldContinueAfterKeyNeeded instead of calling up to the player.
(WebCore::MediaPlayerPrivateAVFoundationObjC::keyAdded): Add logging.

Canonical link: https://commits.webkit.org/275647@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list