 Chromium Code Reviews
 Chromium Code Reviews Issue 2555513003:
  [Android] Sort custom search engines based on last visited time and display only top 3 most recentl…  (Closed)
    
  
    Issue 2555513003:
  [Android] Sort custom search engines based on last visited time and display only top 3 most recentl…  (Closed) 
  | 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 ac86d8ff02cc5d72ab93cb532157604c29dbc54f..d89d576291341271d70a125c6194672dc7d1479e 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 | 
| @@ -155,6 +155,74 @@ public class TemplateUrlServiceTest extends NativeLibraryTestBase { | 
| assertEquals(searchEngines.get(1).getKeyword(), searchEngineKeyword); | 
| } | 
| + @SmallTest | 
| + @Feature({"SearchEngines"}) | 
| + public void testSortandGetCustomSearchEngine() throws InterruptedException { | 
| + final TemplateUrlService templateUrlService = waitForTemplateUrlServiceToLoad(); | 
| + | 
| + // Add custom search engines and verified only engines visited within 2 days are added. | 
| + // Also verified custom engines are sorted correctly. | 
| + List<TemplateUrl> searchEngines = | 
| + 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); | 
| + return templateUrlService.getSearchEngines(); | 
| + } | 
| + }); | 
| + assertEquals(7, searchEngines.size()); | 
| 
Ted C
2016/12/15 21:38:06
I assume the 7 comes from the fact that there are
 
ltian
2016/12/15 22:56:54
Return the sublist after pre-populated ones is a g
 | 
| + assertEquals("keyword2", searchEngines.get(5).getKeyword()); | 
| + assertEquals("keyword1", searchEngines.get(6).getKeyword()); | 
| + | 
| + // Add more custom search engines and verified at most 3 custom engines are returned. | 
| + // Also verified custom engines are sorted correctly. | 
| + searchEngines = | 
| + ThreadUtils.runOnUiThreadBlockingNoException(new Callable<List<TemplateUrl>>() { | 
| + @Override | 
| + public List<TemplateUrl> call() throws Exception { | 
| + templateUrlService.addSearchEngineForTesting("keyword4", 0); | 
| + templateUrlService.addSearchEngineForTesting("keyword5", 0); | 
| + return templateUrlService.getSearchEngines(); | 
| + } | 
| + }); | 
| + assertEquals(8, searchEngines.size()); | 
| + assertEquals("keyword5", searchEngines.get(5).getKeyword()); | 
| + assertEquals("keyword4", searchEngines.get(6).getKeyword()); | 
| + assertEquals("keyword2", searchEngines.get(7).getKeyword()); | 
| + | 
| + // Verified last_visited is updated correctly and sorting in descending order correctly. | 
| + searchEngines = | 
| + ThreadUtils.runOnUiThreadBlockingNoException(new Callable<List<TemplateUrl>>() { | 
| + @Override | 
| + public List<TemplateUrl> call() throws Exception { | 
| + templateUrlService.updateLastVisitedForTesting("keyword3"); | 
| + return templateUrlService.getSearchEngines(); | 
| + } | 
| + }); | 
| + assertEquals(8, searchEngines.size()); | 
| + assertEquals("keyword3", searchEngines.get(5).getKeyword()); | 
| + assertEquals("keyword5", searchEngines.get(6).getKeyword()); | 
| + assertEquals("keyword4", searchEngines.get(7).getKeyword()); | 
| + | 
| + // Set a custom engine as default provider and verified still 3 custom engines are returned. | 
| + // Also verified custom engines are sorted correctly. | 
| + searchEngines = | 
| + ThreadUtils.runOnUiThreadBlockingNoException(new Callable<List<TemplateUrl>>() { | 
| + @Override | 
| + public List<TemplateUrl> call() throws Exception { | 
| + templateUrlService.setSearchEngine("keyword4"); | 
| + return templateUrlService.getSearchEngines(); | 
| + } | 
| + }); | 
| + assertEquals(9, searchEngines.size()); | 
| + assertEquals("keyword4", searchEngines.get(5).getKeyword()); | 
| + assertEquals("keyword3", searchEngines.get(6).getKeyword()); | 
| + assertEquals("keyword5", searchEngines.get(7).getKeyword()); | 
| + assertEquals("keyword2", searchEngines.get(8).getKeyword()); | 
| + } | 
| + | 
| private TemplateUrlService waitForTemplateUrlServiceToLoad() throws InterruptedException { | 
| final AtomicBoolean observerNotified = new AtomicBoolean(false); | 
| final LoadListener listener = new LoadListener() { |