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

Unified Diff: chrome/android/junit/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapterTest.java

Issue 2274293002: 📰 Keep Suggestion sections in declaration order (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsBridge.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
+ }
}
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsBridge.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698