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

Side by Side Diff: chrome/browser/android/omnibox/autocomplete_controller_android.cc

Issue 319813002: Add a method to retrieve the top synchronous suggestion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 6 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
« no previous file with comments | « chrome/browser/android/omnibox/autocomplete_controller_android.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/android/omnibox/autocomplete_controller_android.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698