Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 74481ec4b07546952d73c80f973f5f2f08a30841
      
https://github.com/WebKit/WebKit/commit/74481ec4b07546952d73c80f973f5f2f08a30841
  Author: Jer Noble <[email protected]>
  Date:   2023-05-27 (Sat, 27 May 2023)

  Changed paths:
    M LayoutTests/platform/ios/TestExpectations
    M LayoutTests/platform/mac/TestExpectations
    M 
Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp
    M 
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h
    M 
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
    M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp
    M Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp
    M Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerState.h
    M Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerState.serialization.in

  Log Message:
  -----------
  REGRESSION(262863@main) [Cocoa] video.buffered ranges are always empty; 
breaks Shaka Player
https://bugs.webkit.org/show_bug.cgi?id=257400
rdar://108202807

Reviewed by Eric Carlson and Jean-Yves Avenard.

In 262863@main, a change was made to no longer create TimeRanges and 
PlatformTimeRanges objects
in the course of returning bufferedRanges(). However, in so doing, development 
code was left in
the patch which would always return empty ranges from 
MediaPlayerPrivateAVFoundation::buffered().
Additionally, existing code that cleared buffered ranges from 
RemoteMediaPlayerState was changed
in such a ways as subsequent updates would always get empty ranges. The test 
which would have
caught this breakage has been disabled since 2013 (143932@main).

Re-enable the media/video-buffered.html test.

Don't re-create m_buffered every time a client calls 
platformBufferedTimeRanges(). Instead, re-create
m_buffered only when loadedTimeRangesDidChange(). Send an optional<> buffered 
range across the GPU
process boundary in RemoteMediaPlayerState, and only update 
MediaplayerPrivateRemote's buffered
value when the state has a valid buffered range.

* LayoutTests/platform/ios/TestExpectations:
* LayoutTests/platform/mac/TestExpectations:
* 
Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::buffered const):
* 
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* 
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformBufferedTimeRanges const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::platformMaxTimeLoaded const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::loadedTimeRangesDidChange):
* Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::sendCachedState):
* Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::updateCachedState):
* Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerState.h:
* Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerState.serialization.in:

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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to