Index: chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java |
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java |
index d1db744501ebe5a6cdc26accfe965b85a7afc742..4a8101ec8f3f88bded2b9347199259e6fd849f3b 100644 |
--- a/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java |
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java |
@@ -11,6 +11,7 @@ |
import org.chromium.base.metrics.RecordHistogram; |
import org.chromium.base.metrics.RecordUserAction; |
import org.chromium.base.test.util.Feature; |
+import org.chromium.chrome.browser.ntp.snippets.CategoryInt; |
import org.chromium.chrome.browser.ntp.snippets.CategoryStatus; |
import org.chromium.chrome.browser.ntp.snippets.ContentSuggestionsCardLayout; |
import org.chromium.chrome.browser.ntp.snippets.FakeSuggestionsSource; |
@@ -443,6 +444,82 @@ public void testSuggestionInvalidated() { |
assertEquals(articles, mNtpAdapter.getItems().subList(2, 4)); |
} |
+ /** |
+ * Tests that the order of the categories is kept. |
+ */ |
+ @Test |
+ @Feature({"Ntp"}) |
+ public void testCategoryOrder() { |
+ FakeSuggestionsSource suggestionsSource = new FakeSuggestionsSource(); |
+ registerCategory(suggestionsSource, KnownCategories.ARTICLES, 0); |
+ registerCategory(suggestionsSource, KnownCategories.BOOKMARKS, 0); |
+ registerCategory(suggestionsSource, KnownCategories.PHYSICAL_WEB_PAGES, 0); |
+ registerCategory(suggestionsSource, KnownCategories.DOWNLOADS, 0); |
+ |
+ NewTabPageAdapter ntpAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null); |
+ List<ItemGroup> groups = ntpAdapter.getGroups(); |
+ |
+ assertEquals(6, groups.size()); |
+ assertEquals(AboveTheFoldItem.class, groups.get(0).getClass()); |
+ assertEquals(SuggestionsSection.class, groups.get(1).getClass()); |
+ assertEquals(KnownCategories.ARTICLES, getCategory(groups.get(1))); |
+ assertEquals(SuggestionsSection.class, groups.get(2).getClass()); |
+ assertEquals(KnownCategories.BOOKMARKS, getCategory(groups.get(2))); |
+ assertEquals(SuggestionsSection.class, groups.get(3).getClass()); |
+ assertEquals(KnownCategories.PHYSICAL_WEB_PAGES, getCategory(groups.get(3))); |
+ assertEquals(SuggestionsSection.class, groups.get(4).getClass()); |
+ assertEquals(KnownCategories.DOWNLOADS, getCategory(groups.get(4))); |
+ |
+ // With a different order |
+ suggestionsSource = new FakeSuggestionsSource(); |
+ registerCategory(suggestionsSource, KnownCategories.ARTICLES, 0); |
+ registerCategory(suggestionsSource, KnownCategories.PHYSICAL_WEB_PAGES, 0); |
+ registerCategory(suggestionsSource, KnownCategories.DOWNLOADS, 0); |
+ registerCategory(suggestionsSource, KnownCategories.BOOKMARKS, 0); |
+ |
+ ntpAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null); |
+ groups = ntpAdapter.getGroups(); |
+ |
+ assertEquals(6, groups.size()); |
+ assertEquals(AboveTheFoldItem.class, groups.get(0).getClass()); |
+ assertEquals(SuggestionsSection.class, groups.get(1).getClass()); |
+ assertEquals(KnownCategories.ARTICLES, getCategory(groups.get(1))); |
+ assertEquals(SuggestionsSection.class, groups.get(2).getClass()); |
+ assertEquals(KnownCategories.PHYSICAL_WEB_PAGES, getCategory(groups.get(2))); |
+ assertEquals(SuggestionsSection.class, groups.get(3).getClass()); |
+ assertEquals(KnownCategories.DOWNLOADS, getCategory(groups.get(3))); |
+ assertEquals(SuggestionsSection.class, groups.get(4).getClass()); |
+ assertEquals(KnownCategories.BOOKMARKS, getCategory(groups.get(4))); |
+ |
+ // With unknown categories |
+ suggestionsSource = new FakeSuggestionsSource(); |
+ registerCategory(suggestionsSource, KnownCategories.ARTICLES, 0); |
+ registerCategory(suggestionsSource, KnownCategories.PHYSICAL_WEB_PAGES, 0); |
+ registerCategory(suggestionsSource, KnownCategories.DOWNLOADS, 0); |
+ |
+ ntpAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null); |
+ |
+ // The adapter is already initialised, it will now only accept new categories if they have |
+ // suggestions/ |
+ registerCategory(suggestionsSource, 42, 1); |
+ registerCategory(suggestionsSource, KnownCategories.BOOKMARKS, 1); |
+ |
+ groups = ntpAdapter.getGroups(); |
+ |
+ assertEquals(7, groups.size()); |
+ assertEquals(AboveTheFoldItem.class, groups.get(0).getClass()); |
+ assertEquals(SuggestionsSection.class, groups.get(1).getClass()); |
+ assertEquals(KnownCategories.ARTICLES, getCategory(groups.get(1))); |
+ assertEquals(SuggestionsSection.class, groups.get(2).getClass()); |
+ assertEquals(KnownCategories.PHYSICAL_WEB_PAGES, getCategory(groups.get(2))); |
+ assertEquals(SuggestionsSection.class, groups.get(3).getClass()); |
+ assertEquals(KnownCategories.DOWNLOADS, getCategory(groups.get(3))); |
+ assertEquals(SuggestionsSection.class, groups.get(4).getClass()); |
+ assertEquals(42, getCategory(groups.get(4))); |
+ assertEquals(SuggestionsSection.class, groups.get(5).getClass()); |
+ assertEquals(KnownCategories.BOOKMARKS, getCategory(groups.get(5))); |
+ } |
+ |
private List<SnippetArticle> createDummySnippets(int count) { |
List<SnippetArticle> snippets = new ArrayList<>(); |
for (int index = 0; index < count; index++) { |
@@ -453,4 +530,20 @@ public void testSuggestionInvalidated() { |
} |
return snippets; |
} |
+ |
+ private void registerCategory(FakeSuggestionsSource suggestionsSource, |
+ @CategoryInt int category, int suggestionCount) { |
+ // Use available since the Adapter does not add fake suggestion source does not return |
Bernhard Bauer
2016/08/25 13:23:45
Nit: This sentence does not parse.
dgn
2016/08/25 15:09:40
Done. I have no memory of writing that. I was prob
Bernhard Bauer
2016/08/25 15:20:31
https://www.youtube.com/watch?v=SSUXXzN26zg
|
+ // snippets if it's not an available status |
+ suggestionsSource.setStatusForCategory(category, CategoryStatus.AVAILABLE); |
+ // Important: showIfEmptry flag to true. |
Bernhard Bauer
2016/08/25 13:23:45
Nit: showIfEmpty
dgn
2016/08/25 15:09:40
Done.
|
+ suggestionsSource.setInfoForCategory( |
+ category, new SuggestionsCategoryInfo( |
+ "", ContentSuggestionsCardLayout.FULL_CARD, false, true)); |
+ suggestionsSource.setSuggestionsForCategory(category, createDummySnippets(suggestionCount)); |
+ } |
+ |
+ private int getCategory(ItemGroup itemGroup) { |
+ return ((SuggestionsSection) itemGroup).getCategory(); |
+ } |
} |