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/renderer/media/android/renderer_media_player_manager.h" | 5 #include "content/renderer/media/android/renderer_media_player_manager.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "content/common/media/media_player_messages_android.h" | 9 #include "content/common/media/media_player_messages_android.h" |
10 #include "content/renderer/media/android/proxy_media_keys.h" | 10 #include "content/renderer/media/android/proxy_media_keys.h" |
11 #include "content/renderer/media/android/renderer_media_player_manager.h" | 11 #include "content/renderer/media/android/renderer_media_player_manager.h" |
12 #include "content/renderer/media/android/webmediaplayer_android.h" | 12 #include "content/renderer/media/android/webmediaplayer_android.h" |
13 #include "ui/gfx/rect_f.h" | 13 #include "ui/gfx/rect_f.h" |
14 | 14 |
15 namespace content { | 15 namespace content { |
16 | 16 |
17 RendererMediaPlayerManager::RendererMediaPlayerManager(RenderView* render_view) | 17 RendererMediaPlayerManager::RendererMediaPlayerManager(RenderView* render_view) |
18 : RenderViewObserver(render_view), | 18 : RenderViewObserver(render_view), |
19 next_media_player_id_(0), | 19 next_media_player_id_(0), |
20 fullscreen_player_id_(-1), | |
21 paused_fullscreen_player_id_(-1), | |
20 fullscreen_frame_(NULL) {} | 22 fullscreen_frame_(NULL) {} |
21 | 23 |
22 RendererMediaPlayerManager::~RendererMediaPlayerManager() { | 24 RendererMediaPlayerManager::~RendererMediaPlayerManager() { |
23 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; | 25 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; |
24 for (player_it = media_players_.begin(); | 26 for (player_it = media_players_.begin(); |
25 player_it != media_players_.end(); ++player_it) { | 27 player_it != media_players_.end(); ++player_it) { |
26 WebMediaPlayerAndroid* player = player_it->second; | 28 WebMediaPlayerAndroid* player = player_it->second; |
27 player->Detach(); | 29 player->Detach(); |
28 } | 30 } |
29 | 31 |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
181 } | 183 } |
182 | 184 |
183 void RendererMediaPlayerManager::OnDisconnectedFromRemoteDevice(int player_id) { | 185 void RendererMediaPlayerManager::OnDisconnectedFromRemoteDevice(int player_id) { |
184 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 186 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
185 if (player) | 187 if (player) |
186 player->OnDisconnectedFromRemoteDevice(); | 188 player->OnDisconnectedFromRemoteDevice(); |
187 } | 189 } |
188 | 190 |
189 void RendererMediaPlayerManager::OnDidEnterFullscreen(int player_id) { | 191 void RendererMediaPlayerManager::OnDidEnterFullscreen(int player_id) { |
190 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 192 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
191 if (player) | 193 if (player) { |
194 fullscreen_player_id_ = player_id; | |
192 player->OnDidEnterFullscreen(); | 195 player->OnDidEnterFullscreen(); |
196 } | |
193 } | 197 } |
194 | 198 |
195 void RendererMediaPlayerManager::OnDidExitFullscreen(int player_id) { | 199 void RendererMediaPlayerManager::OnDidExitFullscreen(int player_id) { |
196 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 200 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
197 if (player) | 201 if (player) { |
202 fullscreen_player_id_ = -1; | |
198 player->OnDidExitFullscreen(); | 203 player->OnDidExitFullscreen(); |
204 } | |
199 } | 205 } |
200 | 206 |
201 void RendererMediaPlayerManager::OnPlayerPlay(int player_id) { | 207 void RendererMediaPlayerManager::OnPlayerPlay(int player_id) { |
202 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 208 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
203 if (player) | 209 if (player) |
204 player->OnMediaPlayerPlay(); | 210 player->OnMediaPlayerPlay(); |
205 } | 211 } |
206 | 212 |
207 void RendererMediaPlayerManager::OnPlayerPause(int player_id) { | 213 void RendererMediaPlayerManager::OnPlayerPause(int player_id) { |
208 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 214 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
209 if (player) | 215 if (player) |
210 player->OnMediaPlayerPause(); | 216 player->OnMediaPlayerPause(); |
211 } | 217 } |
212 | 218 |
213 void RendererMediaPlayerManager::OnRequestFullscreen(int player_id) { | 219 void RendererMediaPlayerManager::OnRequestFullscreen(int player_id) { |
214 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); | 220 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); |
215 if (player) | 221 if (player) |
216 player->OnRequestFullscreen(); | 222 player->OnRequestFullscreen(); |
217 } | 223 } |
218 | 224 |
219 void RendererMediaPlayerManager::EnterFullscreen(int player_id) { | 225 void RendererMediaPlayerManager::EnterFullscreen(int player_id) { |
220 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id)); | 226 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id)); |
221 } | 227 } |
222 | 228 |
223 void RendererMediaPlayerManager::ExitFullscreen(int player_id) { | 229 void RendererMediaPlayerManager::ExitFullscreen(int player_id) { |
230 DCHECK(player_id == fullscreen_player_id_); | |
224 Send(new MediaPlayerHostMsg_ExitFullscreen(routing_id(), player_id)); | 231 Send(new MediaPlayerHostMsg_ExitFullscreen(routing_id(), player_id)); |
225 } | 232 } |
226 | 233 |
227 void RendererMediaPlayerManager::InitializeCDM(int media_keys_id, | 234 void RendererMediaPlayerManager::InitializeCDM(int media_keys_id, |
228 ProxyMediaKeys* media_keys, | 235 ProxyMediaKeys* media_keys, |
229 const std::vector<uint8>& uuid, | 236 const std::vector<uint8>& uuid, |
230 const GURL& frame_url) { | 237 const GURL& frame_url) { |
231 RegisterMediaKeys(media_keys_id, media_keys); | 238 RegisterMediaKeys(media_keys_id, media_keys); |
232 Send(new MediaKeysHostMsg_InitializeCDM( | 239 Send(new MediaKeysHostMsg_InitializeCDM( |
233 routing_id(), media_keys_id, uuid, frame_url)); | 240 routing_id(), media_keys_id, uuid, frame_url)); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
316 // |media_keys_id|. For now |media_keys_id| is the same as player_id | 323 // |media_keys_id|. For now |media_keys_id| is the same as player_id |
317 // used in other methods. | 324 // used in other methods. |
318 DCHECK(media_players_.find(media_keys_id) != media_players_.end()); | 325 DCHECK(media_players_.find(media_keys_id) != media_players_.end()); |
319 | 326 |
320 // Only allowed to register once. | 327 // Only allowed to register once. |
321 DCHECK(media_keys_.find(media_keys_id) == media_keys_.end()); | 328 DCHECK(media_keys_.find(media_keys_id) == media_keys_.end()); |
322 | 329 |
323 media_keys_[media_keys_id] = media_keys; | 330 media_keys_[media_keys_id] = media_keys; |
324 } | 331 } |
325 | 332 |
326 void RendererMediaPlayerManager::ReleaseVideoResources() { | 333 void RendererMediaPlayerManager::PauseVideo() { |
qinmin
2013/12/05 23:02:34
I don't think this is right. This function is not
kbalazs
2013/12/05 23:36:22
I think you misread it, there is no early return f
qinmin
2013/12/06 00:10:13
ah...sorry, i thought you were removing the origin
kbalazs
2013/12/06 19:15:03
Done, I moved the new code into SuspendFullscreenV
| |
334 if (fullscreen_player_id_ != -1) { | |
335 ExitFullscreen(fullscreen_player_id_); | |
336 paused_fullscreen_player_id_ = fullscreen_player_id_; | |
337 } | |
338 | |
327 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; | 339 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; |
328 for (player_it = media_players_.begin(); | 340 for (player_it = media_players_.begin(); |
329 player_it != media_players_.end(); ++player_it) { | 341 player_it != media_players_.end(); ++player_it) { |
330 WebMediaPlayerAndroid* player = player_it->second; | 342 WebMediaPlayerAndroid* player = player_it->second; |
331 | 343 |
332 // Do not release if an audio track is still playing | 344 // Do not release if an audio track is still playing |
333 if (player && (player->paused() || player->hasVideo())) | 345 if (player && (player->paused() || player->hasVideo())) |
334 player->ReleaseMediaResources(); | 346 player->ReleaseMediaResources(); |
335 } | 347 } |
336 } | 348 } |
337 | 349 |
350 void RendererMediaPlayerManager::ResumeVideo() { | |
351 if (paused_fullscreen_player_id_ != -1) { | |
352 EnterFullscreen(paused_fullscreen_player_id_); | |
353 paused_fullscreen_player_id_ = -1; | |
354 } | |
355 } | |
356 | |
338 WebMediaPlayerAndroid* RendererMediaPlayerManager::GetMediaPlayer( | 357 WebMediaPlayerAndroid* RendererMediaPlayerManager::GetMediaPlayer( |
339 int player_id) { | 358 int player_id) { |
340 std::map<int, WebMediaPlayerAndroid*>::iterator iter = | 359 std::map<int, WebMediaPlayerAndroid*>::iterator iter = |
341 media_players_.find(player_id); | 360 media_players_.find(player_id); |
342 if (iter != media_players_.end()) | 361 if (iter != media_players_.end()) |
343 return iter->second; | 362 return iter->second; |
344 return NULL; | 363 return NULL; |
345 } | 364 } |
346 | 365 |
347 ProxyMediaKeys* RendererMediaPlayerManager::GetMediaKeys(int media_keys_id) { | 366 ProxyMediaKeys* RendererMediaPlayerManager::GetMediaKeys(int media_keys_id) { |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
398 gfx::RectF rect; | 417 gfx::RectF rect; |
399 if (player->RetrieveGeometryChange(&rect)) { | 418 if (player->RetrieveGeometryChange(&rect)) { |
400 (*changes)[player_it->first] = rect; | 419 (*changes)[player_it->first] = rect; |
401 } | 420 } |
402 } | 421 } |
403 } | 422 } |
404 } | 423 } |
405 #endif | 424 #endif |
406 | 425 |
407 } // namespace content | 426 } // namespace content |
OLD | NEW |