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..51e84ba4a2268cd4ccd3a49611b25c3b6191042b 100644 |
--- a/media/base/android/media_player_bridge.cc |
+++ b/media/base/android/media_player_bridge.cc |
@@ -328,34 +328,15 @@ void MediaPlayerBridge::GetMetadata() { |
JNIEnv* env = 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)); |
+ ScopedJavaLocalRef<jbooleanArray> boolean_array = |
+ Java_MediaPlayerBridge_getMetadata(env, j_media_player_.obj()); |
+ jboolean* bools = env->GetBooleanArrayElements(boolean_array.obj(), NULL); |
CheckException(env); |
- if (j_metadata.is_null()) |
- return; |
- 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]; |
+ env->ReleaseBooleanArrayElements(boolean_array.obj(), bools, JNI_ABORT); |
} |
void MediaPlayerBridge::StartInternal() { |