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

Unified Diff: content/browser/android/content_video_view.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/content_video_view.cc
diff --git a/content/browser/android/content_video_view.cc b/content/browser/android/content_video_view.cc
index 402734c3ff62cac1adfd220001b40fe1aa7f8d4c..675b1cba14f934e1e08def8d913e10d71464f541 100644
--- a/content/browser/android/content_video_view.cc
+++ b/content/browser/android/content_video_view.cc
@@ -7,38 +7,32 @@
#include "base/android/jni_android.h"
#include "base/command_line.h"
#include "base/logging.h"
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
-#include "content/browser/media/media_player_delegate_android.h"
-#endif
+#include "content/browser/android/media_player_manager_android.h"
#include "content/common/android/surface_callback.h"
#include "content/common/android/surface_texture_peer.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/common/content_switches.h"
#include "jni/ContentVideoView_jni.h"
-#include "webkit/media/android/media_metadata_android.h"
using base::android::AttachCurrentThread;
using base::android::CheckException;
using base::android::ScopedJavaGlobalRef;
-// The timeout value we should wait after user click the back button on the
-// fullscreen view.
-static const int kTimeoutMillseconds = 1000;
-
-// ----------------------------------------------------------------------------
-// Methods that call to Java via JNI
-// ----------------------------------------------------------------------------
-
namespace content {
-// static
bool ContentVideoView::RegisterContentVideoView(JNIEnv* env) {
return RegisterNativesImpl(env);
}
-void ContentVideoView::CreateContentVideoView(
- MediaPlayerDelegateAndroid* player) {
- player_ = player;
+ContentVideoView::ContentVideoView(MediaPlayerManagerAndroid* manager)
+ : manager_(manager) {
+}
+
+ContentVideoView::~ContentVideoView() {
+ DestroyContentVideoView();
+}
+
+void ContentVideoView::CreateContentVideoView() {
if (j_content_video_view_.is_null()) {
JNIEnv* env = AttachCurrentThread();
j_content_video_view_.Reset(Java_ContentVideoView_createContentVideoView(
@@ -94,198 +88,62 @@ void ContentVideoView::UpdateMediaMetadata() {
UpdateMediaMetadata(AttachCurrentThread(), j_content_video_view_.obj());
}
-// ----------------------------------------------------------------------------
-
-ContentVideoView::ContentVideoView() : player_(NULL) {
-}
-
-ContentVideoView::~ContentVideoView() {
- player_ = NULL;
-
- // If the browser process crashed, just kill the fullscreen view.
- DestroyContentVideoView();
-}
-
-// ----------------------------------------------------------------------------
-// All these functions are called on UI thread
-
int ContentVideoView::GetVideoWidth(JNIEnv*, jobject obj) const {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- return player_ ? player_->GetVideoWidth() : 0;
-#else
- return 0;
-#endif
+ media::MediaPlayerBridge* player = manager_->GetFullscreenPlayer();
+ return player ? player->GetVideoWidth() : 0;
}
int ContentVideoView::GetVideoHeight(JNIEnv*, jobject obj) const {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- return player_ ? player_->GetVideoHeight() : 0;
-#else
- return 0;
-#endif
+ media::MediaPlayerBridge* player = manager_->GetFullscreenPlayer();
+ return player ? player->GetVideoHeight() : 0;
}
int ContentVideoView::GetDurationInMilliSeconds(JNIEnv*, jobject obj) const {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- return player_ ? ConvertSecondsToMilliSeconds(player_->Duration()) : -1;
-#else
- return -1;
-#endif
+ media::MediaPlayerBridge* player = manager_->GetFullscreenPlayer();
+ return player ? player->GetDuration().InMilliseconds() : -1;
}
int ContentVideoView::GetCurrentPosition(JNIEnv*, jobject obj) const {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- return player_ ? ConvertSecondsToMilliSeconds(player_->CurrentTime()) : 0;
-#else
- return 0;
-#endif
+ media::MediaPlayerBridge* player = manager_->GetFullscreenPlayer();
+ return player ? player->GetCurrentTime().InMilliseconds() : 0;
}
bool ContentVideoView::IsPlaying(JNIEnv*, jobject obj) {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- return player_ ? player_->IsPlaying() : false;
-#else
- return false;
-#endif
+ media::MediaPlayerBridge* player = manager_->GetFullscreenPlayer();
+ return player ? player->IsPlaying() : false;
}
void ContentVideoView::SeekTo(JNIEnv*, jobject obj, jint msec) {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (player_)
- player_->Seek(static_cast<float>(msec / 1000.0));
-#endif
-}
-
-webkit_media::MediaMetadataAndroid* ContentVideoView::GetMediaMetadata() {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (!player_)
- return NULL;
-
- return new webkit_media::MediaMetadataAndroid(player_->GetVideoWidth(),
- player_->GetVideoHeight(),
- base::TimeDelta::FromSeconds(
- player_->Duration()),
- base::TimeDelta::FromSeconds(
- player_->CurrentTime()),
- !player_->IsPlaying(),
- player_->CanPause(),
- player_->CanSeekForward(),
- player_->CanSeekForward());
-#else
- return NULL;
-#endif
-}
-
-int ContentVideoView::GetPlayerId(JNIEnv*, jobject obj) const {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- return player_ ? player_->player_id() : -1;
-#else
- return -1;
-#endif
-}
-
-int ContentVideoView::GetRouteId(JNIEnv*, jobject obj) const {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- return player_ ? player_->route_id() : -1;
-#else
- return -1;
-#endif
-}
-
-int ContentVideoView::GetRenderHandle(JNIEnv*, jobject obj) const {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- static bool single_process =
- CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess);
- if (!player_)
- return -1;
-
- if (single_process)
- return 0;
- return player_->render_handle();
-#else
- return -1;
-#endif
+ manager_->FullscreenPlayerSeek(msec);
}
void ContentVideoView::Play(JNIEnv*, jobject obj) {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (player_)
- player_->Play();
-#endif
+ manager_->FullscreenPlayerPlay();
}
void ContentVideoView::Pause(JNIEnv*, jobject obj) {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (player_)
- player_->Pause();
-#endif
+ manager_->FullscreenPlayerPause();
}
-void ContentVideoView::OnTimeout() {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-#endif
- timeout_timer_.Stop();
- DestroyContentVideoView();
-}
-
-int ContentVideoView::ConvertSecondsToMilliSeconds(float seconds) const {
- return static_cast<int>(seconds * 1000);
-}
-
-// ----------------------------------------------------------------------------
-// Methods called from Java via JNI
-// ----------------------------------------------------------------------------
-
-void ContentVideoView::DestroyContentVideoView(JNIEnv*, jobject,
- jboolean release_media_player) {
-#if !defined(ANDROID_UPSTREAM_BRINGUP)
- if (player_) {
- player_->ExitFullscreen(release_media_player);
-
- // Fire off a timer so that we will close the fullscreen view in case the
- // renderer crashes.
- timeout_timer_.Start(FROM_HERE,
- base::TimeDelta::FromMilliseconds(kTimeoutMillseconds),
- this, &ContentVideoView::OnTimeout);
- }
-#endif
+void ContentVideoView::ExitFullscreen(
+ JNIEnv*, jobject, jboolean release_media_player) {
+ manager_->ExitFullscreen(release_media_player);
+ j_content_video_view_.Reset();
}
void ContentVideoView::SetSurface(JNIEnv* env, jobject obj,
- jobject surface,
- jint route_id,
- jint player_id) {
- SetSurfaceAsync(env,
- surface,
- SurfaceTexturePeer::SET_VIDEO_SURFACE_TEXTURE,
- route_id,
- player_id,
- NULL);
+ jobject surface) {
+ manager_->SetVideoSurface(surface);
+ ReleaseSurface(surface);
}
void ContentVideoView::UpdateMediaMetadata(JNIEnv* env, jobject obj) {
- scoped_ptr<webkit_media::MediaMetadataAndroid> metadata(GetMediaMetadata());
- Java_ContentVideoView_updateMediaMetadata(env,
- obj,
- metadata->width,
- metadata->height,
- metadata->duration.InMilliseconds(),
- metadata->can_pause,
- metadata->can_seek_forward,
- metadata->can_seek_backward);
+ media::MediaPlayerBridge* player = manager_->GetFullscreenPlayer();
+ if (player)
+ Java_ContentVideoView_updateMediaMetadata(
+ env, obj, player->GetVideoWidth(), player->GetVideoHeight(),
+ player->GetDuration().InMilliseconds(), player->can_pause(),
+ player->can_seek_forward(), player->can_seek_backward());
}
} // namespace content
« no previous file with comments | « content/browser/android/content_video_view.h ('k') | content/browser/android/media_player_manager_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698