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

Side by Side Diff: chrome/browser/android/provider/chrome_browser_provider.cc

Issue 11038015: Android: lazy initialization for method id. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Moves to MethodID 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 "chrome/browser/android/provider/chrome_browser_provider.h" 5 #include "chrome/browser/android/provider/chrome_browser_provider.h"
6 6
7 #include <list> 7 #include <list>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/android/jni_android.h" 10 #include "base/android/jni_android.h"
(...skipping 30 matching lines...) Expand all
41 #include "ui/gfx/favicon_size.h" 41 #include "ui/gfx/favicon_size.h"
42 42
43 using base::android::AttachCurrentThread; 43 using base::android::AttachCurrentThread;
44 using base::android::CheckException; 44 using base::android::CheckException;
45 using base::android::ClearException; 45 using base::android::ClearException;
46 using base::android::ConvertJavaStringToUTF16; 46 using base::android::ConvertJavaStringToUTF16;
47 using base::android::ConvertJavaStringToUTF8; 47 using base::android::ConvertJavaStringToUTF8;
48 using base::android::ConvertUTF8ToJavaString; 48 using base::android::ConvertUTF8ToJavaString;
49 using base::android::ConvertUTF16ToJavaString; 49 using base::android::ConvertUTF16ToJavaString;
50 using base::android::GetClass; 50 using base::android::GetClass;
51 using base::android::GetMethodID; 51 using base::android::MethodID;
52 using base::android::JavaRef; 52 using base::android::JavaRef;
53 using base::android::ScopedJavaGlobalRef; 53 using base::android::ScopedJavaGlobalRef;
54 using base::android::ScopedJavaLocalRef; 54 using base::android::ScopedJavaLocalRef;
55 using content::BrowserThread; 55 using content::BrowserThread;
56 56
57 // After refactoring the following class hierarchy has been created in order 57 // After refactoring the following class hierarchy has been created in order
58 // to avoid repeating code again for the same basic kind of tasks, to enforce 58 // to avoid repeating code again for the same basic kind of tasks, to enforce
59 // the correct thread usage and to prevent known race conditions and deadlocks. 59 // the correct thread usage and to prevent known race conditions and deadlocks.
60 // 60 //
61 // - RunOnUIThreadBlocking: auxiliary class to run methods in the UI thread 61 // - RunOnUIThreadBlocking: auxiliary class to run methods in the UI thread
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 ConvertUTF16ToJavaString(env, node->GetTitle())); 112 ConvertUTF16ToJavaString(env, node->GetTitle()));
113 113
114 jnode->Reset( 114 jnode->Reset(
115 Java_BookmarkNode_create( 115 Java_BookmarkNode_create(
116 env, node->id(), (jint) node->type(), title.obj(), url.obj(), 116 env, node->id(), (jint) node->type(), title.obj(), url.obj(),
117 parent_node.obj())); 117 parent_node.obj()));
118 } 118 }
119 119
120 jlong ConvertJLongObjectToPrimitive(JNIEnv* env, jobject long_obj) { 120 jlong ConvertJLongObjectToPrimitive(JNIEnv* env, jobject long_obj) {
121 ScopedJavaLocalRef<jclass> jlong_clazz = GetClass(env, "java/lang/Long"); 121 ScopedJavaLocalRef<jclass> jlong_clazz = GetClass(env, "java/lang/Long");
122 jmethodID long_value = GetMethodID(env, jlong_clazz, "longValue", "()J"); 122 jmethodID long_value = MethodID::Get<
123 MethodID::METHODTYPE_NORMAL, MethodID::EXCEPTIONCHECK_YES>(
124 env, jlong_clazz.obj(), "longValue", "()J");
123 return env->CallLongMethod(long_obj, long_value, NULL); 125 return env->CallLongMethod(long_obj, long_value, NULL);
124 } 126 }
125 127
126 jboolean ConvertJBooleanObjectToPrimitive(JNIEnv* env, jobject boolean_object) { 128 jboolean ConvertJBooleanObjectToPrimitive(JNIEnv* env, jobject boolean_object) {
127 ScopedJavaLocalRef<jclass> jboolean_clazz = 129 ScopedJavaLocalRef<jclass> jboolean_clazz =
128 GetClass(env, "java/lang/Boolean"); 130 GetClass(env, "java/lang/Boolean");
129 jmethodID boolean_value = 131 jmethodID boolean_value = MethodID::Get<
130 GetMethodID(env, jboolean_clazz, "booleanValue", "()Z"); 132 MethodID::METHODTYPE_NORMAL, MethodID::EXCEPTIONCHECK_YES>(
133 env, jboolean_clazz.obj(), "booleanValue", "()Z");
131 return env->CallBooleanMethod(boolean_object, boolean_value, NULL); 134 return env->CallBooleanMethod(boolean_object, boolean_value, NULL);
132 } 135 }
133 136
134 base::Time ConvertJlongToTime(jlong value) { 137 base::Time ConvertJlongToTime(jlong value) {
135 return base::Time::UnixEpoch() + 138 return base::Time::UnixEpoch() +
136 base::TimeDelta::FromMilliseconds((int64)value); 139 base::TimeDelta::FromMilliseconds((int64)value);
137 } 140 }
138 141
139 jint ConvertJIntegerToJint(JNIEnv* env, jobject integer_obj) { 142 jint ConvertJIntegerToJint(JNIEnv* env, jobject integer_obj) {
140 ScopedJavaLocalRef<jclass> jinteger_clazz = 143 ScopedJavaLocalRef<jclass> jinteger_clazz =
141 GetClass(env, "java/lang/Integer"); 144 GetClass(env, "java/lang/Integer");
142 jmethodID int_value = GetMethodID(env, jinteger_clazz, "intValue", "()I"); 145 jmethodID int_value = MethodID::Get<
146 MethodID::METHODTYPE_NORMAL, MethodID::EXCEPTIONCHECK_YES>(
147 env, jinteger_clazz.obj(), "intValue", "()I");
143 return env->CallIntMethod(integer_obj, int_value, NULL); 148 return env->CallIntMethod(integer_obj, int_value, NULL);
144 } 149 }
145 150
146 std::vector<string16> ConvertJStringArrayToString16Array(JNIEnv* env, 151 std::vector<string16> ConvertJStringArrayToString16Array(JNIEnv* env,
147 jobjectArray array) { 152 jobjectArray array) {
148 std::vector<string16> results; 153 std::vector<string16> results;
149 if (array) { 154 if (array) {
150 jsize len = env->GetArrayLength(array); 155 jsize len = env->GetArrayLength(array);
151 for (int i = 0; i < len; i++) { 156 for (int i = 0; i < len; i++) {
152 results.push_back(ConvertJavaStringToUTF16(env, 157 results.push_back(ConvertJavaStringToUTF16(env,
(...skipping 1414 matching lines...) Expand 10 before | Expand all | Expand 10 after
1567 chrome::NOTIFICATION_HISTORY_KEYWORD_SEARCH_TERM_UPDATED) { 1572 chrome::NOTIFICATION_HISTORY_KEYWORD_SEARCH_TERM_UPDATED) {
1568 JNIEnv* env = AttachCurrentThread(); 1573 JNIEnv* env = AttachCurrentThread();
1569 ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); 1574 ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env);
1570 if (obj.is_null()) 1575 if (obj.is_null())
1571 return; 1576 return;
1572 Java_ChromeBrowserProvider_onSearchTermChanged(env, obj.obj()); 1577 Java_ChromeBrowserProvider_onSearchTermChanged(env, obj.obj());
1573 } else if (type == chrome::NOTIFICATION_TEMPLATE_URL_SERVICE_LOADED) { 1578 } else if (type == chrome::NOTIFICATION_TEMPLATE_URL_SERVICE_LOADED) {
1574 template_loaded_event_.Signal(); 1579 template_loaded_event_.Signal();
1575 } 1580 }
1576 } 1581 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698