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,
+ }};
}
};