Index: content/renderer/media/android/renderer_media_player_manager.cc |
diff --git a/content/renderer/media/android/renderer_media_player_manager.cc b/content/renderer/media/android/renderer_media_player_manager.cc |
index 6969511946544753df6229b653dbd617b63b2766..8d3a069f31e49197806dc95c708c7f1624905835 100644 |
--- a/content/renderer/media/android/renderer_media_player_manager.cc |
+++ b/content/renderer/media/android/renderer_media_player_manager.cc |
@@ -24,7 +24,8 @@ namespace content { |
RendererMediaPlayerManager::RendererMediaPlayerManager(RenderView* render_view) |
: RenderViewObserver(render_view), |
next_media_player_id_(0), |
- fullscreen_frame_(NULL) {} |
+ fullscreen_frame_(NULL), |
+ pending_fullscreen_frame_(NULL) {} |
RendererMediaPlayerManager::~RendererMediaPlayerManager() { |
std::map<int, WebMediaPlayerAndroid*>::iterator player_it; |
@@ -223,11 +224,14 @@ void RendererMediaPlayerManager::OnRequestFullscreen(int player_id) { |
player->OnRequestFullscreen(); |
} |
-void RendererMediaPlayerManager::EnterFullscreen(int player_id) { |
+void RendererMediaPlayerManager::EnterFullscreen(int player_id, |
+ blink::WebFrame* frame) { |
+ pending_fullscreen_frame_ = frame; |
Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id)); |
} |
void RendererMediaPlayerManager::ExitFullscreen(int player_id) { |
+ pending_fullscreen_frame_ = NULL; |
Send(new MediaPlayerHostMsg_ExitFullscreen(routing_id(), player_id)); |
} |
@@ -381,10 +385,12 @@ ProxyMediaKeys* RendererMediaPlayerManager::GetMediaKeys(int media_keys_id) { |
} |
bool RendererMediaPlayerManager::CanEnterFullscreen(blink::WebFrame* frame) { |
- return !fullscreen_frame_ || IsInFullscreen(frame); |
+ return (!fullscreen_frame_ && !pending_fullscreen_frame_) |
+ || ShouldEnterFullscreen(frame); |
} |
void RendererMediaPlayerManager::DidEnterFullscreen(blink::WebFrame* frame) { |
+ pending_fullscreen_frame_ = NULL; |
fullscreen_frame_ = frame; |
} |
@@ -396,6 +402,10 @@ bool RendererMediaPlayerManager::IsInFullscreen(blink::WebFrame* frame) { |
return fullscreen_frame_ == frame; |
} |
+bool RendererMediaPlayerManager::ShouldEnterFullscreen(blink::WebFrame* frame) { |
+ return fullscreen_frame_ == frame || pending_fullscreen_frame_ == frame; |
+} |
+ |
#if defined(VIDEO_HOLE) |
void RendererMediaPlayerManager::RequestExternalSurface( |
int player_id, |