| Index: content/browser/media/android/browser_media_player_manager.cc
|
| diff --git a/content/browser/media/android/browser_media_player_manager.cc b/content/browser/media/android/browser_media_player_manager.cc
|
| index ac37e4261fc9466daad23b098db620b086e9ad89..914bb9fc30ae2f3aeb6bde20b92e52f9b8ac6eb5 100644
|
| --- a/content/browser/media/android/browser_media_player_manager.cc
|
| +++ b/content/browser/media/android/browser_media_player_manager.cc
|
| @@ -18,6 +18,7 @@
|
| #include "content/public/browser/android/external_video_surface_container.h"
|
| #include "content/public/browser/browser_context.h"
|
| #include "content/public/browser/content_browser_client.h"
|
| +#include "content/public/browser/render_frame_host.h"
|
| #include "content/public/browser/render_process_host.h"
|
| #include "content/public/browser/render_view_host.h"
|
| #include "content/public/browser/storage_partition.h"
|
| @@ -58,10 +59,10 @@ void BrowserMediaPlayerManager::RegisterFactory(Factory factory) {
|
|
|
| // static
|
| BrowserMediaPlayerManager* BrowserMediaPlayerManager::Create(
|
| - RenderViewHost* rvh) {
|
| + RenderFrameHost* rfh) {
|
| if (g_factory)
|
| - return g_factory(rvh);
|
| - return new BrowserMediaPlayerManager(rvh);
|
| + return g_factory(rfh);
|
| + return new BrowserMediaPlayerManager(rfh);
|
| }
|
|
|
| ContentViewCoreImpl* BrowserMediaPlayerManager::GetContentViewCore() const {
|
| @@ -126,46 +127,16 @@ MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer(
|
| }
|
|
|
| BrowserMediaPlayerManager::BrowserMediaPlayerManager(
|
| - RenderViewHost* render_view_host)
|
| - : WebContentsObserver(WebContents::FromRenderViewHost(render_view_host)),
|
| + RenderFrameHost* render_frame_host)
|
| + : render_frame_host_(render_frame_host),
|
| fullscreen_player_id_(-1),
|
| fullscreen_player_is_released_(false),
|
| - web_contents_(WebContents::FromRenderViewHost(render_view_host)),
|
| + web_contents_(WebContents::FromRenderFrameHost(render_frame_host)),
|
| weak_ptr_factory_(this) {
|
| }
|
|
|
| BrowserMediaPlayerManager::~BrowserMediaPlayerManager() {}
|
|
|
| -bool BrowserMediaPlayerManager::OnMessageReceived(const IPC::Message& msg) {
|
| - bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP(BrowserMediaPlayerManager, msg)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_EnterFullscreen, OnEnterFullscreen)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_ExitFullscreen, OnExitFullscreen)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_Initialize, OnInitialize)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_Start, OnStart)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_Seek, OnSeek)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_Pause, OnPause)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_SetVolume, OnSetVolume)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_SetPoster, OnSetPoster)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_Release, OnReleaseResources)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyMediaPlayer, OnDestroyPlayer)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyAllMediaPlayers,
|
| - DestroyAllMediaPlayers)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_SetCdm, OnSetCdm)
|
| - IPC_MESSAGE_HANDLER(CdmHostMsg_InitializeCdm, OnInitializeCdm)
|
| - IPC_MESSAGE_HANDLER(CdmHostMsg_CreateSession, OnCreateSession)
|
| - IPC_MESSAGE_HANDLER(CdmHostMsg_UpdateSession, OnUpdateSession)
|
| - IPC_MESSAGE_HANDLER(CdmHostMsg_ReleaseSession, OnReleaseSession)
|
| - IPC_MESSAGE_HANDLER(CdmHostMsg_DestroyCdm, OnDestroyCdm)
|
| -#if defined(VIDEO_HOLE)
|
| - IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_NotifyExternalSurface,
|
| - OnNotifyExternalSurface)
|
| -#endif // defined(VIDEO_HOLE)
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP()
|
| - return handled;
|
| -}
|
| -
|
| void BrowserMediaPlayerManager::FullscreenPlayerPlay() {
|
| MediaPlayerAndroid* player = GetFullscreenPlayer();
|
| if (player) {
|
| @@ -174,8 +145,8 @@ void BrowserMediaPlayerManager::FullscreenPlayerPlay() {
|
| fullscreen_player_is_released_ = false;
|
| }
|
| player->Start();
|
| - Send(new MediaPlayerMsg_DidMediaPlayerPlay(
|
| - routing_id(), fullscreen_player_id_));
|
| + Send(new MediaPlayerMsg_DidMediaPlayerPlay(RoutingID(),
|
| + fullscreen_player_id_));
|
| }
|
| }
|
|
|
| @@ -183,8 +154,8 @@ void BrowserMediaPlayerManager::FullscreenPlayerPause() {
|
| MediaPlayerAndroid* player = GetFullscreenPlayer();
|
| if (player) {
|
| player->Pause(true);
|
| - Send(new MediaPlayerMsg_DidMediaPlayerPause(
|
| - routing_id(), fullscreen_player_id_));
|
| + Send(new MediaPlayerMsg_DidMediaPlayerPause(RoutingID(),
|
| + fullscreen_player_id_));
|
| }
|
| }
|
|
|
| @@ -211,8 +182,8 @@ void BrowserMediaPlayerManager::ExitFullscreen(bool release_media_player) {
|
| }
|
| }
|
|
|
| - Send(new MediaPlayerMsg_DidExitFullscreen(
|
| - routing_id(), fullscreen_player_id_));
|
| + Send(
|
| + new MediaPlayerMsg_DidExitFullscreen(RoutingID(), fullscreen_player_id_));
|
| video_view_.reset();
|
| MediaPlayerAndroid* player = GetFullscreenPlayer();
|
| fullscreen_player_id_ = -1;
|
| @@ -226,8 +197,8 @@ void BrowserMediaPlayerManager::ExitFullscreen(bool release_media_player) {
|
|
|
| void BrowserMediaPlayerManager::OnTimeUpdate(int player_id,
|
| base::TimeDelta current_time) {
|
| - Send(new MediaPlayerMsg_MediaTimeUpdate(
|
| - routing_id(), player_id, current_time));
|
| + Send(
|
| + new MediaPlayerMsg_MediaTimeUpdate(RoutingID(), player_id, current_time));
|
| }
|
|
|
| void BrowserMediaPlayerManager::SetVideoSurface(
|
| @@ -241,8 +212,7 @@ void BrowserMediaPlayerManager::SetVideoSurface(
|
| if (empty_surface)
|
| return;
|
|
|
| - Send(new MediaPlayerMsg_DidEnterFullscreen(routing_id(),
|
| - player->player_id()));
|
| + Send(new MediaPlayerMsg_DidEnterFullscreen(RoutingID(), player->player_id()));
|
| if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| switches::kDisableOverlayFullscreenVideoSubtitle)) {
|
| return;
|
| @@ -260,27 +230,27 @@ void BrowserMediaPlayerManager::OnMediaMetadataChanged(
|
| int player_id, base::TimeDelta duration, int width, int height,
|
| bool success) {
|
| Send(new MediaPlayerMsg_MediaMetadataChanged(
|
| - routing_id(), player_id, duration, width, height, success));
|
| + RoutingID(), player_id, duration, width, height, success));
|
| if (fullscreen_player_id_ == player_id)
|
| video_view_->UpdateMediaMetadata();
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnPlaybackComplete(int player_id) {
|
| - Send(new MediaPlayerMsg_MediaPlaybackCompleted(routing_id(), player_id));
|
| + Send(new MediaPlayerMsg_MediaPlaybackCompleted(RoutingID(), player_id));
|
| if (fullscreen_player_id_ == player_id)
|
| video_view_->OnPlaybackComplete();
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnMediaInterrupted(int player_id) {
|
| // Tell WebKit that the audio should be paused, then release all resources
|
| - Send(new MediaPlayerMsg_MediaPlayerReleased(routing_id(), player_id));
|
| + Send(new MediaPlayerMsg_MediaPlayerReleased(RoutingID(), player_id));
|
| OnReleaseResources(player_id);
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnBufferingUpdate(
|
| int player_id, int percentage) {
|
| Send(new MediaPlayerMsg_MediaBufferingUpdate(
|
| - routing_id(), player_id, percentage));
|
| + RoutingID(), player_id, percentage));
|
| if (fullscreen_player_id_ == player_id)
|
| video_view_->OnBufferingUpdate(percentage);
|
| }
|
| @@ -288,24 +258,28 @@ void BrowserMediaPlayerManager::OnBufferingUpdate(
|
| void BrowserMediaPlayerManager::OnSeekRequest(
|
| int player_id,
|
| const base::TimeDelta& time_to_seek) {
|
| - Send(new MediaPlayerMsg_SeekRequest(routing_id(), player_id, time_to_seek));
|
| + Send(new MediaPlayerMsg_SeekRequest(RoutingID(), player_id, time_to_seek));
|
| +}
|
| +
|
| +void BrowserMediaPlayerManager::PauseVideo() {
|
| + Send(new MediaPlayerMsg_PauseVideo(RoutingID()));
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnSeekComplete(
|
| int player_id,
|
| const base::TimeDelta& current_time) {
|
| - Send(new MediaPlayerMsg_SeekCompleted(routing_id(), player_id, current_time));
|
| + Send(new MediaPlayerMsg_SeekCompleted(RoutingID(), player_id, current_time));
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnError(int player_id, int error) {
|
| - Send(new MediaPlayerMsg_MediaError(routing_id(), player_id, error));
|
| + Send(new MediaPlayerMsg_MediaError(RoutingID(), player_id, error));
|
| if (fullscreen_player_id_ == player_id)
|
| video_view_->OnMediaPlayerError(error);
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnVideoSizeChanged(
|
| int player_id, int width, int height) {
|
| - Send(new MediaPlayerMsg_MediaVideoSizeChanged(routing_id(), player_id,
|
| + Send(new MediaPlayerMsg_MediaVideoSizeChanged(RoutingID(), player_id,
|
| width, height));
|
| if (fullscreen_player_id_ == player_id)
|
| video_view_->OnVideoSizeChanged(width, height);
|
| @@ -373,7 +347,7 @@ void BrowserMediaPlayerManager::RequestFullScreen(int player_id) {
|
| // TODO(qinmin): make this flag default on android.
|
| if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| switches::kDisableGestureRequirementForMediaFullscreen)) {
|
| - Send(new MediaPlayerMsg_RequestFullscreen(routing_id(), player_id));
|
| + Send(new MediaPlayerMsg_RequestFullscreen(RoutingID(), player_id));
|
| }
|
| }
|
|
|
| @@ -384,7 +358,7 @@ void BrowserMediaPlayerManager::OnSessionCreated(
|
| uint32 session_id,
|
| const std::string& web_session_id) {
|
| Send(new CdmMsg_SessionCreated(
|
| - routing_id(), cdm_id, session_id, web_session_id));
|
| + RoutingID(), cdm_id, session_id, web_session_id));
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnSessionMessage(
|
| @@ -400,15 +374,15 @@ void BrowserMediaPlayerManager::OnSessionMessage(
|
| }
|
|
|
| Send(new CdmMsg_SessionMessage(
|
| - routing_id(), cdm_id, session_id, message, destination_gurl));
|
| + RoutingID(), cdm_id, session_id, message, destination_gurl));
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnSessionReady(int cdm_id, uint32 session_id) {
|
| - Send(new CdmMsg_SessionReady(routing_id(), cdm_id, session_id));
|
| + Send(new CdmMsg_SessionReady(RoutingID(), cdm_id, session_id));
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnSessionClosed(int cdm_id, uint32 session_id) {
|
| - Send(new CdmMsg_SessionClosed(routing_id(), cdm_id, session_id));
|
| + Send(new CdmMsg_SessionClosed(RoutingID(), cdm_id, session_id));
|
| }
|
|
|
| void BrowserMediaPlayerManager::OnSessionError(
|
| @@ -417,7 +391,7 @@ void BrowserMediaPlayerManager::OnSessionError(
|
| media::MediaKeys::KeyError error_code,
|
| uint32 system_code) {
|
| Send(new CdmMsg_SessionError(
|
| - routing_id(), cdm_id, session_id, error_code, system_code));
|
| + RoutingID(), cdm_id, session_id, error_code, system_code));
|
| }
|
|
|
| #if defined(VIDEO_HOLE)
|
| @@ -501,8 +475,8 @@ void BrowserMediaPlayerManager::OnEnterFullscreen(int player_id) {
|
| // TODO(qinmin): There is no need to send DidEnterFullscreen message.
|
| // However, if we don't send the message, page layers will not be
|
| // correctly restored. http:crbug.com/367346.
|
| - Send(new MediaPlayerMsg_DidEnterFullscreen(routing_id(), player_id));
|
| - Send(new MediaPlayerMsg_DidExitFullscreen(routing_id(), player_id));
|
| + Send(new MediaPlayerMsg_DidEnterFullscreen(RoutingID(), player_id));
|
| + Send(new MediaPlayerMsg_DidExitFullscreen(RoutingID(), player_id));
|
| video_view_.reset();
|
| }
|
|
|
| @@ -833,6 +807,14 @@ void BrowserMediaPlayerManager::OnSetCdm(int player_id, int cdm_id) {
|
| cdm_to_player_map_[cdm_id] = player_id;
|
| }
|
|
|
| +int BrowserMediaPlayerManager::RoutingID() {
|
| + return render_frame_host_->GetRoutingID();
|
| +}
|
| +
|
| +bool BrowserMediaPlayerManager::Send(IPC::Message* msg) {
|
| + return render_frame_host_->Send(msg);
|
| +}
|
| +
|
| void BrowserMediaPlayerManager::CreateSessionIfPermitted(
|
| int cdm_id,
|
| uint32 session_id,
|
| @@ -882,8 +864,8 @@ void BrowserMediaPlayerManager::OnMediaResourcesRequested(int player_id) {
|
| if ((*it)->IsPlayerReady() && !(*it)->IsPlaying() &&
|
| fullscreen_player_id_ != (*it)->player_id()) {
|
| (*it)->Release();
|
| - Send(new MediaPlayerMsg_MediaPlayerReleased(
|
| - routing_id(), (*it)->player_id()));
|
| + Send(new MediaPlayerMsg_MediaPlayerReleased(RoutingID(),
|
| + (*it)->player_id()));
|
| }
|
| }
|
| }
|
|
|