OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |