OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/omnibox/autocomplete_controller_android.h" | 5 #include "chrome/browser/android/omnibox/autocomplete_controller_android.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/prefs/pref_service.h" | 9 #include "base/prefs/pref_service.h" |
10 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
108 // Nothing to do here, the results have been cached. | 108 // Nothing to do here, the results have been cached. |
109 // We don't want to trigger deletion here because this is being called by the | 109 // We don't want to trigger deletion here because this is being called by the |
110 // AutocompleteController object. | 110 // AutocompleteController object. |
111 } | 111 } |
112 | 112 |
113 } // namespace | 113 } // namespace |
114 | 114 |
115 AutocompleteControllerAndroid::AutocompleteControllerAndroid(Profile* profile) | 115 AutocompleteControllerAndroid::AutocompleteControllerAndroid(Profile* profile) |
116 : autocomplete_controller_(new AutocompleteController( | 116 : autocomplete_controller_(new AutocompleteController( |
117 profile, this, kAndroidAutocompleteProviders)), | 117 profile, this, kAndroidAutocompleteProviders)), |
118 inside_classify_(false), | 118 inside_synchronous_start_(false), |
119 profile_(profile) { | 119 profile_(profile) { |
120 } | 120 } |
121 | 121 |
122 void AutocompleteControllerAndroid::Start(JNIEnv* env, | 122 void AutocompleteControllerAndroid::Start(JNIEnv* env, |
123 jobject obj, | 123 jobject obj, |
124 jstring j_text, | 124 jstring j_text, |
125 jstring j_desired_tld, | 125 jstring j_desired_tld, |
126 jstring j_current_url, | 126 jstring j_current_url, |
127 bool prevent_inline_autocomplete, | 127 bool prevent_inline_autocomplete, |
128 bool prefer_keyword, | 128 bool prefer_keyword, |
(...skipping 23 matching lines...) Expand all Loading... | |
152 autocomplete_controller_->Start(input_); | 152 autocomplete_controller_->Start(input_); |
153 } | 153 } |
154 | 154 |
155 ScopedJavaLocalRef<jobject> AutocompleteControllerAndroid::Classify( | 155 ScopedJavaLocalRef<jobject> AutocompleteControllerAndroid::Classify( |
156 JNIEnv* env, | 156 JNIEnv* env, |
157 jobject obj, | 157 jobject obj, |
158 jstring j_text) { | 158 jstring j_text) { |
159 if (!autocomplete_controller_) | 159 if (!autocomplete_controller_) |
160 return ScopedJavaLocalRef<jobject>(); | 160 return ScopedJavaLocalRef<jobject>(); |
161 | 161 |
162 inside_classify_ = true; | 162 inside_synchronous_start_ = true; |
163 Start(env, obj, j_text, NULL, NULL, true, false, false, false); | 163 Start(env, obj, j_text, NULL, NULL, true, false, false, false); |
164 inside_classify_ = false; | 164 inside_synchronous_start_ = false; |
165 DCHECK(autocomplete_controller_->done()); | 165 DCHECK(autocomplete_controller_->done()); |
166 const AutocompleteResult& result = autocomplete_controller_->result(); | 166 const AutocompleteResult& result = autocomplete_controller_->result(); |
167 if (result.empty()) | 167 if (result.empty()) |
168 return ScopedJavaLocalRef<jobject>(); | 168 return ScopedJavaLocalRef<jobject>(); |
169 | 169 |
170 return BuildOmniboxSuggestion(env, *result.begin()); | 170 return BuildOmniboxSuggestion(env, *result.begin()); |
171 } | 171 } |
172 | 172 |
173 void AutocompleteControllerAndroid::StartZeroSuggest( | 173 void AutocompleteControllerAndroid::StartZeroSuggest( |
174 JNIEnv* env, | 174 JNIEnv* env, |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
267 return ScopedJavaLocalRef<jstring>(); | 267 return ScopedJavaLocalRef<jstring>(); |
268 | 268 |
269 AutocompleteMatch match( | 269 AutocompleteMatch match( |
270 autocomplete_controller_->result().match_at(selected_index)); | 270 autocomplete_controller_->result().match_at(selected_index)); |
271 autocomplete_controller_->UpdateMatchDestinationURL( | 271 autocomplete_controller_->UpdateMatchDestinationURL( |
272 base::TimeDelta::FromMilliseconds(elapsed_time_since_input_change), | 272 base::TimeDelta::FromMilliseconds(elapsed_time_since_input_change), |
273 &match); | 273 &match); |
274 return ConvertUTF8ToJavaString(env, match.destination_url.spec()); | 274 return ConvertUTF8ToJavaString(env, match.destination_url.spec()); |
275 } | 275 } |
276 | 276 |
277 ScopedJavaLocalRef<jobject> | |
278 AutocompleteControllerAndroid::GetTopSynchronousMatch(JNIEnv* env, | |
Yusuf
2014/06/05 21:56:06
One question is the difference between this and cl
| |
279 jobject obj, | |
280 jstring query) { | |
281 if (!autocomplete_controller_) | |
282 return ScopedJavaLocalRef<jobject>(); | |
283 | |
284 base::string16 text(ConvertJavaStringToUTF16(env, query)); | |
285 // Request synchronous matches only. | |
286 AutocompleteInput input(text, | |
287 base::string16::npos, | |
288 base::string16(), | |
289 GURL(), | |
290 AutocompleteInput::INVALID_SPEC, | |
291 false, | |
292 false, | |
293 false, | |
294 false); | |
295 inside_synchronous_start_ = true; | |
296 autocomplete_controller_->Start(input); | |
297 inside_synchronous_start_ = false; | |
298 DCHECK(autocomplete_controller_->done()); | |
299 const AutocompleteResult& result = autocomplete_controller_->result(); | |
300 if (result.empty()) | |
301 return ScopedJavaLocalRef<jobject>(); | |
302 | |
303 return BuildOmniboxSuggestion(env, *result.begin()); | |
304 } | |
305 | |
277 void AutocompleteControllerAndroid::Shutdown() { | 306 void AutocompleteControllerAndroid::Shutdown() { |
278 autocomplete_controller_.reset(); | 307 autocomplete_controller_.reset(); |
279 | 308 |
280 JNIEnv* env = AttachCurrentThread(); | 309 JNIEnv* env = AttachCurrentThread(); |
281 ScopedJavaLocalRef<jobject> java_bridge = | 310 ScopedJavaLocalRef<jobject> java_bridge = |
282 weak_java_autocomplete_controller_android_.get(env); | 311 weak_java_autocomplete_controller_android_.get(env); |
283 if (java_bridge.obj()) | 312 if (java_bridge.obj()) |
284 Java_AutocompleteController_notifyNativeDestroyed(env, java_bridge.obj()); | 313 Java_AutocompleteController_notifyNativeDestroyed(env, java_bridge.obj()); |
285 | 314 |
286 weak_java_autocomplete_controller_android_.reset(); | 315 weak_java_autocomplete_controller_android_.reset(); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
326 AutocompleteControllerAndroid::~AutocompleteControllerAndroid() { | 355 AutocompleteControllerAndroid::~AutocompleteControllerAndroid() { |
327 } | 356 } |
328 | 357 |
329 void AutocompleteControllerAndroid::InitJNI(JNIEnv* env, jobject obj) { | 358 void AutocompleteControllerAndroid::InitJNI(JNIEnv* env, jobject obj) { |
330 weak_java_autocomplete_controller_android_ = | 359 weak_java_autocomplete_controller_android_ = |
331 JavaObjectWeakGlobalRef(env, obj); | 360 JavaObjectWeakGlobalRef(env, obj); |
332 } | 361 } |
333 | 362 |
334 void AutocompleteControllerAndroid::OnResultChanged( | 363 void AutocompleteControllerAndroid::OnResultChanged( |
335 bool default_match_changed) { | 364 bool default_match_changed) { |
336 if (autocomplete_controller_.get() != NULL && !inside_classify_) | 365 if (autocomplete_controller_.get() != NULL && !inside_synchronous_start_) |
337 NotifySuggestionsReceived(autocomplete_controller_->result()); | 366 NotifySuggestionsReceived(autocomplete_controller_->result()); |
338 } | 367 } |
339 | 368 |
340 void AutocompleteControllerAndroid::NotifySuggestionsReceived( | 369 void AutocompleteControllerAndroid::NotifySuggestionsReceived( |
341 const AutocompleteResult& autocomplete_result) { | 370 const AutocompleteResult& autocomplete_result) { |
342 JNIEnv* env = AttachCurrentThread(); | 371 JNIEnv* env = AttachCurrentThread(); |
343 ScopedJavaLocalRef<jobject> java_bridge = | 372 ScopedJavaLocalRef<jobject> java_bridge = |
344 weak_java_autocomplete_controller_android_.get(env); | 373 weak_java_autocomplete_controller_android_.get(env); |
345 if (!java_bridge.obj()) | 374 if (!java_bridge.obj()) |
346 return; | 375 return; |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
499 return; | 528 return; |
500 | 529 |
501 // ZeroSuggestPrefetcher deletes itself after it's done prefetching. | 530 // ZeroSuggestPrefetcher deletes itself after it's done prefetching. |
502 new ZeroSuggestPrefetcher(profile); | 531 new ZeroSuggestPrefetcher(profile); |
503 } | 532 } |
504 | 533 |
505 // Register native methods | 534 // Register native methods |
506 bool RegisterAutocompleteControllerAndroid(JNIEnv* env) { | 535 bool RegisterAutocompleteControllerAndroid(JNIEnv* env) { |
507 return RegisterNativesImpl(env); | 536 return RegisterNativesImpl(env); |
508 } | 537 } |
OLD | NEW |