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

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

Issue 11442056: Add external surface rendering mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add getPersonality() Created 8 years 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 98a51e2e572d760dfa7040241a58911f035e1f36..b08bf73a628a8c4c9adf02b1ea46eca22b64489f 100644
--- a/content/browser/android/media_player_manager_android.cc
+++ b/content/browser/android/media_player_manager_android.cc
@@ -5,12 +5,14 @@
#include "content/browser/android/media_player_manager_android.h"
#include "base/bind.h"
+#include "base/command_line.h"
#include "content/browser/android/cookie_getter_impl.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"
#include "content/public/browser/render_view_host.h"
+#include "content/public/common/content_switches.h"
using media::MediaPlayerBridge;
@@ -24,7 +26,7 @@ MediaPlayerManagerAndroid::MediaPlayerManagerAndroid(
RenderViewHost* render_view_host)
: RenderViewHostObserver(render_view_host),
ALLOW_THIS_IN_INITIALIZER_LIST(video_view_(this)),
- fullscreen_player_id_(-1) {
+ video_view_player_id_(-1) {
}
MediaPlayerManagerAndroid::~MediaPlayerManagerAndroid() {}
@@ -53,7 +55,7 @@ void MediaPlayerManagerAndroid::FullscreenPlayerPlay() {
if (player) {
player->Start();
Send(new MediaPlayerMsg_DidMediaPlayerPlay(
- routing_id(), fullscreen_player_id_));
+ routing_id(), video_view_player_id_));
}
}
@@ -62,7 +64,7 @@ void MediaPlayerManagerAndroid::FullscreenPlayerPause() {
if (player) {
player->Pause();
Send(new MediaPlayerMsg_DidMediaPlayerPause(
- routing_id(), fullscreen_player_id_));
+ routing_id(), video_view_player_id_));
}
}
@@ -74,9 +76,9 @@ void MediaPlayerManagerAndroid::FullscreenPlayerSeek(int msec) {
void MediaPlayerManagerAndroid::ExitFullscreen(bool release_media_player) {
Send(new MediaPlayerMsg_DidExitFullscreen(
- routing_id(), fullscreen_player_id_));
+ routing_id(), video_view_player_id_));
MediaPlayerBridge* player = GetFullscreenPlayer();
- fullscreen_player_id_ = -1;
+ video_view_player_id_ = -1;
if (!player)
return;
if (release_media_player)
@@ -86,11 +88,18 @@ void MediaPlayerManagerAndroid::ExitFullscreen(bool release_media_player) {
}
void MediaPlayerManagerAndroid::SetVideoSurface(jobject surface) {
- MediaPlayerBridge* player = GetFullscreenPlayer();
+ MediaPlayerBridge* player = GetPlayer(video_view_player_id_);
if (player) {
player->SetVideoSurface(surface);
- Send(new MediaPlayerMsg_DidEnterFullscreen(
- routing_id(), player->player_id()));
+ if (video_view_.getPersonality() ==
+ ContentVideoView::PERSONALITY_FULL_SCREEN) {
+ Send(new MediaPlayerMsg_DidEnterFullscreen(
+ routing_id(), player->player_id()));
qinmin 2012/12/17 19:34:06 Just collapse these 2 into a single message, new M
wonsik2 2013/02/14 14:56:38 Done.
+ } else {
+ // TODO(wonsik): Find better way to communicate this event.
+ Send(new MediaPlayerMsg_DidEnterVideoView(
+ routing_id(), player->player_id()));
+ }
}
}
@@ -134,8 +143,20 @@ void MediaPlayerManagerAndroid::OnInitialize(
void MediaPlayerManagerAndroid::OnStart(int player_id) {
MediaPlayerBridge* player = GetPlayer(player_id);
- if (player)
+ if (player) {
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kRenderVideoOnExternalSurface)) {
+ // TODO(wonsik): Find a way to enable this feature only when it is
+ // absolutely necessary (e.g. protected content).
+ if (video_view_player_id_ != -1) {
qinmin 2012/12/17 19:34:06 no { needed
wonsik2 2013/02/14 14:56:38 Done.
+ ExitFromVideoView(video_view_player_id_);
qinmin 2012/12/17 19:34:06 do we pause the player afterwards?
wonsik2 2013/02/14 14:56:38 Done.
+ }
+ video_view_player_id_ = player_id;
+ video_view_.CreateContentVideoView(
+ ContentVideoView::PERSONALITY_EMBEDDED);
+ }
player->Start();
+ }
}
void MediaPlayerManagerAndroid::OnSeek(int player_id, base::TimeDelta time) {
@@ -151,19 +172,30 @@ void MediaPlayerManagerAndroid::OnPause(int player_id) {
}
void MediaPlayerManagerAndroid::OnEnterFullscreen(int player_id) {
- DCHECK_EQ(fullscreen_player_id_, -1);
+ if (video_view_player_id_ != -1) {
qinmin 2012/12/17 19:34:06 no { needed
wonsik2 2013/02/14 14:56:38 Done.
+ ExitFromVideoView(video_view_player_id_);
+ }
- fullscreen_player_id_ = player_id;
- video_view_.CreateContentVideoView();
+ video_view_player_id_ = player_id;
+ video_view_.CreateContentVideoView(ContentVideoView::PERSONALITY_FULL_SCREEN);
}
void MediaPlayerManagerAndroid::OnExitFullscreen(int player_id) {
- if (fullscreen_player_id_ == player_id) {
+ ExitFromVideoView(player_id);
+}
+
+void MediaPlayerManagerAndroid::ExitFromVideoView(int player_id) {
+ if (video_view_player_id_ == player_id) {
+ if (video_view_.getPersonality() !=
+ ContentVideoView::PERSONALITY_FULL_SCREEN) {
+ Send(new MediaPlayerMsg_DidExitVideoView(
qinmin 2012/12/17 19:34:06 combine this message with DidExitFullscreen
wonsik2 2013/02/14 14:56:38 Done.
+ routing_id(), video_view_player_id_));
+ }
MediaPlayerBridge* player = GetPlayer(player_id);
if (player)
player->SetVideoSurface(NULL);
video_view_.DestroyContentVideoView();
- fullscreen_player_id_ = -1;
+ video_view_player_id_ = -1;
}
}
@@ -172,7 +204,7 @@ void MediaPlayerManagerAndroid::OnReleaseResources(int player_id) {
// Don't release the fullscreen player when tab visibility changes,
// it will be released when user hit the back/home button or when
// OnDestroyPlayer is called.
- if (player && player_id != fullscreen_player_id_)
+ if (player && player_id != video_view_player_id_)
player->Release();
}
@@ -184,15 +216,15 @@ void MediaPlayerManagerAndroid::OnDestroyPlayer(int player_id) {
break;
}
}
- if (fullscreen_player_id_ == player_id)
- fullscreen_player_id_ = -1;
+ if (video_view_player_id_ == player_id)
+ video_view_player_id_ = -1;
}
void MediaPlayerManagerAndroid::DestroyAllMediaPlayers() {
players_.clear();
- if (fullscreen_player_id_ != -1) {
+ if (video_view_player_id_ != -1) {
video_view_.DestroyContentVideoView();
- fullscreen_player_id_ = -1;
+ video_view_player_id_ = -1;
}
}
@@ -206,19 +238,23 @@ MediaPlayerBridge* MediaPlayerManagerAndroid::GetPlayer(int player_id) {
}
MediaPlayerBridge* MediaPlayerManagerAndroid::GetFullscreenPlayer() {
qinmin 2012/12/17 19:34:06 This function name should be changed getVideoViewP
wonsik2 2013/02/14 14:56:38 This indeed returns fullscreen player since it onl
- return GetPlayer(fullscreen_player_id_);
+ if (video_view_.getPersonality() !=
+ ContentVideoView::PERSONALITY_FULL_SCREEN) {
+ return NULL;
+ }
+ return GetPlayer(video_view_player_id_);
}
void MediaPlayerManagerAndroid::OnPrepared(int player_id,
base::TimeDelta duration) {
Send(new MediaPlayerMsg_MediaPrepared(routing_id(), player_id, duration));
- if (fullscreen_player_id_ != -1)
+ if (video_view_player_id_ != -1)
video_view_.UpdateMediaMetadata();
}
void MediaPlayerManagerAndroid::OnPlaybackComplete(int player_id) {
Send(new MediaPlayerMsg_MediaPlaybackCompleted(routing_id(), player_id));
- if (fullscreen_player_id_ != -1)
+ if (video_view_player_id_ != -1)
video_view_.OnPlaybackComplete();
}
@@ -232,7 +268,7 @@ void MediaPlayerManagerAndroid::OnBufferingUpdate(
int player_id, int percentage) {
Send(new MediaPlayerMsg_MediaBufferingUpdate(
routing_id(), player_id, percentage));
- if (fullscreen_player_id_ != -1)
+ if (video_view_player_id_ != -1)
video_view_.OnBufferingUpdate(percentage);
}
@@ -244,7 +280,7 @@ void MediaPlayerManagerAndroid::OnSeekComplete(int player_id,
void MediaPlayerManagerAndroid::OnError(int player_id, int error) {
Send(new MediaPlayerMsg_MediaError(routing_id(), player_id, error));
- if (fullscreen_player_id_ != -1)
+ if (video_view_player_id_ != -1)
video_view_.OnMediaPlayerError(error);
}
@@ -252,7 +288,7 @@ void MediaPlayerManagerAndroid::OnVideoSizeChanged(
int player_id, int width, int height) {
Send(new MediaPlayerMsg_MediaVideoSizeChanged(routing_id(), player_id,
width, height));
- if (fullscreen_player_id_ != -1)
+ if (video_view_player_id_ != -1)
video_view_.OnVideoSizeChanged(width, height);
}
@@ -286,7 +322,7 @@ void MediaPlayerManagerAndroid::RequestMediaResources(
for (it = players_.begin(); it != players_.end(); ++it) {
if ((*it)->prepared() && !(*it)->IsPlaying() &&
- fullscreen_player_id_ != (*it)->player_id()) {
+ video_view_player_id_ != (*it)->player_id()) {
(*it)->Release();
Send(new MediaPlayerMsg_MediaPlayerReleased(
routing_id(), (*it)->player_id()));

Powered by Google App Engine
This is Rietveld 408576698