| OLD | NEW |
| 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/browser/media/android/browser_media_player_manager.h" | 5 #include "content/browser/media/android/browser_media_player_manager.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "content/browser/android/content_view_core_impl.h" | 8 #include "content/browser/android/content_view_core_impl.h" |
| 9 #include "content/browser/media/android/browser_demuxer_android.h" | 9 #include "content/browser/media/android/browser_demuxer_android.h" |
| 10 #include "content/browser/media/android/media_resource_getter_impl.h" | 10 #include "content/browser/media/android/media_resource_getter_impl.h" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 NOTREACHED(); | 93 NOTREACHED(); |
| 94 return NULL; | 94 return NULL; |
| 95 } | 95 } |
| 96 #endif | 96 #endif |
| 97 | 97 |
| 98 BrowserMediaPlayerManager::BrowserMediaPlayerManager( | 98 BrowserMediaPlayerManager::BrowserMediaPlayerManager( |
| 99 RenderViewHost* render_view_host) | 99 RenderViewHost* render_view_host) |
| 100 : WebContentsObserver(WebContents::FromRenderViewHost(render_view_host)), | 100 : WebContentsObserver(WebContents::FromRenderViewHost(render_view_host)), |
| 101 fullscreen_player_id_(-1), | 101 fullscreen_player_id_(-1), |
| 102 pending_fullscreen_player_id_(-1), | 102 pending_fullscreen_player_id_(-1), |
| 103 fullscreen_player_is_released_(false), | |
| 104 web_contents_(WebContents::FromRenderViewHost(render_view_host)), | 103 web_contents_(WebContents::FromRenderViewHost(render_view_host)), |
| 105 weak_ptr_factory_(this) { | 104 weak_ptr_factory_(this) { |
| 106 } | 105 } |
| 107 | 106 |
| 108 BrowserMediaPlayerManager::~BrowserMediaPlayerManager() {} | 107 BrowserMediaPlayerManager::~BrowserMediaPlayerManager() {} |
| 109 | 108 |
| 110 bool BrowserMediaPlayerManager::OnMessageReceived(const IPC::Message& msg) { | 109 bool BrowserMediaPlayerManager::OnMessageReceived(const IPC::Message& msg) { |
| 111 bool handled = true; | 110 bool handled = true; |
| 112 IPC_BEGIN_MESSAGE_MAP(BrowserMediaPlayerManager, msg) | 111 IPC_BEGIN_MESSAGE_MAP(BrowserMediaPlayerManager, msg) |
| 113 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_EnterFullscreen, OnEnterFullscreen) | 112 IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_EnterFullscreen, OnEnterFullscreen) |
| (...skipping 19 matching lines...) Expand all Loading... |
| 133 OnNotifyExternalSurface) | 132 OnNotifyExternalSurface) |
| 134 #endif | 133 #endif |
| 135 IPC_MESSAGE_UNHANDLED(handled = false) | 134 IPC_MESSAGE_UNHANDLED(handled = false) |
| 136 IPC_END_MESSAGE_MAP() | 135 IPC_END_MESSAGE_MAP() |
| 137 return handled; | 136 return handled; |
| 138 } | 137 } |
| 139 | 138 |
| 140 void BrowserMediaPlayerManager::FullscreenPlayerPlay() { | 139 void BrowserMediaPlayerManager::FullscreenPlayerPlay() { |
| 141 MediaPlayerAndroid* player = GetFullscreenPlayer(); | 140 MediaPlayerAndroid* player = GetFullscreenPlayer(); |
| 142 if (player) { | 141 if (player) { |
| 143 if (fullscreen_player_is_released_) { | |
| 144 video_view_->OpenVideo(); | |
| 145 fullscreen_player_is_released_ = false; | |
| 146 } | |
| 147 player->Start(); | 142 player->Start(); |
| 148 Send(new MediaPlayerMsg_DidMediaPlayerPlay( | 143 Send(new MediaPlayerMsg_DidMediaPlayerPlay( |
| 149 routing_id(), fullscreen_player_id_)); | 144 routing_id(), fullscreen_player_id_)); |
| 150 } | 145 } |
| 151 } | 146 } |
| 152 | 147 |
| 153 void BrowserMediaPlayerManager::FullscreenPlayerPause() { | 148 void BrowserMediaPlayerManager::FullscreenPlayerPause() { |
| 154 MediaPlayerAndroid* player = GetFullscreenPlayer(); | 149 MediaPlayerAndroid* player = GetFullscreenPlayer(); |
| 155 if (player) { | 150 if (player) { |
| 156 player->Pause(true); | 151 player->Pause(true); |
| 157 Send(new MediaPlayerMsg_DidMediaPlayerPause( | 152 Send(new MediaPlayerMsg_DidMediaPlayerPause( |
| 158 routing_id(), fullscreen_player_id_)); | 153 routing_id(), fullscreen_player_id_)); |
| 159 } | 154 } |
| 160 } | 155 } |
| 161 | 156 |
| 162 void BrowserMediaPlayerManager::FullscreenPlayerSeek(int msec) { | 157 void BrowserMediaPlayerManager::FullscreenPlayerSeek(int msec) { |
| 163 MediaPlayerAndroid* player = GetFullscreenPlayer(); | 158 MediaPlayerAndroid* player = GetFullscreenPlayer(); |
| 164 if (player) { | 159 if (player) { |
| 165 // TODO(kbalazs): if |fullscreen_player_is_released_| is true | 160 // TODO(kbalazs): if the fullscreen player has been Release()-d and |
| 166 // at this point, player->GetCurrentTime() will be wrong until | 161 // not restarted yet, player->GetCurrentTime() will be wrong until |
| 167 // FullscreenPlayerPlay (http://crbug.com/322798). | 162 // FullscreenPlayerPlay (http://crbug.com/322798). |
| 168 OnSeekRequest(fullscreen_player_id_, | 163 OnSeekRequest(fullscreen_player_id_, |
| 169 base::TimeDelta::FromMilliseconds(msec)); | 164 base::TimeDelta::FromMilliseconds(msec)); |
| 170 } | 165 } |
| 171 } | 166 } |
| 172 | 167 |
| 173 void BrowserMediaPlayerManager::ExitFullscreen(bool release_media_player) { | 168 void BrowserMediaPlayerManager::ExitFullscreen(bool release_media_player) { |
| 174 Send(new MediaPlayerMsg_DidExitFullscreen( | 169 Send(new MediaPlayerMsg_DidExitFullscreen( |
| 175 routing_id(), fullscreen_player_id_)); | 170 routing_id(), fullscreen_player_id_)); |
| 176 video_view_.reset(); | 171 video_view_.reset(); |
| (...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 518 void BrowserMediaPlayerManager::OnSetVolume(int player_id, double volume) { | 513 void BrowserMediaPlayerManager::OnSetVolume(int player_id, double volume) { |
| 519 MediaPlayerAndroid* player = GetPlayer(player_id); | 514 MediaPlayerAndroid* player = GetPlayer(player_id); |
| 520 if (player) | 515 if (player) |
| 521 player->SetVolume(volume); | 516 player->SetVolume(volume); |
| 522 } | 517 } |
| 523 | 518 |
| 524 void BrowserMediaPlayerManager::OnReleaseResources(int player_id) { | 519 void BrowserMediaPlayerManager::OnReleaseResources(int player_id) { |
| 525 MediaPlayerAndroid* player = GetPlayer(player_id); | 520 MediaPlayerAndroid* player = GetPlayer(player_id); |
| 526 if (player) | 521 if (player) |
| 527 player->Release(); | 522 player->Release(); |
| 528 if (player_id == fullscreen_player_id_) | |
| 529 fullscreen_player_is_released_ = true; | |
| 530 | 523 |
| 531 #if defined(GOOGLE_TV) | 524 #if defined(GOOGLE_TV) |
| 532 WebContentsViewAndroid* view = | 525 WebContentsViewAndroid* view = |
| 533 static_cast<WebContentsViewAndroid*>(web_contents_->GetView()); | 526 static_cast<WebContentsViewAndroid*>(web_contents_->GetView()); |
| 534 if (view) | 527 if (view) |
| 535 view->NotifyExternalSurface(player_id, false, gfx::RectF()); | 528 view->NotifyExternalSurface(player_id, false, gfx::RectF()); |
| 536 #endif | 529 #endif |
| 537 } | 530 } |
| 538 | 531 |
| 539 void BrowserMediaPlayerManager::OnDestroyPlayer(int player_id) { | 532 void BrowserMediaPlayerManager::OnDestroyPlayer(int player_id) { |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 740 if (pending_fullscreen_player_id_ != media_keys_id) | 733 if (pending_fullscreen_player_id_ != media_keys_id) |
| 741 return; | 734 return; |
| 742 | 735 |
| 743 pending_fullscreen_player_id_ = -1; | 736 pending_fullscreen_player_id_ = -1; |
| 744 MediaPlayerAndroid* player = GetPlayer(media_keys_id); | 737 MediaPlayerAndroid* player = GetPlayer(media_keys_id); |
| 745 if (player->IsPlaying()) | 738 if (player->IsPlaying()) |
| 746 OnProtectedSurfaceRequested(media_keys_id); | 739 OnProtectedSurfaceRequested(media_keys_id); |
| 747 } | 740 } |
| 748 | 741 |
| 749 } // namespace content | 742 } // namespace content |
| OLD | NEW |