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

Unified Diff: content/browser/android/media_player_manager_android.cc

Issue 10979047: Upstream fullscreen video implementation for android (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merging latest changes Created 8 years, 2 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/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 e442a418e85ce4df5ef45b46d8d68cbb4a913431..cf3a067f2d278e4820fac7cd4f7386542c56e2c8 100644
--- a/content/browser/android/media_player_manager_android.cc
+++ b/content/browser/android/media_player_manager_android.cc
@@ -6,7 +6,7 @@
#include "base/bind.h"
#include "content/browser/android/cookie_getter_impl.h"
-#include "content/common/view_messages.h"
+#include "content/common/media/media_player_messages.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_process_host.h"
@@ -22,7 +22,9 @@ namespace content {
MediaPlayerManagerAndroid::MediaPlayerManagerAndroid(
RenderViewHost* render_view_host)
- : RenderViewHostObserver(render_view_host) {
+ : RenderViewHostObserver(render_view_host),
+ ALLOW_THIS_IN_INITIALIZER_LIST(video_view_(this)),
+ fullscreen_player_id_(-1) {
}
MediaPlayerManagerAndroid::~MediaPlayerManagerAndroid() {}
@@ -30,25 +32,61 @@ MediaPlayerManagerAndroid::~MediaPlayerManagerAndroid() {}
bool MediaPlayerManagerAndroid::OnMessageReceived(const IPC::Message& msg) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(MediaPlayerManagerAndroid, msg)
- IPC_MESSAGE_HANDLER(ViewHostMsg_MediaPlayerInitialize,
- OnInitialize)
- IPC_MESSAGE_HANDLER(ViewHostMsg_MediaPlayerStart,
- OnStart)
- IPC_MESSAGE_HANDLER(ViewHostMsg_MediaPlayerSeek,
- OnSeek)
- IPC_MESSAGE_HANDLER(ViewHostMsg_MediaPlayerPause,
- OnPause)
- IPC_MESSAGE_HANDLER(ViewHostMsg_MediaPlayerRelease,
+ IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_EnterFullscreen, OnEnterFullscreen)
+ IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_ExitFullscreen, OnExitFullscreen)
+ IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerInitialize, OnInitialize)
+ IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerStart, OnStart)
+ IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerSeek, OnSeek)
+ IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerPause, OnPause)
+ IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_MediaPlayerRelease,
OnReleaseResources)
- IPC_MESSAGE_HANDLER(ViewHostMsg_DestroyMediaPlayer,
- OnDestroyPlayer)
- IPC_MESSAGE_HANDLER(ViewHostMsg_DestroyAllMediaPlayers,
+ IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyMediaPlayer, OnDestroyPlayer)
+ IPC_MESSAGE_HANDLER(MediaPlayerHostMsg_DestroyAllMediaPlayers,
DestroyAllMediaPlayers)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
}
+void MediaPlayerManagerAndroid::FullscreenPlayerPlay() {
+ MediaPlayerBridge* player = GetFullscreenPlayer();
+ player->Start();
+ Send(new MediaPlayerMsg_DidMediaPlayerPlay(
+ routing_id(), fullscreen_player_id_));
+}
+
+void MediaPlayerManagerAndroid::FullscreenPlayerPause() {
+ MediaPlayerBridge* player = GetFullscreenPlayer();
+ player->Pause();
+ Send(new MediaPlayerMsg_DidMediaPlayerPause(
+ routing_id(), fullscreen_player_id_));
+}
+
+void MediaPlayerManagerAndroid::FullscreenPlayerSeek(int msec) {
+ MediaPlayerBridge* player = GetFullscreenPlayer();
+ player->SeekTo(base::TimeDelta::FromMilliseconds(msec));
+}
+
+void MediaPlayerManagerAndroid::ExitFullscreen(bool release_media_player) {
+ Send(new MediaPlayerMsg_DidExitFullscreen(
+ routing_id(), fullscreen_player_id_));
+ MediaPlayerBridge* player = GetFullscreenPlayer();
+ if (release_media_player)
+ player->Release();
+ else
+ player->SetVideoSurface(NULL);
+ fullscreen_player_id_ = -1;
+}
+
+void MediaPlayerManagerAndroid::SetVideoSurface(jobject surface) {
+ MediaPlayerBridge* player = GetFullscreenPlayer();
+ if (player) {
+ player->SetVideoSurface(surface);
+ Send(new MediaPlayerMsg_DidEnterFullscreen(
+ routing_id(), player->player_id()));
+ }
+}
+
void MediaPlayerManagerAndroid::OnInitialize(
int player_id, const std::string& url,
const std::string& first_party_for_cookies) {
@@ -81,8 +119,8 @@ void MediaPlayerManagerAndroid::OnInitialize(
base::Unretained(this))));
// Send a MediaPrepared message to webkit so that Load() can finish.
- Send(new ViewMsg_MediaPrepared(routing_id(), player_id,
- GetPlayer(player_id)->GetDuration()));
+ Send(new MediaPlayerMsg_MediaPrepared(
+ routing_id(), player_id, GetPlayer(player_id)->GetDuration()));
}
void MediaPlayerManagerAndroid::OnStart(int player_id) {
@@ -103,6 +141,23 @@ void MediaPlayerManagerAndroid::OnPause(int player_id) {
player->Pause();
}
+void MediaPlayerManagerAndroid::OnEnterFullscreen(int player_id) {
+ DCHECK_EQ(fullscreen_player_id_, -1);
+
+ fullscreen_player_id_ = player_id;
+ video_view_.CreateContentVideoView();
+}
+
+void MediaPlayerManagerAndroid::OnExitFullscreen(int player_id) {
+ if (fullscreen_player_id_ == player_id) {
+ MediaPlayerBridge* player = GetPlayer(player_id);
+ if (player)
+ player->SetVideoSurface(NULL);
+ video_view_.DestroyContentVideoView();
+ fullscreen_player_id_ = -1;
+ }
+}
+
void MediaPlayerManagerAndroid::OnReleaseResources(int player_id) {
MediaPlayerBridge* player = GetPlayer(player_id);
if (player)
@@ -117,10 +172,16 @@ void MediaPlayerManagerAndroid::OnDestroyPlayer(int player_id) {
break;
}
}
+ if (fullscreen_player_id_ == player_id)
+ fullscreen_player_id_ = -1;
}
void MediaPlayerManagerAndroid::DestroyAllMediaPlayers() {
players_.clear();
+ if (fullscreen_player_id_ != -1) {
+ video_view_.DestroyContentVideoView();
+ fullscreen_player_id_ = -1;
+ }
}
MediaPlayerBridge* MediaPlayerManagerAndroid::GetPlayer(int player_id) {
@@ -132,38 +193,55 @@ MediaPlayerBridge* MediaPlayerManagerAndroid::GetPlayer(int player_id) {
return NULL;
}
+MediaPlayerBridge* MediaPlayerManagerAndroid::GetFullscreenPlayer() {
+ return GetPlayer(fullscreen_player_id_);
+}
+
void MediaPlayerManagerAndroid::OnPrepared(int player_id,
base::TimeDelta duration) {
- Send(new ViewMsg_MediaPrepared(routing_id(), player_id, duration));
+ Send(new MediaPlayerMsg_MediaPrepared(routing_id(), player_id, duration));
+ if (fullscreen_player_id_ != -1)
+ video_view_.UpdateMediaMetadata();
}
void MediaPlayerManagerAndroid::OnPlaybackComplete(int player_id) {
- Send(new ViewMsg_MediaPlaybackCompleted(routing_id(), player_id));
+ Send(new MediaPlayerMsg_MediaPlaybackCompleted(routing_id(), player_id));
+ if (fullscreen_player_id_ != -1)
+ video_view_.OnPlaybackComplete();
}
void MediaPlayerManagerAndroid::OnBufferingUpdate(
int player_id, int percentage) {
- Send(new ViewMsg_MediaBufferingUpdate(routing_id(), player_id, percentage));
+ Send(new MediaPlayerMsg_MediaBufferingUpdate(
+ routing_id(), player_id, percentage));
+ if (fullscreen_player_id_ != -1)
+ video_view_.OnBufferingUpdate(percentage);
}
void MediaPlayerManagerAndroid::OnSeekComplete(int player_id,
base::TimeDelta current_time) {
- Send(new ViewMsg_MediaSeekCompleted(routing_id(), player_id, current_time));
+ Send(new MediaPlayerMsg_MediaSeekCompleted(
+ routing_id(), player_id, current_time));
}
void MediaPlayerManagerAndroid::OnError(int player_id, int error) {
- Send(new ViewMsg_MediaError(routing_id(), player_id, error));
+ Send(new MediaPlayerMsg_MediaError(routing_id(), player_id, error));
+ if (fullscreen_player_id_ != -1)
+ video_view_.OnMediaPlayerError(error);
}
void MediaPlayerManagerAndroid::OnVideoSizeChanged(
int player_id, int width, int height) {
- Send(new ViewMsg_MediaVideoSizeChanged(routing_id(), player_id,
+ Send(new MediaPlayerMsg_MediaVideoSizeChanged(routing_id(), player_id,
width, height));
+ if (fullscreen_player_id_ != -1)
+ video_view_.OnVideoSizeChanged(width, height);
}
void MediaPlayerManagerAndroid::OnTimeUpdate(int player_id,
base::TimeDelta current_time) {
- Send(new ViewMsg_MediaTimeUpdate(routing_id(), player_id, current_time));
+ Send(new MediaPlayerMsg_MediaTimeUpdate(
+ routing_id(), player_id, current_time));
}
void MediaPlayerManagerAndroid::RequestMediaResources(
@@ -189,9 +267,11 @@ void MediaPlayerManagerAndroid::RequestMediaResources(
return;
for (it = players_.begin(); it != players_.end(); ++it) {
- if ((*it)->prepared() && !(*it)->IsPlaying()) {
+ if ((*it)->prepared() && !(*it)->IsPlaying() &&
+ fullscreen_player_id_ != (*it)->player_id()) {
(*it)->Release();
- Send(new ViewMsg_MediaPlayerReleased(routing_id(), (*it)->player_id()));
+ Send(new MediaPlayerMsg_MediaPlayerReleased(
+ routing_id(), (*it)->player_id()));
}
}
}
« no previous file with comments | « content/browser/android/media_player_manager_android.h ('k') | content/browser/android/surface_texture_peer_browser_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698