| Index: content/browser/android/media_player_manager_android.cc
|
| diff --git a/content/browser/android/media_player_manager_android.cc b/content/browser/android/media_player_manager_android.cc
|
| index 6277ecdc586b36a7650b08963be00bae7dd99201..868ae3ea67c664caf7fd37c7bb5e7cb47684d9d8 100644
|
| --- a/content/browser/android/media_player_manager_android.cc
|
| +++ b/content/browser/android/media_player_manager_android.cc
|
| @@ -23,7 +23,8 @@ MediaPlayerManagerAndroid::MediaPlayerManagerAndroid(
|
| RenderViewHost* render_view_host)
|
| : RenderViewHostObserver(render_view_host),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(video_view_(this)),
|
| - fullscreen_player_id_(-1) {
|
| + fullscreen_player_id_(-1),
|
| + external_video_surface_user_id_(-1) {
|
| }
|
|
|
| MediaPlayerManagerAndroid::~MediaPlayerManagerAndroid() {}
|
| @@ -42,6 +43,8 @@ bool MediaPlayerManagerAndroid::OnMessageReceived(const IPC::Message& msg) {
|
| IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyMediaPlayer, OnDestroyPlayer)
|
| IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyAllMediaPlayers,
|
| DestroyAllMediaPlayers)
|
| + IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_RequestExternalSurface,
|
| + OnRequestExternalSurface)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP()
|
| return handled;
|
| @@ -185,6 +188,8 @@ void MediaPlayerManagerAndroid::OnDestroyPlayer(int player_id) {
|
| }
|
| if (fullscreen_player_id_ == player_id)
|
| fullscreen_player_id_ = -1;
|
| + if (external_video_surface_user_id_ == player_id)
|
| + external_video_surface_user_id_ = -1;
|
| }
|
|
|
| void MediaPlayerManagerAndroid::DestroyAllMediaPlayers() {
|
| @@ -193,6 +198,15 @@ void MediaPlayerManagerAndroid::DestroyAllMediaPlayers() {
|
| video_view_.DestroyContentVideoView();
|
| fullscreen_player_id_ = -1;
|
| }
|
| + external_video_surface_user_id_ = -1;
|
| +}
|
| +
|
| +void MediaPlayerManagerAndroid::OnRequestExternalSurface(int player_id) {
|
| + if (external_video_surface_user_id_ != -1) {
|
| + MediaPlayerBridge* player = GetPlayer(player_id);
|
| + player->SetVideoSurface(NULL);
|
| + }
|
| + external_video_surface_user_id_ = player_id;
|
| }
|
|
|
| MediaPlayerBridge* MediaPlayerManagerAndroid::GetPlayer(int player_id) {
|
| @@ -208,6 +222,12 @@ MediaPlayerBridge* MediaPlayerManagerAndroid::GetFullscreenPlayer() {
|
| return GetPlayer(fullscreen_player_id_);
|
| }
|
|
|
| +void MediaPlayerManagerAndroid::SetExternalVideoSurface(jobject surface) {
|
| + MediaPlayerBridge* player = GetPlayer(external_video_surface_user_id_);
|
| + if (player)
|
| + player->SetVideoSurface(surface);
|
| +}
|
| +
|
| void MediaPlayerManagerAndroid::OnPrepared(int player_id,
|
| base::TimeDelta duration) {
|
| Send(new MediaPlayerMsg_MediaPrepared(routing_id(), player_id, duration));
|
|
|