Title: [257711] trunk
Revision
257711
Author
[email protected]
Date
2020-03-02 07:54:29 -0800 (Mon, 02 Mar 2020)

Log Message

[GPUP] Plumb through more MediaPlayer methods
https://bugs.webkit.org/show_bug.cgi?id=208423
<rdar://problem/59924386>

Reviewed by Youenn Fablet.

Source/WebCore:

No new tests, unskipped ~1200 existing media tests.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerPause): Deleted.
(WebCore::HTMLMediaElement::mediaPlayerPlay): Deleted.
* html/HTMLMediaElement.h:

* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerContentsScale const):
(WebCore::MediaPlayerClient::mediaPlayerPause): Deleted.
(WebCore::MediaPlayerClient::mediaPlayerPlay): Deleted.

Source/WebKit:

* GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
(WebKit::RemoteMediaPlayerManagerProxy::updateVideoFullscreenInlineImage): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setVideoFullscreenFrame): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setVideoFullscreenGravity): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setVideoFullscreenMode): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setVolume): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::setBufferingPolicy): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::videoFullscreenStandbyChanged): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::accessLog): Deleted.
(WebKit::RemoteMediaPlayerManagerProxy::errorLog): Deleted.
* GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
* GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:
* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::mediaPlayerPause): Deleted.
(WebKit::RemoteMediaPlayerProxy::mediaPlayerPlay): Deleted.
* GPUProcess/media/RemoteMediaPlayerProxy.h:

LayoutTests:

* gpu-process/TestExpectations: Unskip ~1200 media tests.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (257710 => 257711)


--- trunk/LayoutTests/ChangeLog	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/LayoutTests/ChangeLog	2020-03-02 15:54:29 UTC (rev 257711)
@@ -1,3 +1,13 @@
+2020-03-02  Eric Carlson  <[email protected]>
+
+        [GPUP] Plumb through more MediaPlayer methods
+        https://bugs.webkit.org/show_bug.cgi?id=208423
+        <rdar://problem/59924386>
+
+        Reviewed by Youenn Fablet.
+
+        * gpu-process/TestExpectations: Unskip ~1200 media tests.
+
 2020-03-02  Rob Buis  <[email protected]>
 
         Add referrerpolicy attribute support for anchors

Modified: trunk/LayoutTests/gpu-process/TestExpectations (257710 => 257711)


--- trunk/LayoutTests/gpu-process/TestExpectations	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/LayoutTests/gpu-process/TestExpectations	2020-03-02 15:54:29 UTC (rev 257711)
@@ -178,54 +178,203 @@
 legacy-animation-engine/imported/blink/compositing/squashing/remove-from-grouped-mapping-on-reassignment.html [ Skip ]
 inspector/layers/layers-compositing-reasons.html [ Skip ]
 
-media [ Skip ]
-media/media-controller.html [ Pass ]
-media/media-preload-no-delay-loadevent.html [ Pass ]
-media/video-src.html [ Pass ]
-media/video-src-blob-using-open-panel.html [ Pass ]
-media/video-source.html [ Pass ]
-media/audio-as-video-fullscreen.html [ Pass ]
-media/audio-background-playback-playlist.html [ Pass ]
-media/audio-concurrent-supported.html [ Pass ]
-media/audio-constructor-preload.html [ Pass ]
-media/audio-constructor-src.html [ Pass ]
-media/audio-constructor.html [ Pass ]
-media/audio-controls-do-not-fade-out.html [ Pass ]
-media/audio-controls-timeline-in-media-document.html [ Pass ]
-media/audio-dealloc-crash.html [ Pass ]
-media/audio-delete-while-slider-thumb-clicked.html [ Pass ]
-media/audio-garbage-collect.html [ Pass ]
-media/audio-mpeg-supported.html [ Pass ]
-media/audio-mpeg4-supported.html [ Pass ]
-media/audio-no-installed-engines.html [ Pass ]
-media/audio-only-video-intrinsic-size.html [ Pass ]
-media/audio-play-event.html [ Pass ]
-media/audio-play-with-video-element.html [ Pass ]
-media/audio-play.html [ Pass ]
-media/audio-playback-restriction-autoplay.html [ Pass ]
-media/audio-playback-restriction-play-muted.html [ Pass ]
-media/audio-playback-restriction-play.html [ Pass ]
-media/audio-playback-restriction-removed-muted.html [ Pass ]
-media/audio-playback-volume-changes-with-restrictions-and-user-gestures.html [ Pass ]
-media/audio-playback-volume-changes-with-restrictions.html [ Pass ]
-media/deactivate-audio-session.html [ Pass ]
-media/media-can-play-mpeg-audio.html [ Pass ]
-media/media-can-play-wav-audio.html [ Pass ]
-media/media-document-audio-controls-visible.html [ Pass ]
-media/media-document-audio-repaint.html [ Pass ]
-media/media-document-audio-size.html [ Pass ]
-media/muted-video-is-playing-audio.html [ Pass ]
-media/restricted-audio-playback-with-document-gesture.html [ Pass ]
-media/restricted-audio-playback-with-multiple-settimeouts.html [ Pass ]
-media/video-controls-visible-audio-only.html [ Pass ]
-media/video-play-audio-require-user-gesture.html [ Pass ]
-media/track/audio-track.html [ Pass ]
-media/track/video-track-add-remove.html [ Pass ]
-media/track/video-track-alternate-groups.html [ Pass ]
-media/track/video-track-addition-and-frame-removal.html [ Pass ]
-media/track/video-track.html [ Pass ]
 
