| Index: chrome/browser/android/omnibox/autocomplete_controller_android.cc
|
| diff --git a/chrome/browser/android/omnibox/autocomplete_controller_android.cc b/chrome/browser/android/omnibox/autocomplete_controller_android.cc
|
| index c976ebee25250f3c019b40939a17c2531c0f90c3..ea6cfc703780f4cf852d2ec56594f7edeb718f93 100644
|
| --- a/chrome/browser/android/omnibox/autocomplete_controller_android.cc
|
| +++ b/chrome/browser/android/omnibox/autocomplete_controller_android.cc
|
| @@ -115,7 +115,7 @@ void ZeroSuggestPrefetcher::OnResultChanged(bool default_match_changed) {
|
| AutocompleteControllerAndroid::AutocompleteControllerAndroid(Profile* profile)
|
| : autocomplete_controller_(new AutocompleteController(
|
| profile, this, kAndroidAutocompleteProviders)),
|
| - inside_classify_(false),
|
| + inside_synchronous_start_(false),
|
| profile_(profile) {
|
| }
|
|
|
| @@ -156,18 +156,7 @@ ScopedJavaLocalRef<jobject> AutocompleteControllerAndroid::Classify(
|
| JNIEnv* env,
|
| jobject obj,
|
| jstring j_text) {
|
| - if (!autocomplete_controller_)
|
| - return ScopedJavaLocalRef<jobject>();
|
| -
|
| - inside_classify_ = true;
|
| - Start(env, obj, j_text, NULL, NULL, true, false, false, false);
|
| - inside_classify_ = false;
|
| - DCHECK(autocomplete_controller_->done());
|
| - const AutocompleteResult& result = autocomplete_controller_->result();
|
| - if (result.empty())
|
| - return ScopedJavaLocalRef<jobject>();
|
| -
|
| - return BuildOmniboxSuggestion(env, *result.begin());
|
| + return GetTopSynchronousResult(env, obj, j_text, true);
|
| }
|
|
|
| void AutocompleteControllerAndroid::StartZeroSuggest(
|
| @@ -274,6 +263,13 @@ AutocompleteControllerAndroid::UpdateMatchDestinationURL(
|
| return ConvertUTF8ToJavaString(env, match.destination_url.spec());
|
| }
|
|
|
| +ScopedJavaLocalRef<jobject>
|
| +AutocompleteControllerAndroid::GetTopSynchronousMatch(JNIEnv* env,
|
| + jobject obj,
|
| + jstring query) {
|
| + return GetTopSynchronousResult(env, obj, query, false);
|
| +}
|
| +
|
| void AutocompleteControllerAndroid::Shutdown() {
|
| autocomplete_controller_.reset();
|
|
|
| @@ -333,7 +329,7 @@ void AutocompleteControllerAndroid::InitJNI(JNIEnv* env, jobject obj) {
|
|
|
| void AutocompleteControllerAndroid::OnResultChanged(
|
| bool default_match_changed) {
|
| - if (autocomplete_controller_.get() != NULL && !inside_classify_)
|
| + if (autocomplete_controller_.get() != NULL && !inside_synchronous_start_)
|
| NotifySuggestionsReceived(autocomplete_controller_->result());
|
| }
|
|
|
| @@ -373,6 +369,43 @@ void AutocompleteControllerAndroid::NotifySuggestionsReceived(
|
| j_autocomplete_result);
|
| }
|
|
|
| +AutocompleteInput::PageClassification
|
| +AutocompleteControllerAndroid::ClassifyPage(const GURL& gurl,
|
| + bool is_query_in_omnibox,
|
| + bool focused_from_fakebox) const {
|
| + if (!gurl.is_valid())
|
| + return AutocompleteInput::INVALID_SPEC;
|
| +
|
| + const std::string& url = gurl.spec();
|
| +
|
| + if (gurl.SchemeIs(content::kChromeUIScheme) &&
|
| + gurl.host() == chrome::kChromeUINewTabHost) {
|
| + return AutocompleteInput::NTP;
|
| + }
|
| +
|
| + if (url == chrome::kChromeUINativeNewTabURL) {
|
| + return focused_from_fakebox ?
|
| + AutocompleteInput::INSTANT_NTP_WITH_FAKEBOX_AS_STARTING_FOCUS :
|
| + AutocompleteInput::INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS;
|
| + }
|
| +
|
| + if (url == content::kAboutBlankURL)
|
| + return AutocompleteInput::BLANK;
|
| +
|
| + if (url == profile_->GetPrefs()->GetString(prefs::kHomePage))
|
| + return AutocompleteInput::HOME_PAGE;
|
| +
|
| + if (is_query_in_omnibox)
|
| + return AutocompleteInput::SEARCH_RESULT_PAGE_DOING_SEARCH_TERM_REPLACEMENT;
|
| +
|
| + bool is_search_url = TemplateURLServiceFactory::GetForProfile(profile_)->
|
| + IsSearchResultsPageFromDefaultSearchProvider(gurl);
|
| + if (is_search_url)
|
| + return AutocompleteInput::SEARCH_RESULT_PAGE_NO_SEARCH_TERM_REPLACEMENT;
|
| +
|
| + return AutocompleteInput::OTHER;
|
| +}
|
| +
|
| ScopedJavaLocalRef<jobject>
|
| AutocompleteControllerAndroid::BuildOmniboxSuggestion(
|
| JNIEnv* env,
|
| @@ -420,37 +453,32 @@ base::string16 AutocompleteControllerAndroid::FormatURLUsingAcceptLanguages(
|
| net::UnescapeRule::SPACES, NULL, NULL, NULL);
|
| }
|
|
|
| -AutocompleteInput::PageClassification
|
| -AutocompleteControllerAndroid::ClassifyPage(const GURL& gurl,
|
| - bool is_query_in_omnibox,
|
| - bool focused_from_fakebox) const {
|
| - if (!gurl.is_valid())
|
| - return AutocompleteInput::INVALID_SPEC;
|
| -
|
| - const std::string& url = gurl.spec();
|
| -
|
| - if (gurl.SchemeIs(content::kChromeUIScheme) &&
|
| - gurl.host() == chrome::kChromeUINewTabHost) {
|
| - return AutocompleteInput::NTP;
|
| - }
|
| - if (url == chrome::kChromeUINativeNewTabURL) {
|
| - return focused_from_fakebox ?
|
| - AutocompleteInput::INSTANT_NTP_WITH_FAKEBOX_AS_STARTING_FOCUS :
|
| - AutocompleteInput::INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS;
|
| - }
|
| - if (url == content::kAboutBlankURL)
|
| - return AutocompleteInput::BLANK;
|
| +ScopedJavaLocalRef<jobject>
|
| +AutocompleteControllerAndroid::GetTopSynchronousResult(
|
| + JNIEnv* env,
|
| + jobject obj,
|
| + jstring j_text,
|
| + bool prevent_inline_autocomplete) {
|
| + if (!autocomplete_controller_)
|
| + return ScopedJavaLocalRef<jobject>();
|
|
|
| - if (url == profile_->GetPrefs()->GetString(prefs::kHomePage))
|
| - return AutocompleteInput::HOME_PAGE;
|
| - if (is_query_in_omnibox)
|
| - return AutocompleteInput::SEARCH_RESULT_PAGE_DOING_SEARCH_TERM_REPLACEMENT;
|
| + inside_synchronous_start_ = true;
|
| + Start(env,
|
| + obj,
|
| + j_text,
|
| + NULL,
|
| + NULL,
|
| + prevent_inline_autocomplete,
|
| + false,
|
| + false,
|
| + false);
|
| + inside_synchronous_start_ = false;
|
| + DCHECK(autocomplete_controller_->done());
|
| + const AutocompleteResult& result = autocomplete_controller_->result();
|
| + if (result.empty())
|
| + return ScopedJavaLocalRef<jobject>();
|
|
|
| - bool is_search_url = TemplateURLServiceFactory::GetForProfile(profile_)->
|
| - IsSearchResultsPageFromDefaultSearchProvider(gurl);
|
| - if (is_search_url)
|
| - return AutocompleteInput::SEARCH_RESULT_PAGE_NO_SEARCH_TERM_REPLACEMENT;
|
| - return AutocompleteInput::OTHER;
|
| + return BuildOmniboxSuggestion(env, *result.begin());
|
| }
|
|
|
| static jlong Init(JNIEnv* env, jobject obj, jobject jprofile) {
|
|
|