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 423ae7a5e949011800423199de490949e26e3bce..6156bc80000c01838129fb4c05d100b5d83851dd 100644 |
| --- a/media/base/android/media_player_bridge.cc |
| +++ b/media/base/android/media_player_bridge.cc |
| @@ -13,6 +13,8 @@ |
| #include "media/base/android/cookie_getter.h" |
| #include "media/base/android/media_player_bridge_manager.h" |
| +#include "jni/MediaPlayerBridge_jni.h" |
|
scherkus (not reviewing)
2012/09/20 19:13:55
does this have to go here or can it be in the abov
bulach
2012/09/21 10:10:26
Done.
|
| + |
| using base::android::AttachCurrentThread; |
| using base::android::CheckException; |
| using base::android::ConvertUTF8ToJavaString; |
| @@ -27,9 +29,6 @@ static const jint kPauseAvailable = 1; |
| static const jint kSeekBackwardAvailable = 2; |
| static const jint kSeekForwardAvailable = 3; |
| -// This needs to be kept in sync with android.os.PowerManager |
| -static const int kAndroidFullWakeLock = 26; |
| - |
| // Time update happens every 250ms. |
| static const int kTimeUpdateInterval = 250; |
| @@ -98,41 +97,14 @@ void MediaPlayerBridge::InitializePlayer() { |
| j_media_player_class_, |
| "<init>", |
| "()V"); |
| - ScopedJavaLocalRef<jobject> tmp(env, |
| - env->NewObject(j_media_player_class_.obj(), constructor)); |
| + ScopedJavaLocalRef<jobject> tmp( |
| + env, env->NewObject(j_media_player_class_.obj(), constructor)); |
| j_media_player_.Reset(tmp); |
| - ScopedJavaLocalRef<jobject> j_listener( |
| - listener_.CreateMediaPlayerListener()); |
| - |
| - // Set it as the various listeners. |
| - const char* listeners[] = { |
| - "OnBufferingUpdateListener", |
| - "OnCompletionListener", |
| - "OnErrorListener", |
| - "OnPreparedListener", |
| - "OnSeekCompleteListener", |
| - "OnVideoSizeChangedListener", |
| - }; |
| - for (unsigned int i = 0; i < arraysize(listeners); ++i) { |
| - std::string signature = StringPrintf("(Landroid/media/MediaPlayer$%s;)V", |
| - listeners[i]); |
| - std::string method_name = StringPrintf("set%s", listeners[i]); |
| - jmethodID method = GetMethodID(env, |
| - j_media_player_class_, |
| - method_name.c_str(), |
| - signature.c_str()); |
| - env->CallVoidMethod(j_media_player_.obj(), method, j_listener.obj()); |
| - CheckException(env); |
| - } |
| - |
| jobject j_context = base::android::GetApplicationContext(); |
| DCHECK(j_context); |
| - jmethodID method = GetMethodID(env, j_media_player_class_, |
| - "setWakeMode", "(Landroid/content/Context;I)V"); |
| - env->CallVoidMethod(j_media_player_.obj(), method, j_context, |
| - kAndroidFullWakeLock); |
| - CheckException(env); |
| + |
| + listener_.CreateMediaPlayerListener(j_context, j_media_player_.obj()); |
| } |
| void MediaPlayerBridge::SetVideoSurface(jobject surface) { |
| @@ -171,53 +143,14 @@ void MediaPlayerBridge::GetCookiesCallback(const std::string& cookies) { |
| // Create a Java String for the URL. |
| ScopedJavaLocalRef<jstring> j_url_string = ConvertUTF8ToJavaString(env, url_); |
| - |
| - // Create the android.net.Uri object. |
| - ScopedJavaLocalRef<jclass> cls(GetClass(env, "android/net/Uri")); |
| - jmethodID method = GetStaticMethodID(env, cls, |
| - "parse", "(Ljava/lang/String;)Landroid/net/Uri;"); |
| - ScopedJavaLocalRef<jobject> j_uri(env, |
| - env->CallStaticObjectMethod(cls.obj(), method, j_url_string.obj())); |
| - |
| - // Create the java.util.Map. |
| - cls.Reset(GetClass(env, "java/util/HashMap")); |
| - jmethodID constructor = GetMethodID(env, cls, "<init>", "()V"); |
| - ScopedJavaLocalRef<jobject> j_map(env, |
| - env->NewObject(cls.obj(), constructor)); |
| - jmethodID put_method = GetMethodID(env, cls, "put", |
| - "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); |
| - |
| - // Construct headers that needs to be sent with the url. |
| - HeadersMap headers; |
| - // For incognito mode, we need a header to hide url log. |
| - if (hide_url_log_) |
| - headers.insert(std::make_pair("x-hide-urls-from-log", "true")); |
| - // If cookies are present, add them in the header. |
| - if (!cookies_.empty()) |
| - headers.insert(std::make_pair("Cookie", cookies_)); |
| - |
| - // Fill the Map with the headers. |
| - for (HeadersMap::const_iterator iter = headers.begin(); |
| - iter != headers.end(); ++iter) { |
| - ScopedJavaLocalRef<jstring> key = ConvertUTF8ToJavaString(env, iter->first); |
| - ScopedJavaLocalRef<jstring> value = |
| - ConvertUTF8ToJavaString(env, iter->second); |
| - ScopedJavaLocalRef<jobject> result(env, |
| - env->CallObjectMethod(j_map.obj(), put_method, key.obj(), value.obj())); |
| - } |
| + ScopedJavaLocalRef<jstring> j_cookies = ConvertUTF8ToJavaString( |
| + env, cookies_); |
| jobject j_context = base::android::GetApplicationContext(); |
| DCHECK(j_context); |
| - // Finally- Call the setDataSource method. |
| - jmethodID set_data_source = |
| - GetMethodID(env, j_media_player_class_, "setDataSource", |
| - "(Landroid/content/Context;Landroid/net/Uri;Ljava/util/Map;)V"); |
| - env->CallVoidMethod(j_media_player_.obj(), set_data_source, j_context, |
| - j_uri.obj(), j_map.obj()); |
| - bool is_data_source_set_ = !base::android::ClearException(env); |
| - |
| - if (is_data_source_set_) { |
| + if (Java_MediaPlayerBridge_setDataSource(env, j_media_player_.obj(), |
| + j_context, j_url_string.obj(), j_cookies.obj(), hide_url_log_)) { |
|
scherkus (not reviewing)
2012/09/20 19:13:55
nit: indent style is incorrect here
you'll want t
|
| if (manager_) |
| manager_->RequestMediaResources(this); |
| CallVoidMethod("prepareAsync"); |
| @@ -476,4 +409,10 @@ int MediaPlayerBridge::CallIntMethod(std::string method_name) { |
| return j_result; |
| } |
| +bool MediaPlayerBridge::RegisterMediaPlayerBridge(JNIEnv* env) { |
| + bool ret = RegisterNativesImpl(env); |
| + DCHECK(g_MediaPlayerBridge_clazz); |
| + return ret; |
| +} |
| + |
| } // namespace media |