-media/track/track-in-band.html [ Pass ]
+media/airplay-allows-buffering.html [ Skip ]
+media/airplay-autoplay.html [ Skip ]
+media/audio-background-playback-playlist.html [ Skip ]
+media/audio-controls-rendering.html [ Skip ]
+media/audio-delete-while-step-button-clicked.html [ Skip ]
+media/audio-repaint.html [ Skip ]
+media/click-placeholder-not-pausing.html [ Skip ]
+media/context-menu-actions.html [ Skip ]
+media/controls-strict.html [ Skip ]
+media/controls-styling-strict.html [ Skip ]
+media/controls-without-preload.html [ Skip ]
+media/controls/airplay-controls.html [ Skip ]
+media/controls/inline-elements-dropoff-order.html [ Skip ]
+media/controls/picture-in-picture.html [ Skip ]
+media/controls/pip-placeholder-without-video-controls.html [ Skip ]
+media/deactivate-audio-session.html [ Skip ]
+media/element-containing-pip-video-going-into-fullscreen.html [ Skip ]
+media/fullscreen-api-enabled-media-with-presentation-mode.html [ Skip ]
+
+media/encrypted-media/clearKey [ Skip ]
+
+media/encrypted-media/encrypted-media-events.html [ Skip ]
+media/encrypted-media/encrypted-media-not-loaded.html [ Skip ]
+media/encrypted-media/encrypted-media-syntax.html [ Skip ]
+media/encrypted-media/mock-MediaKeySession-remove.html [ Skip ]
+media/encrypted-media/mock-MediaKeySystemAccess.html [ Skip ]
+
+media/ios/video-volume-ios-quirk.html [ Skip ]
+media/media-can-play-flac-audio.html [ Skip ]
+media/media-can-play-ogg.html [ Skip ]
+media/media-controls-invalid-url.html [ Skip ]
+media/media-controls-play-button-updates.html [ Skip ]
+media/media-fullscreen-loop-inline.html [ Skip ]
+media/media-fullscreen-pause-inline.html [ Skip ]
+media/media-fullscreen-return-to-inline.html [ Skip ]
+media/media-higher-prio-audio-stream.html [ Skip ]
+
+media/media-source [ Skip ]
+
+media/media-volume-slider-rendered-below.html [ Skip ]
+media/media-volume-slider-rendered-normal.html [ Skip ]
+
+media/modern-media-controls/airplay-support/airplay-support.html [ Skip ]
+media/modern-media-controls/audio/audio-controls-styles.html [ Skip ]
+media/modern-media-controls/controls-visibility-support/controls-visibility-support-fullscreen-on-video.html [ Skip ]
+media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-constructor.html [ Skip ]
+media/modern-media-controls/media-controller/ios/media-controller-ios-do-not-hide-controls-when-tapping-button.html [ Skip ]
+media/modern-media-controls/media-controller/ios/media-controller-ios-layout-traits-modern-compatibility-mode.html [ Skip ]
+media/modern-media-controls/media-controller/ios/media-controller-ios-only-enable-tap-gesture-recognizer-with-fades-when-idle.html [ Skip ]
+media/modern-media-controls/media-controller/ios/media-controller-scale-factor-audio.html [ Skip ]
+media/modern-media-controls/media-controller/ios/media-controller-scale-factor.html [ Skip ]
+media/modern-media-controls/media-controller/ios/media-controller-stop-updates-in-fullscreen.html [ Skip ]
+media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-enter-over-controls-bar.html [ Skip ]
+media/modern-media-controls/media-controller/media-controller-fade-controls-when-entering-fullscreen.html [ Skip ]
+media/modern-media-controls/media-controller/media-controller-fullscreen-change.html [ Skip ]
+media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline.html [ Skip ]
+media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-pip-to-inline.html [ Skip ]
+media/modern-media-controls/media-controller/media-controller-video-with-only-audio.html [ Skip ]
+media/modern-media-controls/media-documents/background-color-and-centering.html [ Skip ]
+media/modern-media-controls/media-documents/media-document-audio-ios-sizing.html [ Skip ]
+media/modern-media-controls/media-documents/media-document-video-iphone-sizing.html [ Skip ]
+media/modern-media-controls/pip-support/pip-support-click.html [ Skip ]
+media/modern-media-controls/pip-support/pip-support-enabled.html [ Skip ]
+media/modern-media-controls/placard-support/ipad/placard-support-pip.html [ Skip ]
+media/modern-media-controls/placard-support/placard-support-airplay-fullscreen-no-controls.html [ Skip ]
+media/modern-media-controls/placard-support/placard-support-airplay-fullscreen.html [ Skip ]
+media/modern-media-controls/placard-support/placard-support-airplay.html [ Skip ]
+media/modern-media-controls/placard-support/placard-support-pip.html [ Skip ]
+media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag.html [ Skip ]
+media/modern-media-controls/start-support/start-support-fullscreen.html [ Skip ]
+media/modern-media-controls/tracks-support/tracks-support-off-text-track.html [ Skip ]
+
+media/muted-video-is-playing-audio.html [ Skip ]
+media/navigate-with-pip-should-not-crash.html [ Skip ]
+media/picture-in-picture/picture-in-picture-api-css-selector.html [ Skip ]
+media/picture-in-picture/picture-in-picture-api-enter-pip-4.html [ Skip ]
+media/picture-in-picture/picture-in-picture-api-events.html [ Skip ]
+media/picture-in-picture/picture-in-picture-api-exit-pip-1.html [ Skip ]
+media/picture-in-picture/picture-in-picture-api-pip-window.html [ Skip ]
+media/picture-in-picture/picture-in-picture-interruption.html [ Skip ]
+media/pip-video-going-into-fullscreen.html [ Skip ]
+media/presentationmodechanged-fired-once.html [ Skip ]
+media/progress-events-generated-correctly.html [ Skip ]
+media/remoteplayback-prompt.html [ Skip ]
+
+media/session [ Skip ]
+
+media/track/audio/audio-track-mkv-vorbis-addtrack.html [ Skip ]
+media/track/audio/audio-track-mkv-vorbis-enabled.html [ Skip ]
+media/track/audio/audio-track-mkv-vorbis-language.html [ Skip ]
+
+media/track/in-band [ Skip ]
+
+media/track/opera/idl/media-idl-tests.html [ Skip ]
+
+media/track/regions-webvtt/vtt-region-display.html [ Skip ]
+
+media/track/texttrackcue/texttrackcue-displaycue.html [ Skip ]
+media/track/track-cue-css.html [ Skip ]
+media/track/track-cue-missing.html [ Skip ]
+media/track/track-cue-rendering-vertical.html [ Skip ]
+media/track/track-cue-rendering.html [ Skip ]
+media/track/track-cues-pause-on-exit.html  [ Skip ]
+media/track/track-forced-subtitles-in-band.html [ Skip ]
+media/track/track-in-band-mode.html [ Skip ]
+media/track/track-in-band-subtitles-too-large.html [ Skip ]
+media/track/track-long-word-container-sizing.html [ Skip ]
+media/track/track-prefer-captions.html [ Skip ]
+media/track/track-user-preferences.html [ Skip ]
+media/track/video/video-track-mkv-theora-addtrack.html [ Skip ]
+media/track/video/video-track-mkv-theora-language.html [ Skip ]
+media/track/video/video-track-mkv-theora-selected.html [ Skip ]
+media/track/w3c/interfaces/TextTrackCue/align.html [ Skip ]
+media/track/w3c/track/webvtt/audio_has_no_subtitles.html [ Skip ]
+media/track/w3c/track/webvtt/audio_has_no_subtitles.html [ Skip ]
+
+media/track/opera/interfaces/HTMLElement/HTMLMediaElement/crossOrigin.html [ Skip ]
+media/track/opera/interfaces/HTMLElement/HTMLTrackElement/kind.html [ Skip ]
+media/track/opera/interfaces/HTMLElement/HTMLTrackElement/src.html [ Skip ]
+media/track/opera/interfaces/TextTrackCue/getCueAsHTML.html [ Skip ]
+media/track/opera/interfaces/TextTrackCue/line.html [ Skip ]
+media/track/opera/interfaces/TextTrackCue/snapToLines.html [ Skip ]
+media/track/opera/interfaces/TextTrackCue/text.html [ Skip ]
+media/track/opera/interfaces/TextTrackCue/vertical.html [ Skip ]
+media/track/opera/track/webvtt/parsing-cue-data/tests/entities.html [ Skip ]
+media/track/opera/track/webvtt/parsing-cue-data/tests/tags.html [ Skip ]
+media/track/opera/track/webvtt/parsing-cue-data/tests/timestamps.html [ Skip ]
+media/track/opera/track/webvtt/parsing-cue-data/tests/tree-building.html [ Skip ]
+media/track/opera/track/webvtt/parsing/001.html [ Skip ]
+media/track/opera/track/webvtt/rendering/adhoc/12345_timestamps.html [ Skip ]
+media/track/opera/track/webvtt/rendering/adhoc/cue_font_size_transition.html [ Skip ]
+media/track/opera/track/webvtt/rendering/adhoc/voice_with_evil_timestamp.html [ Skip ]
+
+media/video-background-playback.html [ Skip ]
+media/video-canvas-createPattern.html [ Skip ]
+media/video-canvas-drawing-output.html [ Skip ]
+media/video-canvas.html [ Skip ]
+media/video-colorspace-yuv420.html [ Skip ]
+media/video-colorspace-yuv422.html [ Skip ]
+media/video-concurrent-playback.html [ Skip ]
+media/video-concurrent-visible-playback.html [ Skip ]
+media/video-controller-child-rate.html [ Skip ]
+media/video-controls-captions-trackmenu-hide-on-click-outside.html [ Skip ]
+media/video-controls-captions-trackmenu-hide-on-click.html [ Skip ]
+media/video-controls-captions-trackmenu-includes-enabled-track.html [ Skip ]
+media/video-controls-captions-trackmenu.html [ Skip ]
+media/video-controls-captions.html [ Skip ]
+media/video-controls-fullscreen-volume.html [ Skip ]
+media/video-controls-no-scripting.html [ Skip ]
+media/video-controls-show-on-kb-or-ax-event.html [ Skip ]
+media/video-controls-toggling.html [ Skip ]
+media/video-does-not-loop.html [ Skip ]
+media/video-error-does-not-exist.html [ Skip ]
+media/video-fullscreen-only-playback.html [ Skip ]
+media/video-inactive-playback.html [ Skip ]
+media/video-isplayingtoautomotiveheadunit.html [ Skip ]
+media/video-main-content-allow-then-deny.html [ Skip ]
+media/video-main-content-allow-then-scroll.html [ Skip ]
+media/video-main-content-allow.html [ Skip ]
+media/video-main-content-autoplay.html [ Skip ]
+media/video-multiple-concurrent-playback.html [ Skip ]
+media/video-object-fit-change.html [ Skip ]
+media/video-orientation.html [ Skip ]
+media/video-orientation-canvas.html [ Skip ]
+media/video-play-audio-require-user-gesture.html [ Skip ]
+media/video-playback-restriction-play-before-load.html [ Skip ]
+media/video-playing-and-pause.html [ Skip ]
+media/video-playsinline.html [ Skip ]
+media/video-restricted-invisible-autoplay-allowed-if-audible.html [ Skip ]
+media/video-size-intrinsic-scale.html [ Skip ]
+media/video-src-blob.html [ Skip ]
+media/video-transformed-by-_javascript_.html [ Skip ]
+media/video-unmuted-after-play-holds-sleep-assertion.html [ Skip ]
+media/video-webkit-playsinline.html [ Skip ]
+
+media/W3C/audio/canPlayType/canPlayType_supported_but_no_codecs_parameter_1.html [ Skip ]
+media/W3C/audio/events/event_order_loadstart_progress.html [ Skip ]
+
+media/W3C/video/canPlayType/canPlayType_codecs_order_2.html [ Skip ]
+media/W3C/video/canPlayType/canPlayType_codecs_order_3.html [ Skip ]
+media/W3C/video/canPlayType/canPlayType_supported_but_no_codecs_parameter_2.html [ Skip ]
+media/W3C/video/canPlayType/canPlayType_two_implies_one_3.html [ Skip ]
+media/W3C/video/canPlayType/canPlayType_two_implies_one_4.html [ Skip ]
+media/W3C/video/canPlayType/canPlayType_two_implies_one_5.html [ Skip ]
+media/W3C/video/canPlayType/canPlayType_two_implies_one_6.html [ Skip ]
+media/W3C/video/events/event_progress_manual.html [ Skip ]
+media/W3C/video/networkState/networkState_during_progress.html [ Skip ]
+media/W3C/video/networkState/networkState_during_loadstart.html [ Skip ]
+
+platform/mac/media [ Pass ]
+platform/mac/media/audio-session-category-audio-autoplay.html [ Skip ]
+platform/mac/media/audio-session-category-video-paused.html [ Skip ]
+platform/mac/media/audio-session-category-video-track-change.html [ Skip ]
+platform/mac/media/audio-session-deactivated-when-suspended.html [ Skip ]
+platform/mac/media/video-best-element-for-playback-controls-purpose.html [ Skip ]
+
 http/tests/media/track/track-webvtt-slow-loading.html [ Pass ]
 http/tests/media/track/track-webvtt-slow-loading-2.html [ Pass ]
 http/tests/media/hls/hls-webvtt-tracks.html [ Pass ]
