| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/search_engines/template_url_service_android.h" | 5 #include "chrome/browser/search_engines/template_url_service_android.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 base::string16 keyword( | 63 base::string16 keyword( |
| 64 base::android::ConvertJavaStringToUTF16(env, jkeyword)); | 64 base::android::ConvertJavaStringToUTF16(env, jkeyword)); |
| 65 TemplateURL* template_url = | 65 TemplateURL* template_url = |
| 66 template_url_service_->GetTemplateURLForKeyword(keyword); | 66 template_url_service_->GetTemplateURLForKeyword(keyword); |
| 67 template_url_service_->SetUserSelectedDefaultSearchProvider(template_url); | 67 template_url_service_->SetUserSelectedDefaultSearchProvider(template_url); |
| 68 } | 68 } |
| 69 | 69 |
| 70 jint TemplateUrlServiceAndroid::GetDefaultSearchProviderIndex( | 70 jint TemplateUrlServiceAndroid::GetDefaultSearchProviderIndex( |
| 71 JNIEnv* env, | 71 JNIEnv* env, |
| 72 const base::android::JavaParamRef<jobject>& obj) const { | 72 const base::android::JavaParamRef<jobject>& obj) const { |
| 73 TemplateURL* default_search_provider = | 73 const TemplateURL* default_search_provider = |
| 74 template_url_service_->GetDefaultSearchProvider(); | 74 template_url_service_->GetDefaultSearchProvider(); |
| 75 auto it = std::find(template_urls_.begin(), template_urls_.end(), | 75 auto it = std::find(template_urls_.begin(), template_urls_.end(), |
| 76 default_search_provider); | 76 default_search_provider); |
| 77 size_t default_search_provider_index_ = | 77 size_t default_search_provider_index_ = |
| 78 (it == template_urls_.end()) ? -1 : (it - template_urls_.begin()); | 78 (it == template_urls_.end()) ? -1 : (it - template_urls_.begin()); |
| 79 return default_search_provider_index_; | 79 return default_search_provider_index_; |
| 80 } | 80 } |
| 81 | 81 |
| 82 jboolean TemplateUrlServiceAndroid::IsLoaded( | 82 jboolean TemplateUrlServiceAndroid::IsLoaded( |
| 83 JNIEnv* env, | 83 JNIEnv* env, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 104 template_url_service_->GetDefaultSearchProvider(); | 104 template_url_service_->GetDefaultSearchProvider(); |
| 105 return default_search_provider && | 105 return default_search_provider && |
| 106 !default_search_provider->image_url().empty() && | 106 !default_search_provider->image_url().empty() && |
| 107 default_search_provider->image_url_ref().IsValid( | 107 default_search_provider->image_url_ref().IsValid( |
| 108 template_url_service_->search_terms_data()); | 108 template_url_service_->search_terms_data()); |
| 109 } | 109 } |
| 110 | 110 |
| 111 jboolean TemplateUrlServiceAndroid::IsDefaultSearchEngineGoogle( | 111 jboolean TemplateUrlServiceAndroid::IsDefaultSearchEngineGoogle( |
| 112 JNIEnv* env, | 112 JNIEnv* env, |
| 113 const JavaParamRef<jobject>& obj) { | 113 const JavaParamRef<jobject>& obj) { |
| 114 TemplateURL* default_search_provider = | 114 const TemplateURL* default_search_provider = |
| 115 template_url_service_->GetDefaultSearchProvider(); | 115 template_url_service_->GetDefaultSearchProvider(); |
| 116 return default_search_provider && | 116 return default_search_provider && |
| 117 default_search_provider->url_ref().HasGoogleBaseURLs( | 117 default_search_provider->url_ref().HasGoogleBaseURLs( |
| 118 template_url_service_->search_terms_data()); | 118 template_url_service_->search_terms_data()); |
| 119 } | 119 } |
| 120 | 120 |
| 121 base::android::ScopedJavaLocalRef<jobject> | 121 base::android::ScopedJavaLocalRef<jobject> |
| 122 TemplateUrlServiceAndroid::GetTemplateUrlAt(JNIEnv* env, | 122 TemplateUrlServiceAndroid::GetTemplateUrlAt(JNIEnv* env, |
| 123 const JavaParamRef<jobject>& obj, | 123 const JavaParamRef<jobject>& obj, |
| 124 jint index) const { | 124 jint index) const { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 151 template_urls_.begin(), template_urls_.end(), | 151 template_urls_.begin(), template_urls_.end(), |
| 152 [template_url_service](const TemplateURL* t_url) { | 152 [template_url_service](const TemplateURL* t_url) { |
| 153 return template_url_service->IsPrepopulatedOrCreatedByPolicy(t_url); | 153 return template_url_service->IsPrepopulatedOrCreatedByPolicy(t_url); |
| 154 }); | 154 }); |
| 155 std::sort(template_urls_.begin(), it, | 155 std::sort(template_urls_.begin(), it, |
| 156 [](const TemplateURL* lhs, const TemplateURL* rhs) { | 156 [](const TemplateURL* lhs, const TemplateURL* rhs) { |
| 157 return lhs->prepopulate_id() < rhs->prepopulate_id(); | 157 return lhs->prepopulate_id() < rhs->prepopulate_id(); |
| 158 }); | 158 }); |
| 159 | 159 |
| 160 // Place any user-selected default engine next. | 160 // Place any user-selected default engine next. |
| 161 TemplateURL* dsp = template_url_service_->GetDefaultSearchProvider(); | 161 const TemplateURL* dsp = template_url_service_->GetDefaultSearchProvider(); |
| 162 it = std::partition(it, template_urls_.end(), | 162 it = std::partition(it, template_urls_.end(), |
| 163 [dsp](const TemplateURL* t_url) { return t_url == dsp; }); | 163 [dsp](const TemplateURL* t_url) { return t_url == dsp; }); |
| 164 | 164 |
| 165 // Sort the remaining engines to place the three most recently-visited first. | 165 // Sort the remaining engines to place the three most recently-visited first. |
| 166 constexpr size_t kMaxRecentUrls = 3; | 166 constexpr size_t kMaxRecentUrls = 3; |
| 167 const size_t recent_url_num = template_urls_.end() - it; | 167 const size_t recent_url_num = template_urls_.end() - it; |
| 168 auto end = it + std::min(recent_url_num, kMaxRecentUrls); | 168 auto end = it + std::min(recent_url_num, kMaxRecentUrls); |
| 169 std::partial_sort(it, end, template_urls_.end(), | 169 std::partial_sort(it, end, template_urls_.end(), |
| 170 [](const TemplateURL* lhs, const TemplateURL* rhs) { | 170 [](const TemplateURL* lhs, const TemplateURL* rhs) { |
| 171 return lhs->last_visited() > rhs->last_visited(); | 171 return lhs->last_visited() > rhs->last_visited(); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 | 231 |
| 232 return base::android::ConvertUTF8ToJavaString(env, url); | 232 return base::android::ConvertUTF8ToJavaString(env, url); |
| 233 } | 233 } |
| 234 | 234 |
| 235 base::android::ScopedJavaLocalRef<jstring> | 235 base::android::ScopedJavaLocalRef<jstring> |
| 236 TemplateUrlServiceAndroid::ReplaceSearchTermsInUrl( | 236 TemplateUrlServiceAndroid::ReplaceSearchTermsInUrl( |
| 237 JNIEnv* env, | 237 JNIEnv* env, |
| 238 const JavaParamRef<jobject>& obj, | 238 const JavaParamRef<jobject>& obj, |
| 239 const JavaParamRef<jstring>& jquery, | 239 const JavaParamRef<jstring>& jquery, |
| 240 const JavaParamRef<jstring>& jcurrent_url) { | 240 const JavaParamRef<jstring>& jcurrent_url) { |
| 241 TemplateURL* default_provider = | 241 const TemplateURL* default_provider = |
| 242 template_url_service_->GetDefaultSearchProvider(); | 242 template_url_service_->GetDefaultSearchProvider(); |
| 243 | 243 |
| 244 base::string16 query(base::android::ConvertJavaStringToUTF16(env, jquery)); | 244 base::string16 query(base::android::ConvertJavaStringToUTF16(env, jquery)); |
| 245 GURL current_url(base::android::ConvertJavaStringToUTF16(env, jcurrent_url)); | 245 GURL current_url(base::android::ConvertJavaStringToUTF16(env, jcurrent_url)); |
| 246 GURL destination_url(current_url); | 246 GURL destination_url(current_url); |
| 247 if (default_provider && !query.empty()) { | 247 if (default_provider && !query.empty()) { |
| 248 bool refined_query = default_provider->ReplaceSearchTermsInURL( | 248 bool refined_query = default_provider->ReplaceSearchTermsInURL( |
| 249 current_url, TemplateURLRef::SearchTermsArgs(query), | 249 current_url, TemplateURLRef::SearchTermsArgs(query), |
| 250 template_url_service_->search_terms_data(), &destination_url); | 250 template_url_service_->search_terms_data(), &destination_url); |
| 251 if (refined_query) | 251 if (refined_query) |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 351 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| 352 TemplateUrlServiceAndroid* template_url_service_android = | 352 TemplateUrlServiceAndroid* template_url_service_android = |
| 353 new TemplateUrlServiceAndroid(env, obj); | 353 new TemplateUrlServiceAndroid(env, obj); |
| 354 return reinterpret_cast<intptr_t>(template_url_service_android); | 354 return reinterpret_cast<intptr_t>(template_url_service_android); |
| 355 } | 355 } |
| 356 | 356 |
| 357 // static | 357 // static |
| 358 bool TemplateUrlServiceAndroid::Register(JNIEnv* env) { | 358 bool TemplateUrlServiceAndroid::Register(JNIEnv* env) { |
| 359 return RegisterNativesImpl(env); | 359 return RegisterNativesImpl(env); |
| 360 } | 360 } |
| OLD | NEW |