Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2942)

Unified Diff: content/renderer/media/android/webmediaplayer_android.cc

Issue 1907753002: Make the video layer contents visible in OverlayFullscreenVideo mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clarified comment Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/android/webmediaplayer_android.cc
diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc
index 1b669437de1902946f9696913292a587e7739d8f..34e780c291d4a2a19c7d4c0235b99c253204ab13 100644
--- a/content/renderer/media/android/webmediaplayer_android.cc
+++ b/content/renderer/media/android/webmediaplayer_android.cc
@@ -1046,6 +1046,7 @@ void WebMediaPlayerAndroid::OnDidExitFullscreen() {
player_manager_->RequestExternalSurface(player_id_, last_computed_rect_);
#endif // defined(VIDEO_HOLE)
is_fullscreen_ = false;
+ ReallocateVideoFrame();
client_->repaint();
}
@@ -1206,6 +1207,8 @@ void WebMediaPlayerAndroid::DrawRemotePlaybackText(
void WebMediaPlayerAndroid::ReallocateVideoFrame() {
DCHECK(main_thread_checker_.CalledOnValidThread());
+
+ if (is_fullscreen_) return;
if (needs_external_surface_) {
// VideoFrame::CreateHoleFrame is only defined under VIDEO_HOLE.
#if defined(VIDEO_HOLE)
@@ -1636,6 +1639,16 @@ void WebMediaPlayerAndroid::enteredFullscreen() {
SetNeedsEstablishPeer(false);
is_fullscreen_ = true;
suppress_deleting_texture_ = false;
+
+ // Create a transparent video frame. Blink will already have made the
+ // background transparent because we returned true from
+ // supportsOverlayFullscreenVideo(). By making the video frame transparent,
+ // as well, everything in the LayerTreeView will be transparent except for
+ // media controls. The video will be on visible on the underlaid surface.
+ if (!fullscreen_frame_)
+ fullscreen_frame_ = VideoFrame::CreateTransparentFrame(gfx::Size(1, 1));
+ SetCurrentFrameInternal(fullscreen_frame_);
+ client_->repaint();
}
bool WebMediaPlayerAndroid::IsHLSStream() const {

Powered by Google App Engine
This is Rietveld 408576698