| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 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/renderer/media/webmediaplayer_proxy_impl_android.h" | |
| 6 | |
| 7 #include "base/bind.h" | |
| 8 #include "base/message_loop.h" | |
| 9 #include "content/common/media/media_player_messages_android.h" | |
| 10 #include "webkit/renderer/media/android/webmediaplayer_android.h" | |
| 11 #include "webkit/renderer/media/android/webmediaplayer_manager_android.h" | |
| 12 | |
| 13 namespace content { | |
| 14 | |
| 15 WebMediaPlayerProxyImplAndroid::WebMediaPlayerProxyImplAndroid( | |
| 16 RenderView* render_view, | |
| 17 webkit_media::WebMediaPlayerManagerAndroid* manager) | |
| 18 : RenderViewObserver(render_view), | |
| 19 manager_(manager) { | |
| 20 } | |
| 21 | |
| 22 WebMediaPlayerProxyImplAndroid::~WebMediaPlayerProxyImplAndroid() { | |
| 23 Send(new MediaPlayerHostMsg_DestroyAllMediaPlayers(routing_id())); | |
| 24 } | |
| 25 | |
| 26 bool WebMediaPlayerProxyImplAndroid::OnMessageReceived( | |
| 27 const IPC::Message& msg) { | |
| 28 bool handled = true; | |
| 29 IPC_BEGIN_MESSAGE_MAP(WebMediaPlayerProxyImplAndroid, msg) | |
| 30 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaMetadataChanged, | |
| 31 OnMediaMetadataChanged) | |
| 32 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaPlaybackCompleted, | |
| 33 OnMediaPlaybackCompleted) | |
| 34 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaBufferingUpdate, | |
| 35 OnMediaBufferingUpdate) | |
| 36 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaSeekCompleted, OnMediaSeekCompleted) | |
| 37 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaError, OnMediaError) | |
| 38 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaVideoSizeChanged, | |
| 39 OnVideoSizeChanged) | |
| 40 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaTimeUpdate, OnTimeUpdate) | |
| 41 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaPlayerReleased, | |
| 42 OnMediaPlayerReleased) | |
| 43 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidEnterFullscreen, OnDidEnterFullscreen) | |
| 44 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidExitFullscreen, OnDidExitFullscreen) | |
| 45 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidMediaPlayerPlay, OnPlayerPlay) | |
| 46 IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidMediaPlayerPause, OnPlayerPause) | |
| 47 IPC_MESSAGE_HANDLER(MediaPlayerMsg_ReadFromDemuxer, OnReadFromDemuxer) | |
| 48 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaSeekRequest, OnMediaSeekRequest) | |
| 49 IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaConfigRequest, OnMediaConfigRequest) | |
| 50 IPC_MESSAGE_HANDLER(MediaKeysMsg_KeyAdded, OnKeyAdded) | |
| 51 IPC_MESSAGE_HANDLER(MediaKeysMsg_KeyError, OnKeyError) | |
| 52 IPC_MESSAGE_HANDLER(MediaKeysMsg_KeyMessage, OnKeyMessage) | |
| 53 IPC_MESSAGE_UNHANDLED(handled = false) | |
| 54 IPC_END_MESSAGE_MAP() | |
| 55 return handled; | |
| 56 } | |
| 57 | |
| 58 void WebMediaPlayerProxyImplAndroid::Initialize( | |
| 59 int player_id, | |
| 60 const GURL& url, | |
| 61 media::MediaPlayerAndroid::SourceType source_type, | |
| 62 const GURL& first_party_for_cookies) { | |
| 63 Send(new MediaPlayerHostMsg_MediaPlayerInitialize(routing_id(), | |
| 64 player_id, | |
| 65 url, | |
| 66 source_type, | |
| 67 first_party_for_cookies)); | |
| 68 } | |
| 69 | |
| 70 void WebMediaPlayerProxyImplAndroid::Start(int player_id) { | |
| 71 Send(new MediaPlayerHostMsg_MediaPlayerStart(routing_id(), player_id)); | |
| 72 } | |
| 73 | |
| 74 void WebMediaPlayerProxyImplAndroid::Pause(int player_id) { | |
| 75 Send(new MediaPlayerHostMsg_MediaPlayerPause(routing_id(), player_id)); | |
| 76 } | |
| 77 | |
| 78 void WebMediaPlayerProxyImplAndroid::Seek(int player_id, base::TimeDelta time) { | |
| 79 Send(new MediaPlayerHostMsg_MediaPlayerSeek(routing_id(), player_id, time)); | |
| 80 } | |
| 81 | |
| 82 void WebMediaPlayerProxyImplAndroid::ReleaseResources(int player_id) { | |
| 83 Send(new MediaPlayerHostMsg_MediaPlayerRelease(routing_id(), player_id)); | |
| 84 } | |
| 85 | |
| 86 void WebMediaPlayerProxyImplAndroid::DestroyPlayer(int player_id) { | |
| 87 Send(new MediaPlayerHostMsg_DestroyMediaPlayer(routing_id(), player_id)); | |
| 88 } | |
| 89 | |
| 90 void WebMediaPlayerProxyImplAndroid::OnMediaMetadataChanged( | |
| 91 int player_id, | |
| 92 base::TimeDelta duration, | |
| 93 int width, | |
| 94 int height, | |
| 95 bool success) { | |
| 96 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 97 if (player) | |
| 98 player->OnMediaMetadataChanged(duration, width, height, success); | |
| 99 } | |
| 100 | |
| 101 void WebMediaPlayerProxyImplAndroid::OnMediaPlaybackCompleted(int player_id) { | |
| 102 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 103 if (player) | |
| 104 player->OnPlaybackComplete(); | |
| 105 } | |
| 106 | |
| 107 void WebMediaPlayerProxyImplAndroid::OnMediaBufferingUpdate(int player_id, | |
| 108 int percent) { | |
| 109 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 110 if (player) | |
| 111 player->OnBufferingUpdate(percent); | |
| 112 } | |
| 113 | |
| 114 void WebMediaPlayerProxyImplAndroid::OnMediaSeekCompleted( | |
| 115 int player_id, base::TimeDelta current_time) { | |
| 116 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 117 if (player) | |
| 118 player->OnSeekComplete(current_time); | |
| 119 } | |
| 120 | |
| 121 void WebMediaPlayerProxyImplAndroid::OnMediaError(int player_id, int error) { | |
| 122 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 123 if (player) | |
| 124 player->OnMediaError(error); | |
| 125 } | |
| 126 | |
| 127 void WebMediaPlayerProxyImplAndroid::OnVideoSizeChanged( | |
| 128 int player_id, int width, int height) { | |
| 129 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 130 if (player) | |
| 131 player->OnVideoSizeChanged(width, height); | |
| 132 } | |
| 133 | |
| 134 void WebMediaPlayerProxyImplAndroid::OnTimeUpdate( | |
| 135 int player_id, base::TimeDelta current_time) { | |
| 136 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 137 if (player) | |
| 138 player->OnTimeUpdate(current_time); | |
| 139 } | |
| 140 | |
| 141 void WebMediaPlayerProxyImplAndroid::OnMediaPlayerReleased(int player_id) { | |
| 142 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 143 if (player) | |
| 144 player->OnPlayerReleased(); | |
| 145 } | |
| 146 | |
| 147 void WebMediaPlayerProxyImplAndroid::OnDidEnterFullscreen(int player_id) { | |
| 148 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 149 if (player) | |
| 150 player->OnDidEnterFullscreen(); | |
| 151 } | |
| 152 | |
| 153 void WebMediaPlayerProxyImplAndroid::OnDidExitFullscreen(int player_id) { | |
| 154 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 155 if (player) | |
| 156 player->OnDidExitFullscreen(); | |
| 157 } | |
| 158 | |
| 159 void WebMediaPlayerProxyImplAndroid::OnPlayerPlay(int player_id) { | |
| 160 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 161 if (player) | |
| 162 player->OnMediaPlayerPlay(); | |
| 163 } | |
| 164 | |
| 165 void WebMediaPlayerProxyImplAndroid::OnPlayerPause(int player_id) { | |
| 166 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 167 if (player) | |
| 168 player->OnMediaPlayerPause(); | |
| 169 } | |
| 170 | |
| 171 void WebMediaPlayerProxyImplAndroid::EnterFullscreen(int player_id) { | |
| 172 Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id)); | |
| 173 } | |
| 174 | |
| 175 void WebMediaPlayerProxyImplAndroid::ExitFullscreen(int player_id) { | |
| 176 Send(new MediaPlayerHostMsg_ExitFullscreen(routing_id(), player_id)); | |
| 177 } | |
| 178 | |
| 179 void WebMediaPlayerProxyImplAndroid::ReadFromDemuxerAck( | |
| 180 int player_id, | |
| 181 const media::MediaPlayerHostMsg_ReadFromDemuxerAck_Params& params) { | |
| 182 Send(new MediaPlayerHostMsg_ReadFromDemuxerAck( | |
| 183 routing_id(), player_id, params)); | |
| 184 } | |
| 185 | |
| 186 void WebMediaPlayerProxyImplAndroid::InitializeCDM( | |
| 187 int media_keys_id, | |
| 188 const std::vector<uint8>& uuid) { | |
| 189 Send(new MediaKeysHostMsg_InitializeCDM(routing_id(), media_keys_id, uuid)); | |
| 190 } | |
| 191 | |
| 192 void WebMediaPlayerProxyImplAndroid::GenerateKeyRequest( | |
| 193 int media_keys_id, | |
| 194 const std::string& type, | |
| 195 const std::vector<uint8>& init_data) { | |
| 196 Send(new MediaKeysHostMsg_GenerateKeyRequest( | |
| 197 routing_id(), media_keys_id, type, init_data)); | |
| 198 } | |
| 199 | |
| 200 void WebMediaPlayerProxyImplAndroid::AddKey(int media_keys_id, | |
| 201 const std::vector<uint8>& key, | |
| 202 const std::vector<uint8>& init_data, | |
| 203 const std::string& session_id) { | |
| 204 Send(new MediaKeysHostMsg_AddKey( | |
| 205 routing_id(), media_keys_id, key, init_data, session_id)); | |
| 206 } | |
| 207 | |
| 208 void WebMediaPlayerProxyImplAndroid::CancelKeyRequest( | |
| 209 int media_keys_id, | |
| 210 const std::string& session_id) { | |
| 211 Send(new MediaKeysHostMsg_CancelKeyRequest( | |
| 212 routing_id(), media_keys_id, session_id)); | |
| 213 } | |
| 214 | |
| 215 #if defined(GOOGLE_TV) | |
| 216 void WebMediaPlayerProxyImplAndroid::RequestExternalSurface( | |
| 217 int player_id, const gfx::RectF& geometry) { | |
| 218 Send(new MediaPlayerHostMsg_NotifyExternalSurface( | |
| 219 routing_id(), player_id, true, geometry)); | |
| 220 } | |
| 221 | |
| 222 void WebMediaPlayerProxyImplAndroid::DidCommitCompositorFrame() { | |
| 223 std::map<int, gfx::RectF> geometry_change; | |
| 224 manager_->RetrieveGeometryChanges(&geometry_change); | |
| 225 for (std::map<int, gfx::RectF>::iterator it = geometry_change.begin(); | |
| 226 it != geometry_change.end(); | |
| 227 ++it) { | |
| 228 Send(new MediaPlayerHostMsg_NotifyExternalSurface( | |
| 229 routing_id(), it->first, false, it->second)); | |
| 230 } | |
| 231 } | |
| 232 #endif | |
| 233 | |
| 234 void WebMediaPlayerProxyImplAndroid::OnReadFromDemuxer( | |
| 235 int player_id, | |
| 236 media::DemuxerStream::Type type, | |
| 237 bool seek_done) { | |
| 238 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 239 if (player) | |
| 240 player->OnReadFromDemuxer(type, seek_done); | |
| 241 } | |
| 242 | |
| 243 void WebMediaPlayerProxyImplAndroid::DemuxerReady( | |
| 244 int player_id, | |
| 245 const media::MediaPlayerHostMsg_DemuxerReady_Params& params) { | |
| 246 Send(new MediaPlayerHostMsg_DemuxerReady(routing_id(), player_id, params)); | |
| 247 } | |
| 248 | |
| 249 void WebMediaPlayerProxyImplAndroid::DurationChanged( | |
| 250 int player_id, const base::TimeDelta& duration) { | |
| 251 Send(new MediaPlayerHostMsg_DurationChanged( | |
| 252 routing_id(), player_id, duration)); | |
| 253 } | |
| 254 | |
| 255 webkit_media::WebMediaPlayerAndroid* | |
| 256 WebMediaPlayerProxyImplAndroid::GetWebMediaPlayer(int player_id) { | |
| 257 return static_cast<webkit_media::WebMediaPlayerAndroid*>( | |
| 258 manager_->GetMediaPlayer(player_id)); | |
| 259 } | |
| 260 | |
| 261 void WebMediaPlayerProxyImplAndroid::OnMediaSeekRequest( | |
| 262 int player_id, base::TimeDelta time_to_seek, unsigned seek_request_id) { | |
| 263 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 264 if (player) { | |
| 265 Send(new MediaPlayerHostMsg_MediaSeekRequestAck(routing_id(), player_id, | |
| 266 seek_request_id)); | |
| 267 player->OnMediaSeekRequest(time_to_seek); | |
| 268 } | |
| 269 } | |
| 270 | |
| 271 void WebMediaPlayerProxyImplAndroid::OnMediaConfigRequest(int player_id) { | |
| 272 webkit_media::WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id); | |
| 273 if (player) | |
| 274 player->OnMediaConfigRequest(); | |
| 275 } | |
| 276 | |
| 277 void WebMediaPlayerProxyImplAndroid::OnKeyAdded(int media_keys_id, | |
| 278 const std::string& session_id) { | |
| 279 webkit_media::WebMediaPlayerAndroid* player = | |
| 280 GetWebMediaPlayer(media_keys_id); | |
| 281 if (player) | |
| 282 player->OnKeyAdded(session_id); | |
| 283 } | |
| 284 | |
| 285 void WebMediaPlayerProxyImplAndroid::OnKeyError( | |
| 286 int media_keys_id, | |
| 287 const std::string& session_id, | |
| 288 media::MediaKeys::KeyError error_code, | |
| 289 int system_code) { | |
| 290 webkit_media::WebMediaPlayerAndroid* player = | |
| 291 GetWebMediaPlayer(media_keys_id); | |
| 292 if (player) | |
| 293 player->OnKeyError(session_id, error_code, system_code); | |
| 294 } | |
| 295 | |
| 296 void WebMediaPlayerProxyImplAndroid::OnKeyMessage( | |
| 297 int media_keys_id, | |
| 298 const std::string& session_id, | |
| 299 const std::string& message, | |
| 300 const std::string& destination_url) { | |
| 301 webkit_media::WebMediaPlayerAndroid* player = | |
| 302 GetWebMediaPlayer(media_keys_id); | |
| 303 if (player) | |
| 304 player->OnKeyMessage(session_id, message, destination_url); | |
| 305 } | |
| 306 | |
| 307 } // namespace content | |
| OLD | NEW |