@@ -232,13 +381,6 @@
 http/tests/media/track-in-band-hls-metadata.html [ Pass ]
 http/tests/media/track-in-band-hls-metadata-crash.html [ Pass ]
 
-media/track/track-in-band-cues-added-once.html [ Pass ]
-media/track/track-in-band-style.html [ Pass ]
-media/track/track-in-band-duplicate-tracks-when-source-changes.html [ Pass ]
-media/track/track-in-band-legacy-api.html [ Pass ]
-media/track/track-in-band.html [ Pass ]
-media/track/track-in-band-metadata-display-order.html [ Pass ]
-
 accessibility/media-element.html [ Skip ]
 fast/block/float/list-marker-is-float-crash.html [ Skip ]
 fast/css/relative-position-replaced-in-table-display-crash.html [ Skip ]
@@ -262,7 +404,6 @@
 imported/w3c/web-platform-tests/mediacapture-record/support/MediaRecorder-iframe.html [ Skip ]
 imported/w3c/web-platform-tests/media-source [ Skip ]
 imported/w3c/web-platform-tests/picture-in-picture/mediastream.html [ Skip ]
-platform/mac/media [ Skip ]
 
 webgl [ Skip ]
 http/tests/security/webgl-remote-read-remote-image-allowed.html [ Skip ]

Modified: trunk/Source/WebCore/ChangeLog (257710 => 257711)


--- trunk/Source/WebCore/ChangeLog	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebCore/ChangeLog	2020-03-02 15:54:29 UTC (rev 257711)
@@ -1,3 +1,23 @@
+2020-03-02  Eric Carlson  <[email protected]>
+
+        [GPUP] Plumb through more MediaPlayer methods
+        https://bugs.webkit.org/show_bug.cgi?id=208423
+        <rdar://problem/59924386>
+
+        Reviewed by Youenn Fablet.
+
+        No new tests, unskipped ~1200 existing media tests.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::mediaPlayerPause): Deleted.
+        (WebCore::HTMLMediaElement::mediaPlayerPlay): Deleted.
+        * html/HTMLMediaElement.h:
+
+        * platform/graphics/MediaPlayer.h:
+        (WebCore::MediaPlayerClient::mediaPlayerContentsScale const):
+        (WebCore::MediaPlayerClient::mediaPlayerPause): Deleted.
+        (WebCore::MediaPlayerClient::mediaPlayerPlay): Deleted.
+
 2020-03-02  Youenn Fablet  <[email protected]>
 
         LocalSampleBufferDisplayLayer is not computing the correct bounds/position in GPUProcess

Modified: trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp (257710 => 257711)


--- trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp	2020-03-02 15:54:29 UTC (rev 257711)
@@ -248,11 +248,11 @@
     }
     
     switch (player->wirelessPlaybackTargetType()) {
-    case MediaPlayer::TargetTypeNone:
+    case MediaPlayer::WirelessPlaybackTargetType::TargetTypeNone:
         return DeviceType::None;
-    case MediaPlayer::TargetTypeAirPlay:
+    case MediaPlayer::WirelessPlaybackTargetType::TargetTypeAirPlay:
         return DeviceType::Airplay;
-    case MediaPlayer::TargetTypeTVOut:
+    case MediaPlayer::WirelessPlaybackTargetType::TargetTypeTVOut:
         return DeviceType::Tvout;
     }
 

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (257710 => 257711)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2020-03-02 15:54:29 UTC (rev 257711)
@@ -7092,16 +7092,6 @@
     return 1;
 }
 
-void HTMLMediaElement::mediaPlayerPause()
-{
-    pause();
-}
-
-void HTMLMediaElement::mediaPlayerPlay()
-{
-    play();
-}
-
 bool HTMLMediaElement::mediaPlayerPlatformVolumeConfigurationRequired() const
 {
     return !m_volumeInitialized;

Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (257710 => 257711)


--- trunk/Source/WebCore/html/HTMLMediaElement.h	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h	2020-03-02 15:54:29 UTC (rev 257711)
@@ -722,8 +722,6 @@
     bool mediaPlayerIsVideo() const override;
     LayoutRect mediaPlayerContentBoxRect() const override;
     float mediaPlayerContentsScale() const override;
-    void mediaPlayerPause() override;
-    void mediaPlayerPlay() override;
     bool mediaPlayerPlatformVolumeConfigurationRequired() const override;
     bool mediaPlayerIsLooping() const override;
     CachedResourceLoader* mediaPlayerCachedResourceLoader() override;

Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp (257710 => 257711)


--- trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp	2020-03-02 15:54:29 UTC (rev 257711)
@@ -1087,11 +1087,6 @@
     return m_private->supportsAcceleratedRendering();
 }
 
-bool MediaPlayer::shouldMaintainAspectRatio() const
-{
-    return m_private->shouldMaintainAspectRatio();
-}
-
 void MediaPlayer::setShouldMaintainAspectRatio(bool maintainAspectRatio)
 {
     m_private->setShouldMaintainAspectRatio(maintainAspectRatio);

Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.h (257710 => 257711)


--- trunk/Source/WebCore/platform/graphics/MediaPlayer.h	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.h	2020-03-02 15:54:29 UTC (rev 257711)
@@ -222,8 +222,6 @@
     virtual bool mediaPlayerIsVideo() const { return false; }
     virtual LayoutRect mediaPlayerContentBoxRect() const { return LayoutRect(); }
     virtual float mediaPlayerContentsScale() const { return 1; }
-    virtual void mediaPlayerPause() { }
-    virtual void mediaPlayerPlay() { }
     virtual bool mediaPlayerPlatformVolumeConfigurationRequired() const { return false; }
     virtual bool mediaPlayerIsLooping() const { return false; }
     virtual CachedResourceLoader* mediaPlayerCachedResourceLoader() { return nullptr; }
@@ -461,8 +459,8 @@
     bool hasAvailableVideoFrame() const;
     void prepareForRendering();
 
+    using MediaPlayerEnums::WirelessPlaybackTargetType;
 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
-    enum WirelessPlaybackTargetType { TargetTypeNone, TargetTypeAirPlay, TargetTypeTVOut };
     WirelessPlaybackTargetType wirelessPlaybackTargetType() const;
 
     String wirelessPlaybackTargetName() const;
@@ -488,7 +486,6 @@
     // called when the rendering system flips the into or out of accelerated rendering mode.
     void acceleratedRenderingStateChanged();
 
-    bool shouldMaintainAspectRatio() const;
     void setShouldMaintainAspectRatio(bool);
 
 #if PLATFORM(WIN) && USE(AVFOUNDATION)

Modified: trunk/Source/WebCore/platform/graphics/MediaPlayerEnums.h (257710 => 257711)


--- trunk/Source/WebCore/platform/graphics/MediaPlayerEnums.h	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayerEnums.h	2020-03-02 15:54:29 UTC (rev 257711)
@@ -99,6 +99,13 @@
         MediaFoundation,
         MockMSE,
     };
+
+    enum class WirelessPlaybackTargetType : uint8_t {
+        TargetTypeNone,
+        TargetTypeAirPlay,
+        TargetTypeTVOut
+    };
+
 };
 
 String convertEnumerationToString(MediaPlayerEnums::ReadyState);
