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

Side by Side Diff: content/browser/media/android/media_web_contents_observer.cc

Issue 278353003: Make RendererMediaPlayerManager a RenderFrameObserver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix VIDEO_HOLE DidCommitCompositorFrame. 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
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/media/android/media_web_contents_observer.h"
6
7 #include "base/stl_util.h"
8 #include "content/browser/media/android/browser_media_player_manager.h"
9 #include "content/common/media/cdm_messages.h"
10 #include "content/common/media/media_player_messages_android.h"
11 #include "content/public/browser/render_frame_host.h"
12 #include "content/public/browser/web_contents.h"
13 #include "ipc/ipc_message_macros.h"
14
15 namespace content {
16
17 MediaWebContentsObserver::MediaWebContentsObserver(
18 RenderViewHost* render_view_host)
19 : WebContentsObserver(WebContents::FromRenderViewHost(render_view_host)) {
20 }
21
22 MediaWebContentsObserver::~MediaWebContentsObserver() {
23 STLDeleteValues(&media_player_managers_);
24 }
25
26 void MediaWebContentsObserver::RenderFrameDeleted(
27 RenderFrameHost* render_frame_host) {
28 BrowserMediaPlayerManager* player_manager =
29 GetMediaPlayerManager(render_frame_host);
30 if (player_manager)
31 delete player_manager;
32 media_player_managers_.erase(render_frame_host);
33 }
34
35 bool MediaWebContentsObserver::OnMessageReceived(
36 const IPC::Message& msg,
37 RenderFrameHost* render_frame_host) {
38 BrowserMediaPlayerManager* player_manager =
39 GetMediaPlayerManager(render_frame_host);
40 DCHECK(player_manager);
41
42 bool handled = true;
43 IPC_BEGIN_MESSAGE_MAP(MediaWebContentsObserver, msg)
44 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_EnterFullscreen,
45 player_manager,
46 BrowserMediaPlayerManager::OnEnterFullscreen)
47 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_ExitFullscreen,
48 player_manager,
49 BrowserMediaPlayerManager::OnExitFullscreen)
50 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_Initialize,
51 player_manager,
52 BrowserMediaPlayerManager::OnInitialize)
53 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_Start,
54 player_manager,
55 BrowserMediaPlayerManager::OnStart)
56 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_Seek,
57 player_manager,
58 BrowserMediaPlayerManager::OnSeek)
59 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_Pause,
60 player_manager,
61 BrowserMediaPlayerManager::OnPause)
62 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_SetVolume,
63 player_manager,
64 BrowserMediaPlayerManager::OnSetVolume)
65 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_SetPoster,
66 player_manager,
67 BrowserMediaPlayerManager::OnSetPoster)
68 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_Release,
69 player_manager,
70 BrowserMediaPlayerManager::OnReleaseResources)
71 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_DestroyMediaPlayer,
72 player_manager,
73 BrowserMediaPlayerManager::OnDestroyPlayer)
74 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_DestroyAllMediaPlayers,
75 player_manager,
76 BrowserMediaPlayerManager::DestroyAllMediaPlayers)
77 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_SetCdm,
78 player_manager,
79 BrowserMediaPlayerManager::OnSetCdm)
80 IPC_MESSAGE_FORWARD(CdmHostMsg_InitializeCdm,
81 player_manager,
82 BrowserMediaPlayerManager::OnInitializeCdm)
83 IPC_MESSAGE_FORWARD(CdmHostMsg_CreateSession,
84 player_manager,
85 BrowserMediaPlayerManager::OnCreateSession)
86 IPC_MESSAGE_FORWARD(CdmHostMsg_UpdateSession,
87 player_manager,
88 BrowserMediaPlayerManager::OnUpdateSession)
89 IPC_MESSAGE_FORWARD(CdmHostMsg_ReleaseSession,
90 player_manager,
91 BrowserMediaPlayerManager::OnReleaseSession)
92 IPC_MESSAGE_FORWARD(CdmHostMsg_DestroyCdm,
93 player_manager,
94 BrowserMediaPlayerManager::OnDestroyCdm)
95 #if defined(VIDEO_HOLE)
96 IPC_MESSAGE_FORWARD(MediaPlayerHostMsg_NotifyExternalSurface,
97 player_manager,
98 BrowserMediaPlayerManager::OnNotifyExternalSurface)
99 #endif // defined(VIDEO_HOLE)
100 IPC_MESSAGE_UNHANDLED(handled = false)
101 IPC_END_MESSAGE_MAP()
102 return handled;
103 }
104
105 BrowserMediaPlayerManager* MediaWebContentsObserver::GetMediaPlayerManager(
106 RenderFrameHost* render_frame_host) {
107 if (!ContainsKey(media_player_managers_, render_frame_host)) {
108 media_player_managers_[render_frame_host] =
109 BrowserMediaPlayerManager::Create(render_frame_host);
110 }
111
112 return media_player_managers_[render_frame_host];
113 }
114
115 void MediaWebContentsObserver::PauseVideo() {
116 for (MediaPlayerManagerMap::iterator iter = media_player_managers_.begin();
117 iter != media_player_managers_.end(); ++iter) {
118 BrowserMediaPlayerManager* manager = iter->second;
119 manager->PauseVideo();
120 }
121 }
122
123 #if defined(VIDEO_HOLE)
124 void MediaWebContentsObserver::OnFrameInfoUpdated() {
125 for (MediaPlayerManagerMap::iterator iter = media_player_managers_.begin();
126 iter != media_player_managers_.end(); ++iter) {
127 BrowserMediaPlayerManager* manager = iter->second;
128 manager->OnFrameInfoUpdated();
129 }
130 }
131 #endif // defined(VIDEO_HOLE)
132
133 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698