Chromium Code Reviews| Index: media/base/android/media_player_bridge.cc |
| diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc |
| index 4ebde7dfbe42e12aeb1fe0d1f434d067d5642cc0..d4564d401b6425d11d6f62ff4afb22a5a5f207b2 100644 |
| --- a/media/base/android/media_player_bridge.cc |
| +++ b/media/base/android/media_player_bridge.cc |
| @@ -15,20 +15,9 @@ |
| #include "media/base/android/cookie_getter.h" |
| #include "media/base/android/media_player_bridge_manager.h" |
| -using base::android::AttachCurrentThread; |
| -using base::android::CheckException; |
| using base::android::ConvertUTF8ToJavaString; |
| -using base::android::GetClass; |
| -using base::android::JavaRef; |
| -using base::android::MethodID; |
| using base::android::ScopedJavaLocalRef; |
| -// These constants are from the android source tree and need to be kept in |
| -// sync with android/media/MediaMetadata.java. |
| -static const jint kPauseAvailable = 1; |
| -static const jint kSeekBackwardAvailable = 2; |
| -static const jint kSeekForwardAvailable = 3; |
| - |
| // Time update happens every 250ms. |
| static const int kTimeUpdateInterval = 250; |
| @@ -90,7 +79,7 @@ MediaPlayerBridge::~MediaPlayerBridge() { |
| } |
| void MediaPlayerBridge::InitializePlayer() { |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| CHECK(env); |
| j_media_player_.Reset(JNI_MediaPlayer::Java_MediaPlayer_Constructor(env)); |
| @@ -105,7 +94,7 @@ void MediaPlayerBridge::SetVideoSurface(jobject surface) { |
| if (j_media_player_.is_null() && surface != NULL) |
| Prepare(); |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| CHECK(env); |
| JNI_MediaPlayer::Java_MediaPlayer_setSurface( |
| @@ -130,7 +119,7 @@ void MediaPlayerBridge::GetCookiesCallback(const std::string& cookies) { |
| if (j_media_player_.is_null()) |
| return; |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| CHECK(env); |
| // Create a Java String for the URL. |
| @@ -180,7 +169,7 @@ bool MediaPlayerBridge::IsPlaying() { |
| if (!prepared_) |
| return pending_play_; |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| CHECK(env); |
| jboolean result = JNI_MediaPlayer::Java_MediaPlayer_isPlaying( |
| env, j_media_player_.obj()); |
| @@ -190,7 +179,7 @@ bool MediaPlayerBridge::IsPlaying() { |
| int MediaPlayerBridge::GetVideoWidth() { |
| if (!prepared_) |
| return width_; |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| return JNI_MediaPlayer::Java_MediaPlayer_getVideoWidth( |
| env, j_media_player_.obj()); |
| } |
| @@ -198,7 +187,7 @@ int MediaPlayerBridge::GetVideoWidth() { |
| int MediaPlayerBridge::GetVideoHeight() { |
| if (!prepared_) |
| return height_; |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| return JNI_MediaPlayer::Java_MediaPlayer_getVideoHeight( |
| env, j_media_player_.obj()); |
| } |
| @@ -216,7 +205,7 @@ void MediaPlayerBridge::SeekTo(base::TimeDelta time) { |
| base::TimeDelta MediaPlayerBridge::GetCurrentTime() { |
| if (!prepared_) |
| return pending_seek_; |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| return base::TimeDelta::FromMilliseconds( |
| JNI_MediaPlayer::Java_MediaPlayer_getCurrentPosition( |
| env, j_media_player_.obj())); |
| @@ -225,7 +214,7 @@ base::TimeDelta MediaPlayerBridge::GetCurrentTime() { |
| base::TimeDelta MediaPlayerBridge::GetDuration() { |
| if (!prepared_) |
| return duration_; |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| return base::TimeDelta::FromMilliseconds( |
| JNI_MediaPlayer::Java_MediaPlayer_getDuration( |
| env, j_media_player_.obj())); |
| @@ -244,7 +233,7 @@ void MediaPlayerBridge::Release() { |
| pending_play_ = false; |
| SetVideoSurface(NULL); |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| JNI_MediaPlayer::Java_MediaPlayer_release(env, j_media_player_.obj()); |
| j_media_player_.Reset(); |
| @@ -255,7 +244,7 @@ void MediaPlayerBridge::SetVolume(float left_volume, float right_volume) { |
| if (j_media_player_.is_null()) |
| return; |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| CHECK(env); |
| JNI_MediaPlayer::Java_MediaPlayer_setVolume( |
| env, j_media_player_.obj(), left_volume, right_volume); |
| @@ -325,41 +314,22 @@ void MediaPlayerBridge::OnMediaPrepared() { |
| } |
| void MediaPlayerBridge::GetMetadata() { |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| CHECK(env); |
| - ScopedJavaLocalRef<jclass> media_player_class( |
| - GetClass(env, "android/media/MediaPlayer")); |
| - jmethodID method = MethodID::Get<MethodID::TYPE_INSTANCE>( |
| - env, media_player_class.obj(), "getMetadata", |
| - "(ZZ)Landroid/media/Metadata;"); |
| - ScopedJavaLocalRef<jobject> j_metadata( |
| - env, env->CallObjectMethod( |
| - j_media_player_.obj(), method, JNI_FALSE, JNI_FALSE)); |
| - CheckException(env); |
| - if (j_metadata.is_null()) |
| - return; |
| + ScopedJavaLocalRef<jbooleanArray> boolean_array = |
| + Java_MediaPlayerBridge_getMetadata(env, j_media_player_.obj()); |
| + jboolean* bools = env->GetBooleanArrayElements(boolean_array.obj(), NULL); |
| + base::android::CheckException(env); |
| - ScopedJavaLocalRef<jclass> metadata_class( |
| - GetClass(env, "android/media/Metadata")); |
| - jmethodID get_boolean = MethodID::Get<MethodID::TYPE_INSTANCE>( |
| - env, metadata_class.obj(), "getBoolean", "(I)Z"); |
| - can_pause_ = env->CallBooleanMethod(j_metadata.obj(), |
| - get_boolean, |
| - kPauseAvailable); |
| - CheckException(env); |
| - can_seek_forward_ = env->CallBooleanMethod(j_metadata.obj(), |
| - get_boolean, |
| - kSeekBackwardAvailable); |
| - CheckException(env); |
| - can_seek_backward_ = env->CallBooleanMethod(j_metadata.obj(), |
| - get_boolean, |
| - kSeekForwardAvailable); |
| - CheckException(env); |
| + can_pause_ = bools[0]; |
| + can_seek_forward_ = bools[1]; |
| + can_seek_backward_ = bools[2]; |
|
bulach
2013/03/13 15:06:10
yeah, here it'd be clearer to just:
ScopedJavaLoc
qinmin
2013/03/13 18:26:58
Done.
|
| + env->ReleaseBooleanArrayElements(boolean_array.obj(), bools, JNI_ABORT); |
| } |
| void MediaPlayerBridge::StartInternal() { |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| JNI_MediaPlayer::Java_MediaPlayer_start(env, j_media_player_.obj()); |
| if (!time_update_timer_.IsRunning()) { |
| time_update_timer_.Start( |
| @@ -370,13 +340,13 @@ void MediaPlayerBridge::StartInternal() { |
| } |
| void MediaPlayerBridge::PauseInternal() { |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| JNI_MediaPlayer::Java_MediaPlayer_pause(env, j_media_player_.obj()); |
| time_update_timer_.Stop(); |
| } |
| void MediaPlayerBridge::SeekInternal(base::TimeDelta time) { |
| - JNIEnv* env = AttachCurrentThread(); |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| CHECK(env); |
| int time_msec = static_cast<int>(time.InMilliseconds()); |