| Index: media/blink/webmediaplayer_impl.cc
|
| diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
|
| index 654ba89050299e2a31ec49243c759482815edc6c..c6b8b571cea6a261dc31fc9e629025bf7185660a 100644
|
| --- a/media/blink/webmediaplayer_impl.cc
|
| +++ b/media/blink/webmediaplayer_impl.cc
|
| @@ -346,14 +346,21 @@ void WebMediaPlayerImpl::DisableOverlay() {
|
| }
|
|
|
| void WebMediaPlayerImpl::enteredFullscreen() {
|
| - if (!force_video_overlays_ && enable_fullscreen_video_overlays_)
|
| + // |force_video_overlays_| implies that we're already in overlay mode, so take
|
| + // no action here. Otherwise, switch to an overlay if it's allowed and if
|
| + // it will display properly.
|
| + if (!force_video_overlays_ && enable_fullscreen_video_overlays_ &&
|
| + DoesOverlaySupportMetadata()) {
|
| EnableOverlay();
|
| + }
|
| if (observer_)
|
| observer_->OnEnteredFullscreen();
|
| }
|
|
|
| void WebMediaPlayerImpl::exitedFullscreen() {
|
| - if (!force_video_overlays_ && enable_fullscreen_video_overlays_)
|
| + // If we're in overlay mode, then exit it unless we're supposed to be in
|
| + // overlay mode all the time.
|
| + if (!force_video_overlays_ && overlay_enabled_)
|
| DisableOverlay();
|
| if (observer_)
|
| observer_->OnExitedFullscreen();
|
| @@ -1155,8 +1162,15 @@ void WebMediaPlayerImpl::OnMetadata(PipelineMetadata metadata) {
|
| pipeline_metadata_.natural_size = GetRotatedVideoSize(
|
| pipeline_metadata_.video_rotation, pipeline_metadata_.natural_size);
|
|
|
| - if (overlay_enabled_ && surface_manager_)
|
| - surface_manager_->NaturalSizeChanged(pipeline_metadata_.natural_size);
|
| + if (overlay_enabled_) {
|
| + // SurfaceView doesn't support rotated video, so transition back if
|
| + // the video is now rotated. If |force_video_overlays_|, we keep the
|
| + // overlay anyway so that the state machine keeps working.
|
| + if (!force_video_overlays_ && !DoesOverlaySupportMetadata())
|
| + DisableOverlay();
|
| + else if (surface_manager_)
|
| + surface_manager_->NaturalSizeChanged(pipeline_metadata_.natural_size);
|
| + }
|
|
|
| DCHECK(!video_weblayer_);
|
| video_weblayer_.reset(new cc_blink::WebLayerImpl(cc::VideoLayer::Create(
|
| @@ -2011,6 +2025,10 @@ bool WebMediaPlayerImpl::IsHidden() const {
|
| return delegate_ && delegate_->IsHidden();
|
| }
|
|
|
| +bool WebMediaPlayerImpl::DoesOverlaySupportMetadata() const {
|
| + return pipeline_metadata_.video_rotation == VIDEO_ROTATION_0;
|
| +}
|
| +
|
| void WebMediaPlayerImpl::ActivateViewportIntersectionMonitoring(bool activate) {
|
| DCHECK(main_task_runner_->BelongsToCurrentThread());
|
|
|
|
|