@@ -224,4 +231,13 @@
     >;
 };
 
+template<> struct EnumTraits<WebCore::MediaPlayerEnums::WirelessPlaybackTargetType> {
+using values = EnumValues<
+    WebCore::MediaPlayerEnums::WirelessPlaybackTargetType,
+    WebCore::MediaPlayerEnums::WirelessPlaybackTargetType::TargetTypeNone,
+    WebCore::MediaPlayerEnums::WirelessPlaybackTargetType::TargetTypeAirPlay,
+    WebCore::MediaPlayerEnums::WirelessPlaybackTargetType::TargetTypeTVOut
+    >;
+};
+
 }; // namespace WTF

Modified: trunk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h (257710 => 257711)


--- trunk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h	2020-03-02 15:54:29 UTC (rev 257711)
@@ -168,7 +168,7 @@
 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
 
     virtual String wirelessPlaybackTargetName() const { return emptyString(); }
-    virtual MediaPlayer::WirelessPlaybackTargetType wirelessPlaybackTargetType() const { return MediaPlayer::TargetTypeNone; }
+    virtual MediaPlayer::WirelessPlaybackTargetType wirelessPlaybackTargetType() const { return MediaPlayer::WirelessPlaybackTargetType::TargetTypeNone; }
 
     virtual bool wirelessVideoPlaybackDisabled() const { return true; }
     virtual void setWirelessVideoPlaybackDisabled(bool) { }
@@ -185,7 +185,6 @@
     // called when the rendering system flips the into or out of accelerated rendering mode.
     virtual void acceleratedRenderingStateChanged() { }
 
-    virtual bool shouldMaintainAspectRatio() const { return true; }
     virtual void setShouldMaintainAspectRatio(bool) { }
 
     virtual bool hasSingleSecurityOrigin() const { return false; }

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h (257710 => 257711)


--- trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h	2020-03-02 15:54:29 UTC (rev 257711)
@@ -194,7 +194,7 @@
     PlatformLayer* platformLayer() const override { return 0; }
     bool supportsAcceleratedRendering() const override = 0;
     void acceleratedRenderingStateChanged() override;
-    bool shouldMaintainAspectRatio() const override { return m_shouldMaintainAspectRatio; }
+    bool shouldMaintainAspectRatio() const { return m_shouldMaintainAspectRatio; }
     void setShouldMaintainAspectRatio(bool) override;
     bool canSaveMediaData() const override;
 

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm (257710 => 257711)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm	2020-03-02 15:54:29 UTC (rev 257711)
@@ -2619,7 +2619,7 @@
 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
 // AVPlayerItem.tracks is empty during AirPlay so if AirPlay is activated immediately
 // after the item is created, we don't know if it has audio or video and state reported
-// to the WebMediaSessionManager is incorrect. AirPlay can't actually be active is an item
+// to the WebMediaSessionManager is incorrect. AirPlay can't actually be active if an item
 // doesn't have audio or video, so lie during AirPlay.
 
 bool MediaPlayerPrivateAVFoundationObjC::hasVideo() const
@@ -2661,26 +2661,26 @@
 MediaPlayer::WirelessPlaybackTargetType MediaPlayerPrivateAVFoundationObjC::wirelessPlaybackTargetType() const
 {
     if (!m_avPlayer)
-        return MediaPlayer::TargetTypeNone;
+        return MediaPlayer::WirelessPlaybackTargetType::TargetTypeNone;
 
 #if PLATFORM(IOS_FAMILY)
     if (!PAL::isAVFoundationFrameworkAvailable())
-        return MediaPlayer::TargetTypeNone;
+        return MediaPlayer::WirelessPlaybackTargetType::TargetTypeNone;
 
     switch ([m_avPlayer externalPlaybackType]) {
     case AVPlayerExternalPlaybackTypeNone:
-        return MediaPlayer::TargetTypeNone;
+        return MediaPlayer::WirelessPlaybackTargetType::TargetTypeNone;
     case AVPlayerExternalPlaybackTypeAirPlay:
-        return MediaPlayer::TargetTypeAirPlay;
+        return MediaPlayer::WirelessPlaybackTargetType::TargetTypeAirPlay;
     case AVPlayerExternalPlaybackTypeTVOut:
-        return MediaPlayer::TargetTypeTVOut;
+        return MediaPlayer::WirelessPlaybackTargetType::TargetTypeTVOut;
     }
 
     ASSERT_NOT_REACHED();
-    return MediaPlayer::TargetTypeNone;
+    return MediaPlayer::WirelessPlaybackTargetType::TargetTypeNone;
 
 #else
-    return MediaPlayer::TargetTypeAirPlay;
+    return MediaPlayer::WirelessPlaybackTargetType::TargetTypeAirPlay;
 #endif
 }
     

Modified: trunk/Source/WebKit/ChangeLog (257710 => 257711)


--- trunk/Source/WebKit/ChangeLog	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/ChangeLog	2020-03-02 15:54:29 UTC (rev 257711)
@@ -1,3 +1,28 @@
+2020-03-02  Eric Carlson  <[email protected]>
+
+        [GPUP] Plumb through more MediaPlayer methods
+        https://bugs.webkit.org/show_bug.cgi?id=208423
+        <rdar://problem/59924386>
+
+        Reviewed by Youenn Fablet.
+
+        * GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
+        (WebKit::RemoteMediaPlayerManagerProxy::updateVideoFullscreenInlineImage): Deleted.
+        (WebKit::RemoteMediaPlayerManagerProxy::setVideoFullscreenFrame): Deleted.
+        (WebKit::RemoteMediaPlayerManagerProxy::setVideoFullscreenGravity): Deleted.
+        (WebKit::RemoteMediaPlayerManagerProxy::setVideoFullscreenMode): Deleted.
+        (WebKit::RemoteMediaPlayerManagerProxy::setVolume): Deleted.
+        (WebKit::RemoteMediaPlayerManagerProxy::setBufferingPolicy): Deleted.
+        (WebKit::RemoteMediaPlayerManagerProxy::videoFullscreenStandbyChanged): Deleted.
+        (WebKit::RemoteMediaPlayerManagerProxy::accessLog): Deleted.
+        (WebKit::RemoteMediaPlayerManagerProxy::errorLog): Deleted.
+        * GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
+        * GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:
+        * GPUProcess/media/RemoteMediaPlayerProxy.cpp:
+        (WebKit::RemoteMediaPlayerProxy::mediaPlayerPause): Deleted.
+        (WebKit::RemoteMediaPlayerProxy::mediaPlayerPlay): Deleted.
+        * GPUProcess/media/RemoteMediaPlayerProxy.h:
+
 2020-03-02  youenn fablet  <[email protected]>
 
         Enable capture in GPUProcess by default for recent platforms only

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp (257710 => 257711)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp	2020-03-02 15:54:29 UTC (rev 257711)
@@ -192,24 +192,6 @@
     completionHandler(result);
 }
 
