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 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
145 template_urls_ = template_url_service_->GetTemplateURLs(); | 145 template_urls_ = template_url_service_->GetTemplateURLs(); |
146 TemplateURL* default_search_provider = | 146 TemplateURL* default_search_provider = |
147 template_url_service_->GetDefaultSearchProvider(); | 147 template_url_service_->GetDefaultSearchProvider(); |
148 | 148 |
149 auto comp = [&](const TemplateURL* lhs, const TemplateURL* rhs) { | 149 auto comp = [&](const TemplateURL* lhs, const TemplateURL* rhs) { |
150 bool rhs_prepopulated = | 150 bool rhs_prepopulated = |
151 template_url_service_->IsPrepopulatedOrCreatedByPolicy(rhs); | 151 template_url_service_->IsPrepopulatedOrCreatedByPolicy(rhs); |
152 if (template_url_service_->IsPrepopulatedOrCreatedByPolicy(lhs)) { | 152 if (template_url_service_->IsPrepopulatedOrCreatedByPolicy(lhs)) { |
153 return !rhs_prepopulated || | 153 return !rhs_prepopulated || |
154 (lhs->prepopulate_id() < rhs->prepopulate_id()); | 154 (lhs->prepopulate_id() < rhs->prepopulate_id()); |
155 } else if (lhs == default_search_provider) { | |
156 return !rhs_prepopulated; | |
155 } | 157 } |
156 return (lhs == default_search_provider && !rhs_prepopulated); | 158 return rhs != default_search_provider && !rhs_prepopulated && |
159 lhs->last_visited().ToTimeT() > rhs->last_visited().ToTimeT(); | |
157 }; | 160 }; |
158 std::sort(template_urls_.begin(), template_urls_.end(), comp); | 161 std::sort(template_urls_.begin(), template_urls_.end(), comp); |
Peter Kasting
2016/12/06 06:24:55
The sort comparator is getting complicated.
I won
ltian
2016/12/07 00:56:43
Done.
| |
162 int num_remove = CountRemovedSearchEngineNum(); | |
163 template_urls_.erase(template_urls_.end()-num_remove, | |
164 template_urls_.end()); | |
Peter Kasting
2016/12/06 06:24:55
Nit: Use resize()
ltian
2016/12/07 00:56:43
Done.
| |
165 | |
166 } | |
167 | |
168 int TemplateUrlServiceAndroid::CountRemovedSearchEngineNum() { | |
169 int num_custom_engine = 0; | |
170 for (std::vector<TemplateURL*>::const_iterator i = template_urls_.begin(); | |
171 i != template_urls_.end(); i++) { | |
172 template_url_service_->ShowInDefaultList(*i) ? num_custom_engine : | |
173 num_custom_engine++; | |
174 } | |
Peter Kasting
2016/12/06 06:24:55
Nit: Use std::count_if
ltian
2016/12/07 00:56:43
Done.
| |
175 return num_custom_engine > 5 ? num_custom_engine - 5 : 0; | |
Peter Kasting
2016/12/06 06:24:55
Nit: Use std::max
ltian
2016/12/07 00:56:43
Done.
| |
159 } | 176 } |
160 | 177 |
161 void TemplateUrlServiceAndroid::OnTemplateURLServiceChanged() { | 178 void TemplateUrlServiceAndroid::OnTemplateURLServiceChanged() { |
162 JNIEnv* env = base::android::AttachCurrentThread(); | 179 JNIEnv* env = base::android::AttachCurrentThread(); |
163 if (weak_java_obj_.get(env).is_null()) | 180 if (weak_java_obj_.get(env).is_null()) |
164 return; | 181 return; |
165 LoadTemplateURLs(); | 182 LoadTemplateURLs(); |
166 | 183 |
167 Java_TemplateUrlService_onTemplateURLServiceChanged(env, | 184 Java_TemplateUrlService_onTemplateURLServiceChanged(env, |
168 weak_java_obj_.get(env)); | 185 weak_java_obj_.get(env)); |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
287 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 304 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
288 TemplateUrlServiceAndroid* template_url_service_android = | 305 TemplateUrlServiceAndroid* template_url_service_android = |
289 new TemplateUrlServiceAndroid(env, obj); | 306 new TemplateUrlServiceAndroid(env, obj); |
290 return reinterpret_cast<intptr_t>(template_url_service_android); | 307 return reinterpret_cast<intptr_t>(template_url_service_android); |
291 } | 308 } |
292 | 309 |
293 // static | 310 // static |
294 bool TemplateUrlServiceAndroid::Register(JNIEnv* env) { | 311 bool TemplateUrlServiceAndroid::Register(JNIEnv* env) { |
295 return RegisterNativesImpl(env); | 312 return RegisterNativesImpl(env); |
296 } | 313 } |
OLD | NEW |