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

Side by Side Diff: chrome/browser/search_engines/template_url_service_android.cc

Issue 2555513003: [Android] Sort custom search engines based on last visited time and display only top 3 most recentl… (Closed)
Patch Set: Created 4 years 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
OLDNEW
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698