-#if PLATFORM(IOS_FAMILY)
-void RemoteMediaPlayerManagerProxy::accessLog(MediaPlayerPrivateRemoteIdentifier playerIdentifier, CompletionHandler<void(String)>&& completionHandler)
-{
-    if (auto player = m_proxies.get(playerIdentifier)) {
-        String log = player->accessLog();
-        completionHandler(log);
-    }
-}
-
-void RemoteMediaPlayerManagerProxy::errorLog(MediaPlayerPrivateRemoteIdentifier playerIdentifier, CompletionHandler<void(String)>&& completionHandler)
-{
-    if (auto player = m_proxies.get(playerIdentifier)) {
-        String log = player->errorLog();
-        completionHandler(log);
-    }
-}
-#endif
-
 void RemoteMediaPlayerManagerProxy::didReceivePlayerMessage(IPC::Connection& connection, IPC::Decoder& decoder)
 {
     if (auto* player = m_proxies.get(makeObjectIdentifier<MediaPlayerPrivateRemoteIdentifierType>(decoder.destinationID())))

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h (257710 => 257711)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h	2020-03-02 15:54:29 UTC (rev 257711)
@@ -84,11 +84,6 @@
     void clearMediaCacheForOrigins(WebCore::MediaPlayerEnums::MediaEngineIdentifier, const String&&, Vector<WebCore::SecurityOriginData>&&);
     void supportsKeySystem(WebCore::MediaPlayerEnums::MediaEngineIdentifier, const String&&, const String&&, CompletionHandler<void(bool)>&&);
 
-#if PLATFORM(IOS_FAMILY)
-    void accessLog(MediaPlayerPrivateRemoteIdentifier, CompletionHandler<void(String)>&&);
-    void errorLog(MediaPlayerPrivateRemoteIdentifier, CompletionHandler<void(String)>&&);
-#endif
-
     HashMap<MediaPlayerPrivateRemoteIdentifier, std::unique_ptr<RemoteMediaPlayerProxy>> m_proxies;
     GPUConnectionToWebProcess& m_gpuConnectionToWebProcess;
 

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in (257710 => 257711)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in	2020-03-02 15:54:29 UTC (rev 257711)
@@ -34,11 +34,6 @@
     ClearMediaCache(enum:uint8_t WebCore::MediaPlayerEnums::MediaEngineIdentifier remoteEngineIdentifier, String path, WallTime modifiedSince)
     ClearMediaCacheForOrigins(enum:uint8_t WebCore::MediaPlayerEnums::MediaEngineIdentifier remoteEngineIdentifier, String path, Vector<WebCore::SecurityOriginData> origins)
     SupportsKeySystem(enum:uint8_t WebCore::MediaPlayerEnums::MediaEngineIdentifier remoteEngineIdentifier, String keySystem, String mimeType) -> (bool supports) Synchronous
-
-#if PLATFORM(IOS_FAMILY)
-    AccessLog(WebKit::MediaPlayerPrivateRemoteIdentifier playerIdentifier) -> (String accessLog) Synchronous
-    ErrorLog(WebKit::MediaPlayerPrivateRemoteIdentifier playerIdentifier) -> (String errorLog) Synchronous
-#endif
 }
 
 #endif

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp (257710 => 257711)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp	2020-03-02 15:54:29 UTC (rev 257711)
@@ -83,6 +83,8 @@
 void RemoteMediaPlayerProxy::getConfiguration(RemoteMediaPlayerConfiguration& configuration)
 {
     configuration.engineDescription = m_player->engineDescription();
+    auto maxDuration = m_player->maximumDurationToCacheMediaTime();
+    configuration.maximumDurationToCacheMediaTime = maxDuration ? maxDuration : 0.2;
     configuration.supportsScanning = m_player->supportsScanning();
     configuration.supportsFullscreen = m_player->supportsFullscreen();
     configuration.supportsPictureInPicture = m_player->supportsPictureInPicture();
@@ -245,14 +247,14 @@
 }
 
 #if PLATFORM(IOS_FAMILY)
-String RemoteMediaPlayerProxy::accessLog()
+void RemoteMediaPlayerProxy::accessLog(CompletionHandler<void(String)>&& completionHandler)
 {
-    return m_player->accessLog();
+    completionHandler(m_player->accessLog());
 }
 
-String RemoteMediaPlayerProxy::errorLog()
+void RemoteMediaPlayerProxy::errorLog(CompletionHandler<void(String)>&& completionHandler)
 {
-    return m_player->errorLog();
+    completionHandler(m_player->errorLog());
 }
 #endif
 
@@ -265,7 +267,17 @@
 void RemoteMediaPlayerProxy::mediaPlayerReadyStateChanged()
 {
     updateCachedState();
+    m_cachedState.canSaveMediaData = m_player->canSaveMediaData();
+    m_cachedState.startDate = m_player->getStartDate();
+    m_cachedState.startTime = m_player->startTime();
     m_cachedState.naturalSize = m_player->naturalSize();
+    m_cachedState.maxFastForwardRate = m_player->maxFastForwardRate();
+    m_cachedState.minFastReverseRate = m_player->minFastReverseRate();
+    m_cachedState.hasAvailableVideoFrame = m_player->hasAvailableVideoFrame();
+    m_cachedState.wirelessVideoPlaybackDisabled = m_player->wirelessVideoPlaybackDisabled();
+    m_cachedState.hasSingleSecurityOrigin = m_player->hasSingleSecurityOrigin();
+    m_cachedState.didPassCORSAccessCheck = m_player->didPassCORSAccessCheck();
+
     m_webProcessConnection->send(Messages::MediaPlayerPrivateRemote::ReadyStateChanged(m_cachedState), m_id);
 }
 
@@ -369,12 +381,22 @@
 
 void RemoteMediaPlayerProxy::mediaPlayerSeekableTimeRangesChanged()
 {
-    m_seekableChanged = true;
+    m_cachedState.minTimeSeekable = m_player->minTimeSeekable();
+    m_cachedState.maxTimeSeekable = m_player->maxTimeSeekable();
+    m_cachedState.seekableTimeRangesLastModifiedTime = m_player->seekableTimeRangesLastModifiedTime();
+    m_cachedState.liveUpdateInterval = m_player->liveUpdateInterval();
+
+    if (!m_updateCachedStateMessageTimer.isActive())
+        sendCachedState();
 }
 
 void RemoteMediaPlayerProxy::mediaPlayerCharacteristicChanged()
 {
-    m_webProcessConnection->send(Messages::MediaPlayerPrivateRemote::CharacteristicChanged(m_player->hasAudio(), m_player->hasVideo(), m_player->movieLoadType()), m_id);
+    updateCachedState();
+    m_cachedState.hasClosedCaptions = m_player->hasClosedCaptions();
+    m_cachedState.languageOfPrimaryAudioTrack = m_player->languageOfPrimaryAudioTrack();
+
+    m_webProcessConnection->send(Messages::MediaPlayerPrivateRemote::CharacteristicChanged(m_cachedState), m_id);
 }
 
 bool RemoteMediaPlayerProxy::mediaPlayerRenderingCanBeAccelerated()
@@ -515,6 +537,9 @@
 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
 void RemoteMediaPlayerProxy::mediaPlayerCurrentPlaybackTargetIsWirelessChanged(bool isCurrentPlaybackTargetWireless)
 {
+    m_cachedState.wirelessPlaybackTargetName = m_player->wirelessPlaybackTargetName();
+    m_cachedState.wirelessPlaybackTargetType = m_player->wirelessPlaybackTargetType();
+    sendCachedState();
     m_webProcessConnection->send(Messages::MediaPlayerPrivateRemote::CurrentPlaybackTargetIsWirelessChanged(isCurrentPlaybackTargetWireless), m_id);
 }
 
@@ -521,6 +546,7 @@
 void RemoteMediaPlayerProxy::setWirelessVideoPlaybackDisabled(bool disabled)
 {
     m_player->setWirelessVideoPlaybackDisabled(disabled);
+    m_cachedState.wirelessVideoPlaybackDisabled = m_player->wirelessVideoPlaybackDisabled();
 }
 
 void RemoteMediaPlayerProxy::setShouldPlayToPlaybackTarget(bool shouldPlay)
@@ -555,16 +581,6 @@
     return m_videoContentScale;
 }
 
-void RemoteMediaPlayerProxy::mediaPlayerPause()
-{
-    notImplemented();
-}
-
-void RemoteMediaPlayerProxy::mediaPlayerPlay()
-{
-    notImplemented();
-}
-
 bool RemoteMediaPlayerProxy::mediaPlayerPlatformVolumeConfigurationRequired() const
 {
     notImplemented();
@@ -659,12 +675,6 @@
     m_cachedState.paused = m_player->paused();
     m_cachedState.loadingProgressed = m_player->didLoadingProgress();
 
-    if (m_seekableChanged) {
-        m_seekableChanged = false;
-        m_cachedState.minTimeSeekable = m_player->minTimeSeekable();
-        m_cachedState.maxTimeSeekable = m_player->maxTimeSeekable();
-    }
-
     if (m_bufferedChanged) {
         m_bufferedChanged = false;
         m_cachedState.bufferedRanges = *m_player->buffered();
@@ -710,6 +720,21 @@
     m_player->applicationDidBecomeActive();
 }
 
+void RemoteMediaPlayerProxy::notifyTrackModeChanged()
+{
+    m_player->notifyTrackModeChanged();
+}
+
+void RemoteMediaPlayerProxy::tracksChanged()
+{
+    m_player->tracksChanged();
+}
+
+void RemoteMediaPlayerProxy::syncTextTrackBounds()
+{
+    m_player->syncTextTrackBounds();
+}
+
 } // namespace WebKit
 
 #endif // ENABLE(GPU_PROCESS)

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h (257710 => 257711)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h	2020-03-02 15:54:29 UTC (rev 257711)
@@ -84,11 +84,12 @@
     void videoFullscreenStandbyChanged();
 
 #if PLATFORM(IOS_FAMILY)
-    String accessLog();
-    String errorLog();
+    void accessLog(CompletionHandler<void(String)>&&);
+    void errorLog(CompletionHandler<void(String)>&&);
 #endif
 
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
+    void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&);
 
     void getConfiguration(RemoteMediaPlayerConfiguration&);
 
@@ -148,6 +149,10 @@
     void applicationWillResignActive();
     void applicationDidBecomeActive();
 
