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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java

Issue 2367373003: [Android] Allow setting recently visited search engines as default search engine (Closed)
Patch Set: Created 4 years, 3 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java
index a48eea848cdd77a554d82408ec4a1e7adeeac058..1d642b17b4a2629b5ba40b633d79fa399e6c3e0f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java
@@ -34,10 +34,12 @@ import org.chromium.chrome.browser.preferences.website.WebsitePreferenceBridge;
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
import org.chromium.chrome.browser.search_engines.TemplateUrlService.LoadListener;
import org.chromium.chrome.browser.search_engines.TemplateUrlService.TemplateUrl;
+import org.chromium.chrome.browser.search_engines.TemplateUrlService.TemplateUrlType;
import org.chromium.components.location.LocationUtils;
import org.chromium.ui.text.SpanApplier;
import org.chromium.ui.text.SpanApplier.SpanInfo;
+import java.util.Collections;
import java.util.List;
/**
@@ -109,6 +111,15 @@ public class SearchEngineAdapter extends BaseAdapter implements LoadListener, On
// Fetch all the search engine info and the currently active one.
mSearchEngines = templateUrlService.getLocalizedSearchEngines();
int searchEngineIndex = templateUrlService.getDefaultSearchEngineIndex();
Ian Wen 2016/09/27 04:42:00 Rename this to be defaultEngineIndex.
ltian 2016/09/28 19:19:46 Done.
+
+ for (int i = 0; i < mSearchEngines.size(); ++i) {
+ setSearchEngineType(mSearchEngines.get(i), searchEngineIndex);
+ }
+ TemplateUrl divider = new TemplateUrl(-1, "", "", false);
Ian Wen 2016/09/27 04:42:00 Oops this is wrong. Don't do it. What will happen
ltian 2016/09/28 19:19:46 Done.
+ divider.setTemplateUrlType(TemplateUrlType.DIVIDER);
+ mSearchEngines.add(divider);
+ Collections.sort(mSearchEngines);
+
// Convert the TemplateUrl index into an index into mSearchEngines.
mSelectedSearchEnginePosition = -1;
for (int i = 0; i < mSearchEngines.size(); ++i) {
@@ -121,6 +132,16 @@ public class SearchEngineAdapter extends BaseAdapter implements LoadListener, On
mCallback.currentSearchEngineDetermined(toIndex(mSelectedSearchEnginePosition));
}
+ private void setSearchEngineType(TemplateUrl templateUrl, int searchEngineIndex) {
Ian Wen 2016/09/27 04:42:00 The adapter shouldn't be responsible for setting t
ltian 2016/09/28 19:19:46 Done.
+ if (templateUrl.getIsPrepopulated()) {
+ templateUrl.setTemplateUrlType(TemplateUrlType.PREPOPULATED);
+ } else if (templateUrl.getIndex() == searchEngineIndex) {
+ templateUrl.setTemplateUrlType(TemplateUrlType.DEFAULT);
+ } else {
+ templateUrl.setTemplateUrlType(TemplateUrlType.CUSTOM);
+ }
+ }
+
private int toIndex(int position) {
return mSearchEngines.get(position).getIndex();
}
@@ -146,8 +167,19 @@ public class SearchEngineAdapter extends BaseAdapter implements LoadListener, On
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
+ TemplateUrl templateUrl = mSearchEngines.get(position);
if (convertView == null) {
- view = mLayoutInflater.inflate(R.layout.search_engine, null);
+ if (templateUrl.getTemplateUrlType() == TemplateUrlType.DIVIDER) {
+ view = mLayoutInflater.inflate(R.layout.search_engine_divider, null);
+ } else {
+ view = mLayoutInflater.inflate(R.layout.search_engine, null);
+ }
+ }
+
+ if (templateUrl.getTemplateUrlType() == TemplateUrlType.DIVIDER) {
+ view.setOnClickListener(null);
+ view.setEnabled(false);
+ return view;
}
view.setOnClickListener(this);
@@ -168,10 +200,16 @@ public class SearchEngineAdapter extends BaseAdapter implements LoadListener, On
radioButton.setChecked(selected);
TextView description = (TextView) view.findViewById(R.id.description);
- TemplateUrl templateUrl = mSearchEngines.get(position);
Resources resources = mContext.getResources();
description.setText(templateUrl.getShortName());
+ TextView url = (TextView) view.findViewById(R.id.url);
+ url.setText(templateUrl.getUrl());
+ if (templateUrl.getTemplateUrlType() == TemplateUrlType.PREPOPULATED
+ || templateUrl.getUrl().length() == 0) {
+ url.setVisibility(View.GONE);
+ }
+
// To improve the explore-by-touch experience, the radio button is hidden from accessibility
// and instead, "checked" or "not checked" is read along with the search engine's name, e.g.
// "google.com checked" or "google.com not checked".

Powered by Google App Engine
This is Rietveld 408576698