| Index: chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceTest.java
|
| index 6df1e96a6ee3d10319327d01f4cac261225f4f09..2f72de3353caf01c7bb7ca63037b8fb70694e6dc 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/search_engines/TemplateUrlServiceTest.java
|
| @@ -154,6 +154,87 @@ public class TemplateUrlServiceTest extends NativeLibraryTestBase {
|
| assertEquals(searchEngines.get(1).getKeyword(), searchEngineKeyword);
|
| }
|
|
|
| + @SmallTest
|
| + @Feature({"SearchEngines"})
|
| + public void testSortandGetCustomSearchEngine() {
|
| + final TemplateUrlService templateUrlService = waitForTemplateUrlServiceToLoad();
|
| +
|
| + // Get the number of prepopulated search engine.
|
| + final int prepopulatedEngineNum =
|
| + ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Integer>() {
|
| + @Override
|
| + public Integer call() throws Exception {
|
| + return templateUrlService.getSearchEngines().size();
|
| + }
|
| + });
|
| +
|
| + // Add custom search engines and verified only engines visited within 2 days are added.
|
| + // Also verified custom engines are sorted correctly.
|
| + List<TemplateUrl> customSearchEngines =
|
| + ThreadUtils.runOnUiThreadBlockingNoException(new Callable<List<TemplateUrl>>() {
|
| + @Override
|
| + public List<TemplateUrl> call() throws Exception {
|
| + templateUrlService.addSearchEngineForTesting("keyword1", 0);
|
| + templateUrlService.addSearchEngineForTesting("keyword2", 0);
|
| + templateUrlService.addSearchEngineForTesting("keyword3", 3);
|
| + List<TemplateUrl> searchEngines = templateUrlService.getSearchEngines();
|
| + return searchEngines.subList(prepopulatedEngineNum, searchEngines.size());
|
| + }
|
| + });
|
| + assertEquals(2, customSearchEngines.size());
|
| + assertEquals("keyword2", customSearchEngines.get(0).getKeyword());
|
| + assertEquals("keyword1", customSearchEngines.get(1).getKeyword());
|
| +
|
| + // Add more custom search engines and verified at most 3 custom engines are returned.
|
| + // Also verified custom engines are sorted correctly.
|
| + customSearchEngines =
|
| + ThreadUtils.runOnUiThreadBlockingNoException(new Callable<List<TemplateUrl>>() {
|
| + @Override
|
| + public List<TemplateUrl> call() throws Exception {
|
| + templateUrlService.addSearchEngineForTesting("keyword4", 0);
|
| + templateUrlService.addSearchEngineForTesting("keyword5", 0);
|
| + List<TemplateUrl> searchEngines = templateUrlService.getSearchEngines();
|
| + return searchEngines.subList(prepopulatedEngineNum, searchEngines.size());
|
| + }
|
| + });
|
| + assertEquals(3, customSearchEngines.size());
|
| + assertEquals("keyword5", customSearchEngines.get(0).getKeyword());
|
| + assertEquals("keyword4", customSearchEngines.get(1).getKeyword());
|
| + assertEquals("keyword2", customSearchEngines.get(2).getKeyword());
|
| +
|
| + // Verified last_visited is updated correctly and sorting in descending order correctly.
|
| + customSearchEngines =
|
| + ThreadUtils.runOnUiThreadBlockingNoException(new Callable<List<TemplateUrl>>() {
|
| + @Override
|
| + public List<TemplateUrl> call() throws Exception {
|
| + templateUrlService.updateLastVisitedForTesting("keyword3");
|
| + List<TemplateUrl> searchEngines = templateUrlService.getSearchEngines();
|
| + return searchEngines.subList(prepopulatedEngineNum, searchEngines.size());
|
| + }
|
| + });
|
| + assertEquals(3, customSearchEngines.size());
|
| + assertEquals("keyword3", customSearchEngines.get(0).getKeyword());
|
| + assertEquals("keyword5", customSearchEngines.get(1).getKeyword());
|
| + assertEquals("keyword4", customSearchEngines.get(2).getKeyword());
|
| +
|
| + // Set a custom engine as default provider and verified still 3 custom engines are returned.
|
| + // Also verified custom engines are sorted correctly.
|
| + customSearchEngines =
|
| + ThreadUtils.runOnUiThreadBlockingNoException(new Callable<List<TemplateUrl>>() {
|
| + @Override
|
| + public List<TemplateUrl> call() throws Exception {
|
| + templateUrlService.setSearchEngine("keyword4");
|
| + List<TemplateUrl> searchEngines = templateUrlService.getSearchEngines();
|
| + return searchEngines.subList(prepopulatedEngineNum, searchEngines.size());
|
| + }
|
| + });
|
| + assertEquals(4, customSearchEngines.size());
|
| + assertEquals("keyword4", customSearchEngines.get(0).getKeyword());
|
| + assertEquals("keyword3", customSearchEngines.get(1).getKeyword());
|
| + assertEquals("keyword5", customSearchEngines.get(2).getKeyword());
|
| + assertEquals("keyword2", customSearchEngines.get(3).getKeyword());
|
| + }
|
| +
|
| private TemplateUrlService waitForTemplateUrlServiceToLoad() {
|
| final AtomicBoolean observerNotified = new AtomicBoolean(false);
|
| final LoadListener listener = new LoadListener() {
|
|
|