+    void notifyTrackModeChanged();
+    void tracksChanged();
+    void syncTextTrackBounds();
+
     Ref<WebCore::PlatformMediaResource> requestResource(WebCore::ResourceRequest&&, WebCore::PlatformMediaResourceLoader::LoadOptions);
     void removeResource(RemoteMediaResourceIdentifier);
 
@@ -201,8 +206,6 @@
     bool mediaPlayerIsFullscreenPermitted() const final;
     bool mediaPlayerIsVideo() const final;
     float mediaPlayerContentsScale() const final;
-    void mediaPlayerPause() final;
-    void mediaPlayerPlay() final;
     bool mediaPlayerPlatformVolumeConfigurationRequired() const final;
     WebCore::CachedResourceLoader* mediaPlayerCachedResourceLoader() final;
     RefPtr<WebCore::PlatformMediaResourceLoader> mediaPlayerCreateResourceLoader() final;
@@ -261,7 +264,6 @@
     RunLoop::Timer<RemoteMediaPlayerProxy> m_updateCachedStateMessageTimer;
     RemoteMediaPlayerState m_cachedState;
     RemoteMediaPlayerProxyConfiguration m_configuration;
-    bool m_seekableChanged { true };
     bool m_bufferedChanged { true };
     bool m_renderingCanBeAccelerated { true };
     WebCore::LayoutRect m_videoContentBoxRect;

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in (257710 => 257711)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in	2020-03-02 15:54:29 UTC (rev 257711)
@@ -94,6 +94,15 @@
 
     ApplicationWillResignActive()
     ApplicationDidBecomeActive()
+
+    NotifyTrackModeChanged()
+    TracksChanged()
+    SyncTextTrackBounds()
+
+#if PLATFORM(IOS_FAMILY)
+    ErrorLog() -> (String errorLog) Synchronous
+    AccessLog() -> (String accessLog) Synchronous
+#endif
 }
 
 #endif

Modified: trunk/Source/WebKit/WebKit.xcodeproj/xcshareddata/xcschemes/WebKit.xcscheme (257710 => 257711)


--- trunk/Source/WebKit/WebKit.xcodeproj/xcshareddata/xcschemes/WebKit.xcscheme	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/WebKit.xcodeproj/xcshareddata/xcschemes/WebKit.xcscheme	2020-03-02 15:54:29 UTC (rev 257711)
@@ -31,7 +31,7 @@
       </Testables>
    </TestAction>
    <LaunchAction
-      buildConfiguration = "Debug"
+      buildConfiguration = "Release"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       launchStyle = "0"

Modified: trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp (257710 => 257711)


--- trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp	2020-03-02 15:54:29 UTC (rev 257711)
@@ -215,12 +215,12 @@
 
 bool MediaPlayerPrivateRemote::hasVideo() const
 {
-    return m_hasVideo;
+    return m_cachedState.hasVideo;
 }
 
 bool MediaPlayerPrivateRemote::hasAudio() const
 {
-    return m_hasAudio;
+    return m_cachedState.hasAudio;
 }
 
 std::unique_ptr<PlatformTimeRanges> MediaPlayerPrivateRemote::seekable() const
@@ -238,7 +238,7 @@
 
 MediaPlayer::MovieLoadType MediaPlayerPrivateRemote::movieLoadType() const
 {
-    return m_movieLoadType;
+    return m_cachedState.movieLoadType;
 }
 
 void MediaPlayerPrivateRemote::networkStateChanged(RemoteMediaPlayerState&& state)
@@ -296,11 +296,9 @@
     m_player->remoteEngineFailedToLoad();
 }
 
-void MediaPlayerPrivateRemote::characteristicChanged(bool hasAudio, bool hasVideo, WebCore::MediaPlayerEnums::MovieLoadType movieLoadType)
+void MediaPlayerPrivateRemote::characteristicChanged(RemoteMediaPlayerState&& state)
 {
-    m_movieLoadType = movieLoadType;
-    m_hasAudio = hasAudio;
-    m_hasVideo = hasVideo;
+    updateCachedState(WTFMove(state));
     m_player->characteristicChanged();
 }
 
@@ -362,6 +360,25 @@
     m_cachedState.paused = state.paused;
     m_cachedState.loadingProgressed = state.loadingProgressed;
     m_cachedState.naturalSize = state.naturalSize;
+    m_cachedState.movieLoadType = state.movieLoadType;
+    m_cachedState.wirelessPlaybackTargetType = state.wirelessPlaybackTargetType;
+
+    m_cachedState.startDate = state.startDate;
+    m_cachedState.startTime = state.startTime;
+    m_cachedState.languageOfPrimaryAudioTrack = state.languageOfPrimaryAudioTrack;
+    m_cachedState.maxFastForwardRate = state.maxFastForwardRate;
+    m_cachedState.minFastReverseRate = state.minFastReverseRate;
+    m_cachedState.seekableTimeRangesLastModifiedTime = state.seekableTimeRangesLastModifiedTime;
+    m_cachedState.liveUpdateInterval = state.liveUpdateInterval;
+    m_cachedState.canSaveMediaData = state.canSaveMediaData;
+    m_cachedState.hasAudio = state.hasAudio;
+    m_cachedState.hasVideo = state.hasVideo;
+    m_cachedState.hasClosedCaptions = state.hasClosedCaptions;
+    m_cachedState.hasAvailableVideoFrame = state.hasAvailableVideoFrame;
+    m_cachedState.wirelessVideoPlaybackDisabled = state.wirelessVideoPlaybackDisabled;
+    m_cachedState.hasSingleSecurityOrigin = state.hasSingleSecurityOrigin;
+    m_cachedState.didPassCORSAccessCheck = state.didPassCORSAccessCheck;
+
     if (state.bufferedRanges.length())
         m_cachedBufferedTimeRanges = makeUnique<PlatformTimeRanges>(state.bufferedRanges);
 }
@@ -571,8 +588,6 @@
         track->updateConfiguration(WTFMove(configuration));
 }
 
