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

Unified Diff: content/browser/media/android/browser_media_player_manager.cc

Issue 278353003: Make RendererMediaPlayerManager a RenderFrameObserver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Minor fix. Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
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()));
}
}
}

Powered by Google App Engine
This is Rietveld 408576698