Chromium Code Reviews| 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". |