-// FIXME: Unimplemented
-
 #if ENABLE(MEDIA_SOURCE)
 void MediaPlayerPrivateRemote::load(const String&, MediaSourcePrivateClient*)
 {
@@ -590,7 +605,8 @@
 #if ENABLE(MEDIA_STREAM)
 void MediaPlayerPrivateRemote::load(MediaStreamPrivate&)
 {
-    notImplemented();
+    ASSERT_NOT_REACHED();
+
     callOnMainThread([weakThis = makeWeakPtr(*this), this] {
         if (!weakThis)
             return;
@@ -655,8 +671,7 @@
 String MediaPlayerPrivateRemote::accessLog() const
 {
     String log;
-    
-    if (!connection().sendSync(Messages::RemoteMediaPlayerManagerProxy::AccessLog(m_id), Messages::RemoteMediaPlayerManagerProxy::AccessLog::Reply(log), m_id))
+    if (!connection().sendSync(Messages::RemoteMediaPlayerProxy::AccessLog(), Messages::RemoteMediaPlayerProxy::AccessLog::Reply(log), m_id))
         return emptyString();
 
     return log;
@@ -665,8 +680,7 @@
 String MediaPlayerPrivateRemote::errorLog() const
 {
     String log;
-    
-    if (!connection().sendSync(Messages::RemoteMediaPlayerManagerProxy::ErrorLog(m_id), Messages::RemoteMediaPlayerManagerProxy::ErrorLog::Reply(log), m_id))
+    if (!connection().sendSync(Messages::RemoteMediaPlayerProxy::ErrorLog(), Messages::RemoteMediaPlayerProxy::ErrorLog::Reply(log), m_id))
         return emptyString();
 
     return log;
@@ -680,31 +694,27 @@
 
 bool MediaPlayerPrivateRemote::canSaveMediaData() const
 {
-    notImplemented();
-    return false;
+    return m_cachedState.canSaveMediaData;
 }
 
 MediaTime MediaPlayerPrivateRemote::getStartDate() const
 {
-    notImplemented();
-    return MediaTime::zeroTime();
+    return m_cachedState.startDate;
 }
 
 MediaTime MediaPlayerPrivateRemote::startTime() const
 {
-    notImplemented();
-    return MediaTime::zeroTime();
+    return m_cachedState.startTime;
 }
 
-void MediaPlayerPrivateRemote::setRateDouble(double)
+void MediaPlayerPrivateRemote::setRateDouble(double rate)
 {
-    notImplemented();
+    connection().send(Messages::RemoteMediaPlayerProxy::SetRate(rate), m_id);
 }
 
 bool MediaPlayerPrivateRemote::hasClosedCaptions() const
 {
-    notImplemented();
-    return false;
+    return m_cachedState.hasClosedCaptions;
 }
 
 void MediaPlayerPrivateRemote::setClosedCaptionsVisible(bool)
@@ -714,14 +724,12 @@
 
 double MediaPlayerPrivateRemote::maxFastForwardRate() const
 {
-    notImplemented();
-    return 0;
+    return m_cachedState.maxFastForwardRate;
 }
 
 double MediaPlayerPrivateRemote::minFastReverseRate() const
 {
-    notImplemented();
-    return 0;
+    return m_cachedState.minFastReverseRate;
 }
 
 MediaTime MediaPlayerPrivateRemote::maxMediaTimeSeekable() const
@@ -736,14 +744,12 @@
 
 double MediaPlayerPrivateRemote::seekableTimeRangesLastModifiedTime() const
 {
-    notImplemented();
-    return 0;
+    return m_cachedState.seekableTimeRangesLastModifiedTime;
 }
 
 double MediaPlayerPrivateRemote::liveUpdateInterval() const
 {
-    notImplemented();
-    return 0;
+    return m_cachedState.liveUpdateInterval;
 }
 
 unsigned long long MediaPlayerPrivateRemote::totalBytes() const
@@ -783,8 +789,7 @@
 
 bool MediaPlayerPrivateRemote::hasAvailableVideoFrame() const
 {
-    notImplemented();
-    return false;
+    return m_cachedState.hasAvailableVideoFrame;
 }
 
 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
@@ -796,14 +801,12 @@
 
 MediaPlayer::WirelessPlaybackTargetType MediaPlayerPrivateRemote::wirelessPlaybackTargetType() const
 {
-    notImplemented();
-    return MediaPlayer::TargetTypeNone;
+    return m_cachedState.wirelessPlaybackTargetType;
 }
 
 bool MediaPlayerPrivateRemote::wirelessVideoPlaybackDisabled() const
 {
-    notImplemented();
-    return true;
+    return m_cachedState.wirelessVideoPlaybackDisabled;
 }
 
 void MediaPlayerPrivateRemote::setWirelessVideoPlaybackDisabled(bool disabled)
@@ -833,22 +836,14 @@
 }
 #endif
 
-bool MediaPlayerPrivateRemote::shouldMaintainAspectRatio() const
-{
-    notImplemented();
-    return true;
-}
-
 bool MediaPlayerPrivateRemote::hasSingleSecurityOrigin() const
 {
-    notImplemented();
-    return false;
+    return m_cachedState.hasSingleSecurityOrigin;
 }
 
 bool MediaPlayerPrivateRemote::didPassCORSAccessCheck() const
 {
-    notImplemented();
-    return false;
+    return m_cachedState.didPassCORSAccessCheck;
 }
 
 Optional<bool> MediaPlayerPrivateRemote::wouldTaintOrigin(const SecurityOrigin&) const
@@ -865,7 +860,7 @@
 
 double MediaPlayerPrivateRemote::maximumDurationToCacheMediaTime() const
 {
-    return .2; // FIXME: get this value from the media engine when it is created.
+    return m_configuration.maximumDurationToCacheMediaTime;
 }
 
 unsigned MediaPlayerPrivateRemote::decodedFrameCount() const
@@ -960,12 +955,12 @@
 
 void MediaPlayerPrivateRemote::syncTextTrackBounds()
 {
-    notImplemented();
+    connection().send(Messages::RemoteMediaPlayerProxy::SyncTextTrackBounds(), m_id);
 }
 
 void MediaPlayerPrivateRemote::tracksChanged()
 {
-    notImplemented();
+    connection().send(Messages::RemoteMediaPlayerProxy::TracksChanged(), m_id);
 }
 #endif
 
@@ -988,8 +983,7 @@
 
 String MediaPlayerPrivateRemote::languageOfPrimaryAudioTrack() const
 {
-    notImplemented();
-    return emptyString();
+    return m_cachedState.languageOfPrimaryAudioTrack;
 }
 
 size_t MediaPlayerPrivateRemote::extraMemoryCost() const
@@ -998,18 +992,6 @@
     return 0;
 }
 
-unsigned long long MediaPlayerPrivateRemote::fileSize() const
-{
-    notImplemented();
-    return 0;
-}
-
-bool MediaPlayerPrivateRemote::ended() const
-{
-    notImplemented();
-    return false;
-}
-
 Optional<VideoPlaybackQualityMetrics> MediaPlayerPrivateRemote::videoPlaybackQualityMetrics()
 {
     notImplemented();
@@ -1019,7 +1001,7 @@
 #if ENABLE(AVF_CAPTIONS)
 void MediaPlayerPrivateRemote::notifyTrackModeChanged()
 {
-    notImplemented();
+    connection().send(Messages::RemoteMediaPlayerProxy::NotifyTrackModeChanged(), m_id);
 }
 #endif
 

Modified: trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h (257710 => 257711)


--- trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h	2020-03-02 15:54:29 UTC (rev 257711)
@@ -94,7 +94,7 @@
     void playbackStateChanged(bool);
     void engineFailedToLoad(long);
     void updateCachedState(RemoteMediaPlayerState&&);
-    void characteristicChanged(bool hasAudio, bool hasVideo, WebCore::MediaPlayerEnums::MovieLoadType);
+    void characteristicChanged(RemoteMediaPlayerState&&);
     void sizeChanged(WebCore::FloatSize);
     void firstVideoFrameAvailable();
 #if PLATFORM(COCOA)
@@ -277,7 +277,6 @@
     bool supportsAcceleratedRendering() const final;
     void acceleratedRenderingStateChanged() final;
 
-    bool shouldMaintainAspectRatio() const final;
     void setShouldMaintainAspectRatio(bool) final;
 
     bool hasSingleSecurityOrigin() const final;
@@ -334,10 +333,6 @@
 
     size_t extraMemoryCost() const final;
 
-    unsigned long long fileSize() const final;
-
-    bool ended() const final;
-
     Optional<WebCore::VideoPlaybackQualityMetrics> videoPlaybackQualityMetrics() final;
 
 #if ENABLE(AVF_CAPTIONS)
@@ -378,9 +373,6 @@
     double m_volume { 1 };
     double m_rate { 1 };
     long m_platformErrorCode { 0 };
-    WebCore::MediaPlayerEnums::MovieLoadType m_movieLoadType { WebCore::MediaPlayerEnums::MovieLoadType::Unknown };
-    bool m_hasAudio { false };
-    bool m_hasVideo { false };
     bool m_muted { false };
     bool m_seeking { false };
     bool m_isCurrentPlaybackTargetWireless { false };

Modified: trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in (257710 => 257711)


--- trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in	2020-03-02 15:54:29 UTC (rev 257711)
@@ -35,7 +35,7 @@
     PlaybackStateChanged(bool paused)
     EngineFailedToLoad(int platformErrorCode)
     UpdateCachedState(struct WebKit::RemoteMediaPlayerState state)
-    CharacteristicChanged(bool hasAudio, bool hasVideo, enum:uint8_t WebCore::MediaPlayerEnums::MovieLoadType movieLoadType)
+    CharacteristicChanged(struct WebKit::RemoteMediaPlayerState state)
     SizeChanged(WebCore::FloatSize naturalSize)
 
     AddRemoteAudioTrack(WebKit::TrackPrivateRemoteIdentifier trackID, struct WebKit::TrackPrivateRemoteConfiguration configuration)

Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerConfiguration.h (257710 => 257711)


--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerConfiguration.h	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerConfiguration.h	2020-03-02 15:54:29 UTC (rev 257711)
@@ -35,6 +35,7 @@
 
 struct RemoteMediaPlayerConfiguration {
     String engineDescription;
+    double maximumDurationToCacheMediaTime;
     bool supportsScanning { false };
     bool supportsFullscreen { false };
     bool supportsPictureInPicture { false };
@@ -46,6 +47,7 @@
     void encode(Encoder& encoder) const
     {
         encoder << engineDescription;
+        encoder << maximumDurationToCacheMediaTime;
         encoder << supportsScanning;
         encoder << supportsFullscreen;
         encoder << supportsPictureInPicture;
@@ -62,6 +64,11 @@
         if (!engineDescription)
             return WTF::nullopt;
 
+        Optional<double> maximumDurationToCacheMediaTime;
+        decoder >> maximumDurationToCacheMediaTime;
+        if (!maximumDurationToCacheMediaTime)
+            return WTF::nullopt;
+
         Optional<bool> supportsScanning;
         decoder >> supportsScanning;
         if (!supportsScanning)
@@ -94,6 +101,7 @@
 
         return {{
             WTFMove(*engineDescription),
+            *maximumDurationToCacheMediaTime,
             *supportsScanning,
             *supportsPictureInPicture,
             *supportsAcceleratedRendering,

Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerState.h (257710 => 257711)


--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerState.h	2020-03-02 15:41:30 UTC (rev 257710)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerState.h	2020-03-02 15:54:29 UTC (rev 257711)
@@ -39,12 +39,32 @@
     MediaTime duration;
     MediaTime minTimeSeekable;
     MediaTime maxTimeSeekable;
+    MediaTime startDate;
+    MediaTime startTime;
+    String languageOfPrimaryAudioTrack;
+    String wirelessPlaybackTargetName;
     WebCore::PlatformTimeRanges bufferedRanges;
     WebCore::MediaPlayerEnums::NetworkState networkState { WebCore::MediaPlayerEnums::NetworkState::Empty };
     WebCore::MediaPlayerEnums::ReadyState readyState { WebCore::MediaPlayerEnums::ReadyState::HaveNothing };
+    WebCore::MediaPlayerEnums::MovieLoadType movieLoadType { WebCore::MediaPlayerEnums::MovieLoadType::Unknown };
+    WebCore::MediaPlayerEnums::WirelessPlaybackTargetType wirelessPlaybackTargetType { WebCore::MediaPlayerEnums::WirelessPlaybackTargetType::TargetTypeNone };
     WebCore::FloatSize naturalSize;
+    double maxFastForwardRate { 0 };
+    double minFastReverseRate { 0 };
+    double seekableTimeRangesLastModifiedTime { 0 };
+    double liveUpdateInterval { 0 };
+    unsigned long long totalBytes { 0 };
     bool paused { true };
     bool loadingProgressed { false };
+    bool canSaveMediaData { false };
+    bool hasAudio { false };
+    bool hasVideo { false };
+    bool hasClosedCaptions { false };
+    bool hasAvailableVideoFrame { false };
+    bool wirelessVideoPlaybackDisabled { false };
+    bool hasSingleSecurityOrigin { false };
+    bool didPassCORSAccessCheck { false };
+    bool requiresTextTrackRepresentation { false };
 
     template<class Encoder>
     void encode(Encoder& encoder) const
@@ -53,12 +73,32 @@
         encoder << duration;
         encoder << minTimeSeekable;
         encoder << maxTimeSeekable;
+        encoder << startDate;
+        encoder << startTime;
+        encoder << languageOfPrimaryAudioTrack;
+        encoder << wirelessPlaybackTargetName;
         encoder << bufferedRanges;
         encoder.encodeEnum(networkState);
         encoder.encodeEnum(readyState);
+        encoder.encodeEnum(movieLoadType);
+        encoder.encodeEnum(wirelessPlaybackTargetType);
         encoder << naturalSize;
+        encoder << maxFastForwardRate;
+        encoder << minFastReverseRate;
+        encoder << seekableTimeRangesLastModifiedTime;
+        encoder << liveUpdateInterval;
+        encoder << totalBytes;
         encoder << paused;
         encoder << loadingProgressed;
+        encoder << canSaveMediaData;
+        encoder << hasAudio;
+        encoder << hasVideo;
+        encoder << hasClosedCaptions;
+        encoder << hasAvailableVideoFrame;
+        encoder << wirelessVideoPlaybackDisabled;
+        encoder << hasSingleSecurityOrigin;
+        encoder << didPassCORSAccessCheck;
+        encoder << requiresTextTrackRepresentation;
     }
 
     template <class Decoder>
@@ -84,6 +124,26 @@
         if (!maxTimeSeekable)
             return WTF::nullopt;
 
+        Optional<MediaTime> startDate;
+        decoder >> startDate;
+        if (!startDate)
+            return WTF::nullopt;
+
+        Optional<MediaTime> startTime;
+        decoder >> startTime;
+        if (!startTime)
+            return WTF::nullopt;
+
+        Optional<String> languageOfPrimaryAudioTrack;
+        decoder >> languageOfPrimaryAudioTrack;
+        if (!languageOfPrimaryAudioTrack)
+            return WTF::nullopt;
+
+        Optional<String> wirelessPlaybackTargetName;
+        decoder >> wirelessPlaybackTargetName;
+        if (!wirelessPlaybackTargetName)
+            return WTF::nullopt;
+
         Optional<WebCore::PlatformTimeRanges> bufferedRanges;
         decoder >> bufferedRanges;
         if (!bufferedRanges)
@@ -97,11 +157,44 @@
         if (!decoder.decodeEnum(readyState))
             return WTF::nullopt;
 
+        WebCore::MediaPlayerEnums::MovieLoadType movieLoadType;
+        if (!decoder.decodeEnum(movieLoadType))
+            return WTF::nullopt;
+
+        WebCore::MediaPlayerEnums::WirelessPlaybackTargetType wirelessPlaybackTargetType;
+        if (!decoder.decodeEnum(wirelessPlaybackTargetType))
+            return WTF::nullopt;
+
         Optional<WebCore::FloatSize> naturalSize;
         decoder >> naturalSize;
         if (!naturalSize)
             return WTF::nullopt;
 
+        Optional<double> maxFastForwardRate;
+        decoder >> maxFastForwardRate;
+        if (!maxFastForwardRate)
+            return WTF::nullopt;
+
+        Optional<double> minFastReverseRate;
+        decoder >> minFastReverseRate;
+        if (!minFastReverseRate)
+            return WTF::nullopt;
+
+        Optional<double> seekableTimeRangesLastModifiedTime;
+        decoder >> seekableTimeRangesLastModifiedTime;
+        if (!seekableTimeRangesLastModifiedTime)
+            return WTF::nullopt;
+
+        Optional<double> liveUpdateInterval;
+        decoder >> liveUpdateInterval;
+        if (!liveUpdateInterval)
+            return WTF::nullopt;
+
+        Optional<unsigned long long> totalBytes;
+        decoder >> totalBytes;
+        if (!totalBytes)
+            return WTF::nullopt;
+
         Optional<bool> paused;
         decoder >> paused;
         if (!paused)
@@ -112,17 +205,83 @@
         if (!loadingProgressed)
             return WTF::nullopt;
 
+        Optional<bool> canSaveMediaData;
+        decoder >> canSaveMediaData;
+        if (!canSaveMediaData)
+            return WTF::nullopt;
+
+        Optional<bool> hasAudio;
+        decoder >> hasAudio;
+        if (!hasAudio)
+            return WTF::nullopt;
+
+        Optional<bool> hasVideo;
+        decoder >> hasVideo;
+        if (!hasVideo)
+            return WTF::nullopt;
+
+        Optional<bool> hasClosedCaptions;
+        decoder >> hasClosedCaptions;
+        if (!hasClosedCaptions)
+            return WTF::nullopt;
+
+        Optional<bool> hasAvailableVideoFrame;
+        decoder >> hasAvailableVideoFrame;
+        if (!hasAvailableVideoFrame)
+            return WTF::nullopt;
+
+        Optional<bool> wirelessVideoPlaybackDisabled;
+        decoder >> wirelessVideoPlaybackDisabled;
+        if (!wirelessVideoPlaybackDisabled)
+            return WTF::nullopt;
+
+        Optional<bool> hasSingleSecurityOrigin;
+        decoder >> hasSingleSecurityOrigin;
+        if (!hasSingleSecurityOrigin)
+            return WTF::nullopt;
+
+        Optional<bool> didPassCORSAccessCheck;
+        decoder >> didPassCORSAccessCheck;
+        if (!didPassCORSAccessCheck)
+            return WTF::nullopt;
+
+        Optional<bool> requiresTextTrackRepresentation;
+        decoder >> requiresTextTrackRepresentation;
+        if (!requiresTextTrackRepresentation)
+            return WTF::nullopt;
+
         return {{
             WTFMove(*currentTime),
             WTFMove(*duration),
             WTFMove(*minTimeSeekable),
             WTFMove(*maxTimeSeekable),
+            WTFMove(*startDate),
+            WTFMove(*startTime),
+            WTFMove(*languageOfPrimaryAudioTrack),
+            WTFMove(*wirelessPlaybackTargetName),
             WTFMove(*bufferedRanges),
             networkState,
             readyState,
+            movieLoadType,
+            wirelessPlaybackTargetType,
             WTFMove(*naturalSize),
+            *maxFastForwardRate,
+            *minFastReverseRate,
+            *seekableTimeRangesLastModifiedTime,
+            *liveUpdateInterval,
+            *totalBytes,
             *paused,
-            *loadingProgressed }};
+            *loadingProgressed,
+            *canSaveMediaData,
+            *hasAudio,
+            *hasVideo,
+            *hasClosedCaptions,
+            *hasAvailableVideoFrame,
+            *wirelessVideoPlaybackDisabled,
+            *hasSingleSecurityOrigin,
+            *didPassCORSAccessCheck,
+            *requiresTextTrackRepresentation,
+        }};
     }
 
 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to