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

Side by Side Diff: media/base/android/media_player_bridge.cc

Issue 11038015: Android: lazy initialization for method id. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/base/android/media_player_bridge.h" 5 #include "media/base/android/media_player_bridge.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/stringprintf.h" 11 #include "base/stringprintf.h"
12 #include "base/message_loop_proxy.h" 12 #include "base/message_loop_proxy.h"
13 #include "jni/MediaPlayerBridge_jni.h" 13 #include "jni/MediaPlayerBridge_jni.h"
14 #include "jni/MediaPlayer_jni.h" 14 #include "jni/MediaPlayer_jni.h"
15 #include "media/base/android/cookie_getter.h" 15 #include "media/base/android/cookie_getter.h"
16 #include "media/base/android/media_player_bridge_manager.h" 16 #include "media/base/android/media_player_bridge_manager.h"
17 17
18 using base::android::AttachCurrentThread; 18 using base::android::AttachCurrentThread;
19 using base::android::CheckException; 19 using base::android::CheckException;
20 using base::android::ConvertUTF8ToJavaString; 20 using base::android::ConvertUTF8ToJavaString;
21 using base::android::GetClass; 21 using base::android::GetClass;
22 using base::android::GetMethodID; 22 using base::android::MethodID;
23 using base::android::JavaRef; 23 using base::android::JavaRef;
24 using base::android::ScopedJavaLocalRef; 24 using base::android::ScopedJavaLocalRef;
25 25
26 // These constants are from the android source tree and need to be kept in 26 // These constants are from the android source tree and need to be kept in
27 // sync with android/media/MediaMetadata.java. 27 // sync with android/media/MediaMetadata.java.
28 static const jint kPauseAvailable = 1; 28 static const jint kPauseAvailable = 1;
29 static const jint kSeekBackwardAvailable = 2; 29 static const jint kSeekBackwardAvailable = 2;
30 static const jint kSeekForwardAvailable = 3; 30 static const jint kSeekForwardAvailable = 3;
31 31
32 // Time update happens every 250ms. 32 // Time update happens every 250ms.
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 311
312 media_prepared_cb_.Run(player_id_, duration_); 312 media_prepared_cb_.Run(player_id_, duration_);
313 } 313 }
314 314
315 void MediaPlayerBridge::GetMetadata() { 315 void MediaPlayerBridge::GetMetadata() {
316 JNIEnv* env = AttachCurrentThread(); 316 JNIEnv* env = AttachCurrentThread();
317 CHECK(env); 317 CHECK(env);
318 318
319 ScopedJavaLocalRef<jclass> media_player_class( 319 ScopedJavaLocalRef<jclass> media_player_class(
320 GetClass(env, "android/media/MediaPlayer")); 320 GetClass(env, "android/media/MediaPlayer"));
321 jmethodID method = GetMethodID( 321 jmethodID method = MethodID::Get<MethodID::TYPE_INSTANCE>(
322 env, media_player_class, "getMetadata", 322 env, media_player_class.obj(), "getMetadata",
323 "(ZZ)Landroid/media/Metadata;"); 323 "(ZZ)Landroid/media/Metadata;");
324 ScopedJavaLocalRef<jobject> j_metadata( 324 ScopedJavaLocalRef<jobject> j_metadata(
325 env, env->CallObjectMethod( 325 env, env->CallObjectMethod(
326 j_media_player_.obj(), method, JNI_FALSE, JNI_FALSE)); 326 j_media_player_.obj(), method, JNI_FALSE, JNI_FALSE));
327 CheckException(env); 327 CheckException(env);
328 if (j_metadata.is_null()) 328 if (j_metadata.is_null())
329 return; 329 return;
330 330
331 ScopedJavaLocalRef<jclass> metadata_class( 331 ScopedJavaLocalRef<jclass> metadata_class(
332 GetClass(env, "android/media/Metadata")); 332 GetClass(env, "android/media/Metadata"));
333 jmethodID get_boolean = GetMethodID( 333 jmethodID get_boolean = MethodID::Get<MethodID::TYPE_INSTANCE>(
334 env, metadata_class, "getBoolean", "(I)Z"); 334 env, metadata_class.obj(), "getBoolean", "(I)Z");
335 can_pause_ = env->CallBooleanMethod(j_metadata.obj(), 335 can_pause_ = env->CallBooleanMethod(j_metadata.obj(),
336 get_boolean, 336 get_boolean,
337 kPauseAvailable); 337 kPauseAvailable);
338 CheckException(env); 338 CheckException(env);
339 can_seek_forward_ = env->CallBooleanMethod(j_metadata.obj(), 339 can_seek_forward_ = env->CallBooleanMethod(j_metadata.obj(),
340 get_boolean, 340 get_boolean,
341 kSeekBackwardAvailable); 341 kSeekBackwardAvailable);
342 CheckException(env); 342 CheckException(env);
343 can_seek_backward_ = env->CallBooleanMethod(j_metadata.obj(), 343 can_seek_backward_ = env->CallBooleanMethod(j_metadata.obj(),
344 get_boolean, 344 get_boolean,
(...skipping 29 matching lines...) Expand all
374 374
375 bool MediaPlayerBridge::RegisterMediaPlayerBridge(JNIEnv* env) { 375 bool MediaPlayerBridge::RegisterMediaPlayerBridge(JNIEnv* env) {
376 bool ret = RegisterNativesImpl(env); 376 bool ret = RegisterNativesImpl(env);
377 DCHECK(g_MediaPlayerBridge_clazz); 377 DCHECK(g_MediaPlayerBridge_clazz);
378 if (ret) 378 if (ret)
379 ret = JNI_MediaPlayer::RegisterNativesImpl(env); 379 ret = JNI_MediaPlayer::RegisterNativesImpl(env);
380 return ret; 380 return ret;
381 } 381 }
382 382
383 } // namespace media 383 } // namespace media
OLDNEW
« no previous file with comments | « content/common/android/surface_texture_bridge.cc ('k') | net/proxy/proxy_config_service_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698