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

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

Issue 295103015: Separate RendererCdmManager from RendererMediaPlayerManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase again Created 6 years, 6 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 #ifndef CONTENT_RENDERER_MEDIA_ANDROID_RENDERER_MEDIA_PLAYER_MANAGER_H_ 5 #ifndef CONTENT_RENDERER_MEDIA_ANDROID_RENDERER_MEDIA_PLAYER_MANAGER_H_
6 #define CONTENT_RENDERER_MEDIA_ANDROID_RENDERER_MEDIA_PLAYER_MANAGER_H_ 6 #define CONTENT_RENDERER_MEDIA_ANDROID_RENDERER_MEDIA_PLAYER_MANAGER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include <vector>
11 10
12 #include "base/basictypes.h" 11 #include "base/basictypes.h"
13 #include "base/time/time.h" 12 #include "base/time/time.h"
14 #include "content/common/media/cdm_messages_enums.h"
15 #include "content/common/media/media_player_messages_enums_android.h" 13 #include "content/common/media/media_player_messages_enums_android.h"
16 #include "content/public/renderer/render_frame_observer.h" 14 #include "content/public/renderer/render_frame_observer.h"
17 #include "media/base/android/media_player_android.h" 15 #include "media/base/android/media_player_android.h"
18 #include "media/base/media_keys.h"
19 #include "url/gurl.h" 16 #include "url/gurl.h"
20 17
21 namespace blink { 18 namespace blink {
22 class WebFrame; 19 class WebFrame;
23 } 20 }
24 21
25 namespace gfx { 22 namespace gfx {
26 class RectF; 23 class RectF;
27 } 24 }
28 25
29 namespace content { 26 namespace content {
30 27
31 class ProxyMediaKeys;
32 class WebMediaPlayerAndroid; 28 class WebMediaPlayerAndroid;
33 29
34 // Class for managing all the WebMediaPlayerAndroid objects in the same 30 // Class for managing all the WebMediaPlayerAndroid objects in the same
35 // RenderFrame. 31 // RenderFrame.
36 class RendererMediaPlayerManager : public RenderFrameObserver { 32 class RendererMediaPlayerManager : public RenderFrameObserver {
37 public: 33 public:
38 static const int kInvalidCdmId = 0;
39
40 // Constructs a RendererMediaPlayerManager object for the |render_frame|. 34 // Constructs a RendererMediaPlayerManager object for the |render_frame|.
41 RendererMediaPlayerManager(RenderFrame* render_frame); 35 explicit RendererMediaPlayerManager(RenderFrame* render_frame);
42 virtual ~RendererMediaPlayerManager(); 36 virtual ~RendererMediaPlayerManager();
43 37
44 // RenderFrameObserver overrides. 38 // RenderFrameObserver overrides.
45 virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 39 virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
46 40
47 // Initializes a MediaPlayerAndroid object in browser process. 41 // Initializes a MediaPlayerAndroid object in browser process.
48 void Initialize(MediaPlayerHostMsg_Initialize_Type type, 42 void Initialize(MediaPlayerHostMsg_Initialize_Type type,
49 int player_id, 43 int player_id,
50 const GURL& url, 44 const GURL& url,
51 const GURL& first_party_for_cookies, 45 const GURL& first_party_for_cookies,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 void RequestExternalSurface(int player_id, const gfx::RectF& geometry); 86 void RequestExternalSurface(int player_id, const gfx::RectF& geometry);
93 87
94 // RenderFrameObserver overrides. 88 // RenderFrameObserver overrides.
95 virtual void DidCommitCompositorFrame() OVERRIDE; 89 virtual void DidCommitCompositorFrame() OVERRIDE;
96 90
97 // Returns true if a media player should use video-overlay for the embedded 91 // Returns true if a media player should use video-overlay for the embedded
98 // encrypted video. 92 // encrypted video.
99 bool ShouldUseVideoOverlayForEmbeddedEncryptedVideo(); 93 bool ShouldUseVideoOverlayForEmbeddedEncryptedVideo();
100 #endif // defined(VIDEO_HOLE) 94 #endif // defined(VIDEO_HOLE)
101 95
102 // Encrypted media related methods.
103 void InitializeCdm(int cdm_id,
104 ProxyMediaKeys* media_keys,
105 const std::string& key_system,
106 const GURL& security_origin);
107 void CreateSession(int cdm_id,
108 uint32 session_id,
109 CdmHostMsg_CreateSession_ContentType conent_type,
110 const std::vector<uint8>& init_data);
111 void UpdateSession(int cdm_id,
112 uint32 session_id,
113 const std::vector<uint8>& response);
114 void ReleaseSession(int cdm_id, uint32 session_id);
115 void DestroyCdm(int cdm_id);
116
117 // Registers and unregisters a WebMediaPlayerAndroid object. 96 // Registers and unregisters a WebMediaPlayerAndroid object.
118 int RegisterMediaPlayer(WebMediaPlayerAndroid* player); 97 int RegisterMediaPlayer(WebMediaPlayerAndroid* player);
119 void UnregisterMediaPlayer(int player_id); 98 void UnregisterMediaPlayer(int player_id);
120 99
121 // Registers a ProxyMediaKeys object. There must be a WebMediaPlayerAndroid
122 // object already registered for this id, and it is unregistered when the
123 // player is unregistered. For now |cdm_id| is the same as player_id
124 // used in other methods.
125 void RegisterMediaKeys(int cdm_id, ProxyMediaKeys* media_keys);
126
127 // Checks whether a player can enter fullscreen. 100 // Checks whether a player can enter fullscreen.
128 bool CanEnterFullscreen(blink::WebFrame* frame); 101 bool CanEnterFullscreen(blink::WebFrame* frame);
129 102
130 // Called when a player entered or exited fullscreen. 103 // Called when a player entered or exited fullscreen.
131 void DidEnterFullscreen(blink::WebFrame* frame); 104 void DidEnterFullscreen(blink::WebFrame* frame);
132 void DidExitFullscreen(); 105 void DidExitFullscreen();
133 106
134 // Checks whether the Webframe is in fullscreen. 107 // Checks whether the Webframe is in fullscreen.
135 bool IsInFullscreen(blink::WebFrame* frame); 108 bool IsInFullscreen(blink::WebFrame* frame);
136 109
137 // True if a newly created media player should enter fullscreen. 110 // True if a newly created media player should enter fullscreen.
138 bool ShouldEnterFullscreen(blink::WebFrame* frame); 111 bool ShouldEnterFullscreen(blink::WebFrame* frame);
139 112
140 // Gets the pointer to WebMediaPlayerAndroid given the |player_id|. 113 // Gets the pointer to WebMediaPlayerAndroid given the |player_id|.
141 WebMediaPlayerAndroid* GetMediaPlayer(int player_id); 114 WebMediaPlayerAndroid* GetMediaPlayer(int player_id);
142 115
143 // Gets the pointer to ProxyMediaKeys given the |cdm_id|.
144 ProxyMediaKeys* GetMediaKeys(int cdm_id);
145
146 #if defined(VIDEO_HOLE) 116 #if defined(VIDEO_HOLE)
147 // Gets the list of media players with video geometry changes. 117 // Gets the list of media players with video geometry changes.
148 void RetrieveGeometryChanges(std::map<int, gfx::RectF>* changes); 118 void RetrieveGeometryChanges(std::map<int, gfx::RectF>* changes);
149 #endif // defined(VIDEO_HOLE) 119 #endif // defined(VIDEO_HOLE)
150 120
151 private: 121 private:
152 // Message handlers. 122 // Message handlers.
153 void OnMediaMetadataChanged(int player_id, 123 void OnMediaMetadataChanged(int player_id,
154 base::TimeDelta duration, 124 base::TimeDelta duration,
155 int width, 125 int width,
156 int height, 126 int height,
157 bool success); 127 bool success);
158 void OnMediaPlaybackCompleted(int player_id); 128 void OnMediaPlaybackCompleted(int player_id);
159 void OnMediaBufferingUpdate(int player_id, int percent); 129 void OnMediaBufferingUpdate(int player_id, int percent);
160 void OnSeekRequest(int player_id, const base::TimeDelta& time_to_seek); 130 void OnSeekRequest(int player_id, const base::TimeDelta& time_to_seek);
161 void OnSeekCompleted(int player_id, const base::TimeDelta& current_time); 131 void OnSeekCompleted(int player_id, const base::TimeDelta& current_time);
162 void OnMediaError(int player_id, int error); 132 void OnMediaError(int player_id, int error);
163 void OnVideoSizeChanged(int player_id, int width, int height); 133 void OnVideoSizeChanged(int player_id, int width, int height);
164 void OnTimeUpdate(int player_id, base::TimeDelta current_time); 134 void OnTimeUpdate(int player_id, base::TimeDelta current_time);
165 void OnMediaPlayerReleased(int player_id); 135 void OnMediaPlayerReleased(int player_id);
166 void OnConnectedToRemoteDevice(int player_id, 136 void OnConnectedToRemoteDevice(int player_id,
167 const std::string& remote_playback_message); 137 const std::string& remote_playback_message);
168 void OnDisconnectedFromRemoteDevice(int player_id); 138 void OnDisconnectedFromRemoteDevice(int player_id);
169 void OnDidExitFullscreen(int player_id); 139 void OnDidExitFullscreen(int player_id);
170 void OnDidEnterFullscreen(int player_id); 140 void OnDidEnterFullscreen(int player_id);
171 void OnPlayerPlay(int player_id); 141 void OnPlayerPlay(int player_id);
172 void OnPlayerPause(int player_id); 142 void OnPlayerPause(int player_id);
173 void OnRequestFullscreen(int player_id); 143 void OnRequestFullscreen(int player_id);
174 void OnPauseVideo(); 144 void OnPauseVideo();
175 void OnSessionCreated(int cdm_id,
176 uint32 session_id,
177 const std::string& web_session_id);
178 void OnSessionMessage(int cdm_id,
179 uint32 session_id,
180 const std::vector<uint8>& message,
181 const GURL& destination_url);
182 void OnSessionReady(int cdm_id, uint32 session_id);
183 void OnSessionClosed(int cdm_id, uint32 session_id);
184 void OnSessionError(int cdm_id,
185 uint32 session_id,
186 media::MediaKeys::KeyError error_code,
187 uint32 system_code);
188 145
189 // Release all video player resources. 146 // Release all video player resources.
190 // If something is in progress the resource will not be freed. It will 147 // If something is in progress the resource will not be freed. It will
191 // only be freed once the tab is destroyed or if the user navigates away 148 // only be freed once the tab is destroyed or if the user navigates away
192 // via WebMediaPlayerAndroid::Destroy. 149 // via WebMediaPlayerAndroid::Destroy.
193 void ReleaseVideoResources(); 150 void ReleaseVideoResources();
194 151
195 // Info for all available WebMediaPlayerAndroid on a page; kept so that 152 // Info for all available WebMediaPlayerAndroid on a page; kept so that
196 // we can enumerate them to send updates about tab focus and visibility. 153 // we can enumerate them to send updates about tab focus and visibility.
197 std::map<int, WebMediaPlayerAndroid*> media_players_; 154 std::map<int, WebMediaPlayerAndroid*> media_players_;
198 155
199 // Info for all available ProxyMediaKeys. There must be at most one
200 // ProxyMediaKeys for each available WebMediaPlayerAndroid.
201 std::map<int, ProxyMediaKeys*> media_keys_;
202
203 int next_media_player_id_; 156 int next_media_player_id_;
204 157
205 // WebFrame of the fullscreen video. 158 // WebFrame of the fullscreen video.
206 blink::WebFrame* fullscreen_frame_; 159 blink::WebFrame* fullscreen_frame_;
207 160
208 // WebFrame of pending fullscreen request. 161 // WebFrame of pending fullscreen request.
209 blink::WebFrame* pending_fullscreen_frame_; 162 blink::WebFrame* pending_fullscreen_frame_;
210 163
211 DISALLOW_COPY_AND_ASSIGN(RendererMediaPlayerManager); 164 DISALLOW_COPY_AND_ASSIGN(RendererMediaPlayerManager);
212 }; 165 };
213 166
214 } // namespace content 167 } // namespace content
215 168
216 #endif // CONTENT_RENDERER_MEDIA_ANDROID_RENDERER_MEDIA_PLAYER_MANAGER_H_ 169 #endif // CONTENT_RENDERER_MEDIA_ANDROID_RENDERER_MEDIA_PLAYER_MANAGER_H_
OLDNEW
« no previous file with comments | « content/renderer/media/android/proxy_media_keys.cc ('k') | content/renderer/media/android/renderer_media_player_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698