diff options
author | bulach@chromium.org <bulach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-28 12:34:33 +0000 |
---|---|---|
committer | bulach@chromium.org <bulach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-28 12:34:33 +0000 |
commit | a8b031b35441ae40e872226ebf4c911dc71c2699 (patch) | |
tree | aa1473aa0c58d136e62e40409d8e5b1bf774e1da /media | |
parent | d6ccc98afc48baa048b3599a358103bde21cbf41 (diff) | |
download | chromium_src-a8b031b35441ae40e872226ebf4c911dc71c2699.zip chromium_src-a8b031b35441ae40e872226ebf4c911dc71c2699.tar.gz chromium_src-a8b031b35441ae40e872226ebf4c911dc71c2699.tar.bz2 |
Improves jni_generator name mangling.
Uses a more compact format to avoid generating uber-long names.
Changes media_player_bridge to use such format.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10957037
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@159240 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/base/android/media_player_bridge.cc | 128 | ||||
-rw-r--r-- | media/base/android/media_player_bridge.h | 6 | ||||
-rw-r--r-- | media/media.gyp | 13 |
3 files changed, 61 insertions, 86 deletions
diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc index aa6de11..7d5aa08 100644 --- a/media/base/android/media_player_bridge.cc +++ b/media/base/android/media_player_bridge.cc @@ -11,6 +11,7 @@ #include "base/stringprintf.h" #include "base/message_loop_proxy.h" #include "jni/MediaPlayerBridge_jni.h" +#include "jni/MediaPlayer_jni.h" #include "media/base/android/cookie_getter.h" #include "media/base/android/media_player_bridge_manager.h" @@ -90,15 +91,7 @@ void MediaPlayerBridge::InitializePlayer() { JNIEnv* env = AttachCurrentThread(); CHECK(env); - j_media_player_class_.Reset(GetClass(env, "android/media/MediaPlayer")); - - jmethodID constructor = GetMethodID(env, - j_media_player_class_, - "<init>", - "()V"); - ScopedJavaLocalRef<jobject> tmp( - env, env->NewObject(j_media_player_class_.obj(), constructor)); - j_media_player_.Reset(tmp); + j_media_player_.Reset(JNI_MediaPlayer::Java_MediaPlayer_Constructor(env)); jobject j_context = base::android::GetApplicationContext(); DCHECK(j_context); @@ -113,12 +106,8 @@ void MediaPlayerBridge::SetVideoSurface(jobject surface) { JNIEnv* env = AttachCurrentThread(); CHECK(env); - jmethodID method = GetMethodID(env, - j_media_player_class_, - "setSurface", - "(Landroid/view/Surface;)V"); - env->CallVoidMethod(j_media_player_.obj(), method, surface); - CheckException(env); + JNI_MediaPlayer::Java_MediaPlayer_setSurface( + env, j_media_player_.obj(), surface); } void MediaPlayerBridge::Prepare() { @@ -153,7 +142,8 @@ void MediaPlayerBridge::GetCookiesCallback(const std::string& cookies) { j_cookies.obj(), hide_url_log_)) { if (manager_) manager_->RequestMediaResources(this); - CallVoidMethod("prepareAsync"); + JNI_MediaPlayer::Java_MediaPlayer_prepareAsync( + env, j_media_player_.obj()); } else { media_error_cb_.Run(player_id_, MEDIA_ERROR_UNKNOWN); } @@ -189,25 +179,25 @@ bool MediaPlayerBridge::IsPlaying() { JNIEnv* env = AttachCurrentThread(); CHECK(env); - - jmethodID method = GetMethodID(env, j_media_player_class_, "isPlaying", - "()Z"); - jboolean result = env->CallBooleanMethod(j_media_player_.obj(), method); - CheckException(env); - + jboolean result = JNI_MediaPlayer::Java_MediaPlayer_isPlaying( + env, j_media_player_.obj()); return result; } int MediaPlayerBridge::GetVideoWidth() { if (!prepared_) return width_; - return CallIntMethod("getVideoWidth"); + JNIEnv* env = AttachCurrentThread(); + return JNI_MediaPlayer::Java_MediaPlayer_getVideoWidth( + env, j_media_player_.obj()); } int MediaPlayerBridge::GetVideoHeight() { if (!prepared_) return height_; - return CallIntMethod("getVideoHeight"); + JNIEnv* env = AttachCurrentThread(); + return JNI_MediaPlayer::Java_MediaPlayer_getVideoHeight( + env, j_media_player_.obj()); } void MediaPlayerBridge::SeekTo(base::TimeDelta time) { @@ -223,13 +213,19 @@ void MediaPlayerBridge::SeekTo(base::TimeDelta time) { base::TimeDelta MediaPlayerBridge::GetCurrentTime() { if (!prepared_) return pending_seek_; - return base::TimeDelta::FromMilliseconds(CallIntMethod("getCurrentPosition")); + JNIEnv* env = AttachCurrentThread(); + return base::TimeDelta::FromMilliseconds( + JNI_MediaPlayer::Java_MediaPlayer_getCurrentPosition( + env, j_media_player_.obj())); } base::TimeDelta MediaPlayerBridge::GetDuration() { if (!prepared_) return duration_; - return base::TimeDelta::FromMilliseconds(CallIntMethod("getDuration")); + JNIEnv* env = AttachCurrentThread(); + return base::TimeDelta::FromMilliseconds( + JNI_MediaPlayer::Java_MediaPlayer_getDuration( + env, j_media_player_.obj())); } void MediaPlayerBridge::Release() { @@ -244,7 +240,9 @@ void MediaPlayerBridge::Release() { prepared_ = false; pending_play_ = false; SetVideoSurface(NULL); - CallVoidMethod("release"); + + JNIEnv* env = AttachCurrentThread(); + JNI_MediaPlayer::Java_MediaPlayer_release(env, j_media_player_.obj()); j_media_player_.Reset(); } @@ -254,15 +252,8 @@ void MediaPlayerBridge::SetVolume(float left_volume, float right_volume) { JNIEnv* env = AttachCurrentThread(); CHECK(env); - - jmethodID method = GetMethodID(env, - j_media_player_class_, - "setVolume", - "(FF)V"); - DCHECK(method); - env->CallVoidMethod(j_media_player_.obj(), method, - left_volume, right_volume); - CheckException(env); + JNI_MediaPlayer::Java_MediaPlayer_setVolume( + env, j_media_player_.obj(), left_volume, right_volume); } void MediaPlayerBridge::DoTimeUpdate() { @@ -326,19 +317,22 @@ void MediaPlayerBridge::GetMetadata() { JNIEnv* env = AttachCurrentThread(); CHECK(env); - jmethodID method = GetMethodID(env, - j_media_player_class_, - "getMetadata", - "(ZZ)Landroid/media/Metadata;"); - ScopedJavaLocalRef<jobject> j_metadata(env, - env->CallObjectMethod(j_media_player_.obj(), - method, JNI_FALSE, JNI_FALSE)); + ScopedJavaLocalRef<jclass> media_player_class( + GetClass(env, "android/media/MediaPlayer")); + jmethodID method = GetMethodID( + env, media_player_class, "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<jclass> cls(GetClass(env, "android/media/Metadata")); - jmethodID get_boolean = GetMethodID(env, cls, "getBoolean", "(I)Z"); + ScopedJavaLocalRef<jclass> metadata_class( + GetClass(env, "android/media/Metadata")); + jmethodID get_boolean = GetMethodID( + env, metadata_class, "getBoolean", "(I)Z"); can_pause_ = env->CallBooleanMethod(j_metadata.obj(), get_boolean, kPauseAvailable); @@ -354,7 +348,8 @@ void MediaPlayerBridge::GetMetadata() { } void MediaPlayerBridge::StartInternal() { - CallVoidMethod("start"); + JNIEnv* env = AttachCurrentThread(); + JNI_MediaPlayer::Java_MediaPlayer_start(env, j_media_player_.obj()); if (!time_update_timer_.IsRunning()) { time_update_timer_.Start( FROM_HERE, @@ -364,7 +359,8 @@ void MediaPlayerBridge::StartInternal() { } void MediaPlayerBridge::PauseInternal() { - CallVoidMethod("pause"); + JNIEnv* env = AttachCurrentThread(); + JNI_MediaPlayer::Java_MediaPlayer_pause(env, j_media_player_.obj()); time_update_timer_.Stop(); } @@ -372,46 +368,16 @@ void MediaPlayerBridge::SeekInternal(base::TimeDelta time) { JNIEnv* env = AttachCurrentThread(); CHECK(env); - jmethodID method = GetMethodID(env, j_media_player_class_, "seekTo", "(I)V"); - DCHECK(method); int time_msec = static_cast<int>(time.InMilliseconds()); - DCHECK_EQ(time.InMilliseconds(), static_cast<int64>(time_msec)); - env->CallVoidMethod(j_media_player_.obj(), - method, - time_msec); - CheckException(env); -} - -// ---- JNI Helpers for repeated call patterns. ---- - -void MediaPlayerBridge::CallVoidMethod(std::string method_name) { - JNIEnv* env = AttachCurrentThread(); - CHECK(env); - - jmethodID method = GetMethodID(env, - j_media_player_class_, - method_name.c_str(), - "()V"); - env->CallVoidMethod(j_media_player_.obj(), method); - CheckException(env); -} - -int MediaPlayerBridge::CallIntMethod(std::string method_name) { - JNIEnv* env = AttachCurrentThread(); - CHECK(env); - - jmethodID method = GetMethodID(env, - j_media_player_class_, - method_name.c_str(), - "()I"); - jint j_result = env->CallIntMethod(j_media_player_.obj(), method); - CheckException(env); - return j_result; + JNI_MediaPlayer::Java_MediaPlayer_seekTo( + env, j_media_player_.obj(), time_msec); } bool MediaPlayerBridge::RegisterMediaPlayerBridge(JNIEnv* env) { bool ret = RegisterNativesImpl(env); DCHECK(g_MediaPlayerBridge_clazz); + if (ret) + ret = JNI_MediaPlayer::RegisterNativesImpl(env); return ret; } diff --git a/media/base/android/media_player_bridge.h b/media/base/android/media_player_bridge.h index c1c1e1a..722f90f 100644 --- a/media/base/android/media_player_bridge.h +++ b/media/base/android/media_player_bridge.h @@ -142,9 +142,6 @@ class MediaPlayerBridge { bool prepared() { return prepared_; } private: - void CallVoidMethod(std::string method_name); - int CallIntMethod(std::string method_name); - // Create the actual android media player. void InitializePlayer(); @@ -207,8 +204,7 @@ class MediaPlayerBridge { // Object for retrieving cookies for this media player. scoped_ptr<CookieGetter> cookie_getter_; - // Java MediaPlayer class and instance. - base::android::ScopedJavaGlobalRef<jclass> j_media_player_class_; + // Java MediaPlayer instance. base::android::ScopedJavaGlobalRef<jobject> j_media_player_; base::RepeatingTimer<MediaPlayerBridge> time_update_timer_; diff --git a/media/media.gyp b/media/media.gyp index 9603c2d..d1a74a0 100644 --- a/media/media.gyp +++ b/media/media.gyp @@ -1162,9 +1162,22 @@ }], ['OS == "android"', { 'targets': [ + { + 'target_name': 'media_player_jni_headers', + 'type': 'none', + 'variables': { + 'jni_gen_dir': 'media', + 'input_java_class': 'android/media/MediaPlayer.class', + 'input_jar_file': '<(android_sdk)/android.jar', + }, + 'includes': [ '../build/jar_file_jni_generator.gypi' ], + }, { 'target_name': 'player_android_jni_headers', 'type': 'none', + 'dependencies': [ + 'media_player_jni_headers', + ], 'sources': [ 'base/android/java/src/org/chromium/media/MediaPlayerBridge.java', 'base/android/java/src/org/chromium/media/MediaPlayerListener.java', |