OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/media/android/browser_media_player_manager.h" | 5 #include "content/browser/media/android/browser_media_player_manager.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "content/browser/android/content_view_core_impl.h" | 8 #include "content/browser/android/content_view_core_impl.h" |
9 #include "content/browser/media/android/browser_demuxer_android.h" | 9 #include "content/browser/media/android/browser_demuxer_android.h" |
10 #include "content/browser/media/android/media_resource_getter_impl.h" | 10 #include "content/browser/media/android/media_resource_getter_impl.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 | 109 |
110 NOTREACHED(); | 110 NOTREACHED(); |
111 return NULL; | 111 return NULL; |
112 } | 112 } |
113 | 113 |
114 BrowserMediaPlayerManager::BrowserMediaPlayerManager( | 114 BrowserMediaPlayerManager::BrowserMediaPlayerManager( |
115 RenderViewHost* render_view_host) | 115 RenderViewHost* render_view_host) |
116 : WebContentsObserver(WebContents::FromRenderViewHost(render_view_host)), | 116 : WebContentsObserver(WebContents::FromRenderViewHost(render_view_host)), |
117 fullscreen_player_id_(-1), | 117 fullscreen_player_id_(-1), |
118 pending_fullscreen_player_id_(-1), | 118 pending_fullscreen_player_id_(-1), |
| 119 fullscreen_player_is_released_(false), |
119 web_contents_(WebContents::FromRenderViewHost(render_view_host)), | 120 web_contents_(WebContents::FromRenderViewHost(render_view_host)), |
120 weak_ptr_factory_(this) { | 121 weak_ptr_factory_(this) { |
121 } | 122 } |
122 | 123 |
123 BrowserMediaPlayerManager::~BrowserMediaPlayerManager() {} | 124 BrowserMediaPlayerManager::~BrowserMediaPlayerManager() {} |
124 | 125 |
125 bool BrowserMediaPlayerManager::OnMessageReceived(const IPC::Message& msg) { | 126 bool BrowserMediaPlayerManager::OnMessageReceived(const IPC::Message& msg) { |
126 bool handled = true; | 127 bool handled = true; |
127 IPC_BEGIN_MESSAGE_MAP(BrowserMediaPlayerManager, msg) | 128 IPC_BEGIN_MESSAGE_MAP(BrowserMediaPlayerManager, msg) |
128 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_EnterFullscreen, OnEnterFullscreen) | 129 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_EnterFullscreen, OnEnterFullscreen) |
(...skipping 19 matching lines...) Expand all Loading... |
148 OnNotifyExternalSurface) | 149 OnNotifyExternalSurface) |
149 #endif // defined(VIDEO_HOLE) | 150 #endif // defined(VIDEO_HOLE) |
150 IPC_MESSAGE_UNHANDLED(handled = false) | 151 IPC_MESSAGE_UNHANDLED(handled = false) |
151 IPC_END_MESSAGE_MAP() | 152 IPC_END_MESSAGE_MAP() |
152 return handled; | 153 return handled; |
153 } | 154 } |
154 | 155 |
155 void BrowserMediaPlayerManager::FullscreenPlayerPlay() { | 156 void BrowserMediaPlayerManager::FullscreenPlayerPlay() { |
156 MediaPlayerAndroid* player = GetFullscreenPlayer(); | 157 MediaPlayerAndroid* player = GetFullscreenPlayer(); |
157 if (player) { | 158 if (player) { |
| 159 if (fullscreen_player_is_released_) { |
| 160 video_view_->OpenVideo(); |
| 161 fullscreen_player_is_released_ = false; |
| 162 } |
158 player->Start(); | 163 player->Start(); |
159 Send(new MediaPlayerMsg_DidMediaPlayerPlay( | 164 Send(new MediaPlayerMsg_DidMediaPlayerPlay( |
160 routing_id(), fullscreen_player_id_)); | 165 routing_id(), fullscreen_player_id_)); |
161 } | 166 } |
162 } | 167 } |
163 | 168 |
164 void BrowserMediaPlayerManager::FullscreenPlayerPause() { | 169 void BrowserMediaPlayerManager::FullscreenPlayerPause() { |
165 MediaPlayerAndroid* player = GetFullscreenPlayer(); | 170 MediaPlayerAndroid* player = GetFullscreenPlayer(); |
166 if (player) { | 171 if (player) { |
167 player->Pause(true); | 172 player->Pause(true); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 MediaPlayerAndroid* player = GetFullscreenPlayer(); | 204 MediaPlayerAndroid* player = GetFullscreenPlayer(); |
200 fullscreen_player_id_ = -1; | 205 fullscreen_player_id_ = -1; |
201 if (!player) | 206 if (!player) |
202 return; | 207 return; |
203 if (release_media_player) | 208 if (release_media_player) |
204 ReleaseFullscreenPlayer(player); | 209 ReleaseFullscreenPlayer(player); |
205 else | 210 else |
206 player->SetVideoSurface(gfx::ScopedJavaSurface()); | 211 player->SetVideoSurface(gfx::ScopedJavaSurface()); |
207 } | 212 } |
208 | 213 |
209 void BrowserMediaPlayerManager::SuspendFullscreen() { | |
210 MediaPlayerAndroid* player = GetFullscreenPlayer(); | |
211 if (player) | |
212 player->SetVideoSurface(gfx::ScopedJavaSurface()); | |
213 } | |
214 | |
215 void BrowserMediaPlayerManager::ResumeFullscreen( | |
216 gfx::ScopedJavaSurface surface) { | |
217 MediaPlayerAndroid* player = GetFullscreenPlayer(); | |
218 if (player) | |
219 player->SetVideoSurface(surface.Pass()); | |
220 } | |
221 | |
222 void BrowserMediaPlayerManager::OnTimeUpdate(int player_id, | 214 void BrowserMediaPlayerManager::OnTimeUpdate(int player_id, |
223 base::TimeDelta current_time) { | 215 base::TimeDelta current_time) { |
224 Send(new MediaPlayerMsg_MediaTimeUpdate( | 216 Send(new MediaPlayerMsg_MediaTimeUpdate( |
225 routing_id(), player_id, current_time)); | 217 routing_id(), player_id, current_time)); |
226 } | 218 } |
227 | 219 |
228 void BrowserMediaPlayerManager::SetVideoSurface( | 220 void BrowserMediaPlayerManager::SetVideoSurface( |
229 gfx::ScopedJavaSurface surface) { | 221 gfx::ScopedJavaSurface surface) { |
230 MediaPlayerAndroid* player = GetFullscreenPlayer(); | 222 MediaPlayerAndroid* player = GetFullscreenPlayer(); |
231 if (!player) | 223 if (!player) |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
564 void BrowserMediaPlayerManager::OnSetVolume(int player_id, double volume) { | 556 void BrowserMediaPlayerManager::OnSetVolume(int player_id, double volume) { |
565 MediaPlayerAndroid* player = GetPlayer(player_id); | 557 MediaPlayerAndroid* player = GetPlayer(player_id); |
566 if (player) | 558 if (player) |
567 player->SetVolume(volume); | 559 player->SetVolume(volume); |
568 } | 560 } |
569 | 561 |
570 void BrowserMediaPlayerManager::OnReleaseResources(int player_id) { | 562 void BrowserMediaPlayerManager::OnReleaseResources(int player_id) { |
571 MediaPlayerAndroid* player = GetPlayer(player_id); | 563 MediaPlayerAndroid* player = GetPlayer(player_id); |
572 if (player) | 564 if (player) |
573 player->Release(); | 565 player->Release(); |
| 566 if (player_id == fullscreen_player_id_) |
| 567 fullscreen_player_is_released_ = true; |
574 | 568 |
575 #if defined(VIDEO_HOLE) | 569 #if defined(VIDEO_HOLE) |
576 WebContentsViewAndroid* view = | 570 WebContentsViewAndroid* view = |
577 static_cast<WebContentsViewAndroid*>(web_contents_->GetView()); | 571 static_cast<WebContentsViewAndroid*>(web_contents_->GetView()); |
578 if (view) | 572 if (view) |
579 view->NotifyExternalSurface(player_id, false, gfx::RectF()); | 573 view->NotifyExternalSurface(player_id, false, gfx::RectF()); |
580 #endif // defined(VIDEO_HOLE) | 574 #endif // defined(VIDEO_HOLE) |
581 } | 575 } |
582 | 576 |
583 void BrowserMediaPlayerManager::OnDestroyPlayer(int player_id) { | 577 void BrowserMediaPlayerManager::OnDestroyPlayer(int player_id) { |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
859 if (player->IsPlaying()) | 853 if (player->IsPlaying()) |
860 OnProtectedSurfaceRequested(media_keys_id); | 854 OnProtectedSurfaceRequested(media_keys_id); |
861 } | 855 } |
862 | 856 |
863 void BrowserMediaPlayerManager::ReleaseFullscreenPlayer( | 857 void BrowserMediaPlayerManager::ReleaseFullscreenPlayer( |
864 MediaPlayerAndroid* player) { | 858 MediaPlayerAndroid* player) { |
865 player->Release(); | 859 player->Release(); |
866 } | 860 } |
867 | 861 |
868 } // namespace content | 862 } // namespace content |
OLD | NEW |