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 |