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

Side by Side Diff: content/renderer/media/android/renderer_media_player_manager.cc

Issue 278353003: Make RendererMediaPlayerManager a RenderFrameObserver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Minor fix. Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/cdm_messages.h" 9 #include "content/common/media/cdm_messages.h"
10 #include "content/common/media/media_player_messages_android.h" 10 #include "content/common/media/media_player_messages_android.h"
11 #include "content/public/common/renderer_preferences.h" 11 #include "content/public/common/renderer_preferences.h"
12 #include "content/renderer/media/android/proxy_media_keys.h" 12 #include "content/renderer/media/android/proxy_media_keys.h"
13 #include "content/renderer/media/android/renderer_media_player_manager.h" 13 #include "content/renderer/media/android/renderer_media_player_manager.h"
14 #include "content/renderer/media/android/webmediaplayer_android.h" 14 #include "content/renderer/media/android/webmediaplayer_android.h"
15 #include "content/renderer/render_view_impl.h" 15 #include "content/renderer/render_view_impl.h"
16 #include "ui/gfx/rect_f.h" 16 #include "ui/gfx/rect_f.h"
17 17
18 namespace content { 18 namespace content {
19 19
20 // Maximum sizes for various EME API parameters. These are checks to prevent 20 // Maximum sizes for various EME API parameters. These are checks to prevent
21 // unnecessarily large messages from being passed around, and the sizes 21 // unnecessarily large messages from being passed around, and the sizes
22 // are somewhat arbitrary as the EME spec doesn't specify any limits. 22 // are somewhat arbitrary as the EME spec doesn't specify any limits.
23 const size_t kMaxWebSessionIdLength = 512; 23 const size_t kMaxWebSessionIdLength = 512;
24 const size_t kMaxSessionMessageLength = 10240; // 10 KB 24 const size_t kMaxSessionMessageLength = 10240; // 10 KB
25 25
26 RendererMediaPlayerManager::RendererMediaPlayerManager(RenderView* render_view) 26 RendererMediaPlayerManager::RendererMediaPlayerManager(
27 : RenderViewObserver(render_view), 27 RenderFrame* render_frame)
28 : RenderFrameObserver(render_frame),
28 next_media_player_id_(0), 29 next_media_player_id_(0),
29 fullscreen_frame_(NULL), 30 fullscreen_frame_(NULL),
30 pending_fullscreen_frame_(NULL) {} 31 pending_fullscreen_frame_(NULL) {
32 }
31 33
32 RendererMediaPlayerManager::~RendererMediaPlayerManager() { 34 RendererMediaPlayerManager::~RendererMediaPlayerManager() {
33 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; 35 std::map<int, WebMediaPlayerAndroid*>::iterator player_it;
34 for (player_it = media_players_.begin(); 36 for (player_it = media_players_.begin();
35 player_it != media_players_.end(); ++player_it) { 37 player_it != media_players_.end(); ++player_it) {
36 WebMediaPlayerAndroid* player = player_it->second; 38 WebMediaPlayerAndroid* player = player_it->second;
37 player->Detach(); 39 player->Detach();
38 } 40 }
39 41
40 Send(new MediaPlayerHostMsg_DestroyAllMediaPlayers(routing_id())); 42 Send(new MediaPlayerHostMsg_DestroyAllMediaPlayers(routing_id()));
(...skipping 19 matching lines...) Expand all
60 IPC_MESSAGE_HANDLER(MediaPlayerMsg_ConnectedToRemoteDevice, 62 IPC_MESSAGE_HANDLER(MediaPlayerMsg_ConnectedToRemoteDevice,
61 OnConnectedToRemoteDevice) 63 OnConnectedToRemoteDevice)
62 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DisconnectedFromRemoteDevice, 64 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DisconnectedFromRemoteDevice,
63 OnDisconnectedFromRemoteDevice) 65 OnDisconnectedFromRemoteDevice)
64 IPC_MESSAGE_HANDLER(MediaPlayerMsg_RequestFullscreen, 66 IPC_MESSAGE_HANDLER(MediaPlayerMsg_RequestFullscreen,
65 OnRequestFullscreen) 67 OnRequestFullscreen)
66 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidEnterFullscreen, OnDidEnterFullscreen) 68 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidEnterFullscreen, OnDidEnterFullscreen)
67 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidExitFullscreen, OnDidExitFullscreen) 69 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidExitFullscreen, OnDidExitFullscreen)
68 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidMediaPlayerPlay, OnPlayerPlay) 70 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidMediaPlayerPlay, OnPlayerPlay)
69 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidMediaPlayerPause, OnPlayerPause) 71 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidMediaPlayerPause, OnPlayerPause)
72 IPC_MESSAGE_HANDLER(MediaPlayerMsg_PauseVideo, OnPauseVideo)
70 IPC_MESSAGE_HANDLER(CdmMsg_SessionCreated, OnSessionCreated) 73 IPC_MESSAGE_HANDLER(CdmMsg_SessionCreated, OnSessionCreated)
71 IPC_MESSAGE_HANDLER(CdmMsg_SessionMessage, OnSessionMessage) 74 IPC_MESSAGE_HANDLER(CdmMsg_SessionMessage, OnSessionMessage)
72 IPC_MESSAGE_HANDLER(CdmMsg_SessionReady, OnSessionReady) 75 IPC_MESSAGE_HANDLER(CdmMsg_SessionReady, OnSessionReady)
73 IPC_MESSAGE_HANDLER(CdmMsg_SessionClosed, OnSessionClosed) 76 IPC_MESSAGE_HANDLER(CdmMsg_SessionClosed, OnSessionClosed)
74 IPC_MESSAGE_HANDLER(CdmMsg_SessionError, OnSessionError) 77 IPC_MESSAGE_HANDLER(CdmMsg_SessionError, OnSessionError)
75 IPC_MESSAGE_UNHANDLED(handled = false) 78 IPC_MESSAGE_UNHANDLED(handled = false)
76 IPC_END_MESSAGE_MAP() 79 IPC_END_MESSAGE_MAP()
77 return handled; 80 return handled;
78 } 81 }
79 82
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 if (player) 227 if (player)
225 player->OnMediaPlayerPause(); 228 player->OnMediaPlayerPause();
226 } 229 }
227 230
228 void RendererMediaPlayerManager::OnRequestFullscreen(int player_id) { 231 void RendererMediaPlayerManager::OnRequestFullscreen(int player_id) {
229 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id); 232 WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
230 if (player) 233 if (player)
231 player->OnRequestFullscreen(); 234 player->OnRequestFullscreen();
232 } 235 }
233 236
237 void RendererMediaPlayerManager::OnPauseVideo() {
238 ReleaseVideoResources();
239 }
240
234 void RendererMediaPlayerManager::EnterFullscreen(int player_id, 241 void RendererMediaPlayerManager::EnterFullscreen(int player_id,
235 blink::WebFrame* frame) { 242 blink::WebFrame* frame) {
236 pending_fullscreen_frame_ = frame; 243 pending_fullscreen_frame_ = frame;
237 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id)); 244 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id));
238 } 245 }
239 246
240 void RendererMediaPlayerManager::ExitFullscreen(int player_id) { 247 void RendererMediaPlayerManager::ExitFullscreen(int player_id) {
241 pending_fullscreen_frame_ = NULL; 248 pending_fullscreen_frame_ = NULL;
242 fullscreen_frame_ = NULL; 249 fullscreen_frame_ = NULL;
243 Send(new MediaPlayerHostMsg_ExitFullscreen(routing_id(), player_id)); 250 Send(new MediaPlayerHostMsg_ExitFullscreen(routing_id(), player_id));
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 void RendererMediaPlayerManager::RegisterMediaKeys(int cdm_id, 361 void RendererMediaPlayerManager::RegisterMediaKeys(int cdm_id,
355 ProxyMediaKeys* media_keys) { 362 ProxyMediaKeys* media_keys) {
356 // Only allowed to register once. 363 // Only allowed to register once.
357 DCHECK(media_keys_.find(cdm_id) == media_keys_.end()); 364 DCHECK(media_keys_.find(cdm_id) == media_keys_.end());
358 365
359 media_keys_[cdm_id] = media_keys; 366 media_keys_[cdm_id] = media_keys;
360 } 367 }
361 368
362 void RendererMediaPlayerManager::ReleaseVideoResources() { 369 void RendererMediaPlayerManager::ReleaseVideoResources() {
363 std::map<int, WebMediaPlayerAndroid*>::iterator player_it; 370 std::map<int, WebMediaPlayerAndroid*>::iterator player_it;
364 for (player_it = media_players_.begin(); 371 for (player_it = media_players_.begin(); player_it != media_players_.end();
365 player_it != media_players_.end(); ++player_it) { 372 ++player_it) {
366 WebMediaPlayerAndroid* player = player_it->second; 373 WebMediaPlayerAndroid* player = player_it->second;
367 374
368 // Do not release if an audio track is still playing 375 // Do not release if an audio track is still playing
369 if (player && (player->paused() || player->hasVideo())) 376 if (player && (player->paused() || player->hasVideo()))
370 player->ReleaseMediaResources(); 377 player->ReleaseMediaResources();
371 } 378 }
372 } 379 }
373 380
374 WebMediaPlayerAndroid* RendererMediaPlayerManager::GetMediaPlayer( 381 WebMediaPlayerAndroid* RendererMediaPlayerManager::GetMediaPlayer(
375 int player_id) { 382 int player_id) {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 444
438 if (player && player->hasVideo()) { 445 if (player && player->hasVideo()) {
439 if (player->UpdateBoundaryRectangle()) 446 if (player->UpdateBoundaryRectangle())
440 (*changes)[player_it->first] = player->GetBoundaryRectangle(); 447 (*changes)[player_it->first] = player->GetBoundaryRectangle();
441 } 448 }
442 } 449 }
443 } 450 }
444 451
445 bool 452 bool
446 RendererMediaPlayerManager::ShouldUseVideoOverlayForEmbeddedEncryptedVideo() { 453 RendererMediaPlayerManager::ShouldUseVideoOverlayForEmbeddedEncryptedVideo() {
447 const RendererPreferences& prefs = static_cast<RenderViewImpl*>( 454 const RendererPreferences& prefs = static_cast<RenderFrameImpl*>(
448 render_view())->renderer_preferences(); 455 render_frame())->render_view()->renderer_preferences();
449 return prefs.use_video_overlay_for_embedded_encrypted_video; 456 return prefs.use_video_overlay_for_embedded_encrypted_video;
450 } 457 }
451 #endif // defined(VIDEO_HOLE) 458 #endif // defined(VIDEO_HOLE)
452 459
453 } // namespace content 460 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698