| 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 47fadbc0fcad933dab1e5faef3cf01433e60ea9b..c53b9a01cd44112b63fc5d037f32d17b80f5f1e2 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
|
| @@ -39,24 +39,24 @@ public class NewTabPageAdapterTest {
|
| org.robolectric.shadows.ShadowLog.stream = System.out;
|
| }
|
|
|
| - private FakeSuggestionsSource mSnippetsSource = new FakeSuggestionsSource();
|
| - private NewTabPageAdapter mNtpAdapter;
|
| + private FakeSuggestionsSource mSource;
|
| + private NewTabPageAdapter mAdapter;
|
|
|
| /**
|
| - * Asserts that {@link #mNtpAdapter}.{@link NewTabPageAdapter#getItemCount()} corresponds to an
|
| + * Asserts that {@link #mAdapter}.{@link NewTabPageAdapter#getItemCount()} corresponds to an
|
| * NTP with the given sections in it.
|
| * @param sections A list of sections, each represented by the number of items that are required
|
| - * to represent it on the UI. For readability, these numbers should be generated
|
| + * to represent it in the UI. For readability, these numbers should be generated
|
| * with the methods below.
|
| */
|
| private void assertItemsFor(int... sections) {
|
| int expectedCount = 1; // above-the-fold.
|
| for (int section : sections) expectedCount += section;
|
| - if (sections.length > 0) expectedCount += 1; // bottom spacer.
|
| - int actualCount = mNtpAdapter.getItemCount();
|
| + if (sections.length > 0) expectedCount += 2; // footer and bottom spacer.
|
| + int actualCount = mAdapter.getItemCount();
|
| assertEquals("Expected " + expectedCount + " items, but the following " + actualCount
|
| - + " were present: " + mNtpAdapter.getItems(),
|
| - expectedCount, mNtpAdapter.getItemCount());
|
| + + " were present: " + mAdapter.getItems(),
|
| + expectedCount, mAdapter.getItemCount());
|
| }
|
|
|
| /**
|
| @@ -95,14 +95,6 @@ public class NewTabPageAdapterTest {
|
| }
|
|
|
| /**
|
| - * To be used with {@link #assertItemsFor(int...)}, for a section that is hidden.
|
| - * @return The number of items that should be used by the adapter to represent this section.
|
| - */
|
| - private int sectionHidden() {
|
| - return 0; // The section returns no items.
|
| - }
|
| -
|
| - /**
|
| * To be used with {@link #assertItemsFor(int...)}, for a section with button that has no
|
| * suggestions and instead displays a status card.
|
| * @return The number of items that should be used by the adapter to represent this section.
|
| @@ -116,156 +108,153 @@ public class NewTabPageAdapterTest {
|
| RecordHistogram.disableForTests();
|
| RecordUserAction.disableForTests();
|
|
|
| - mSnippetsSource = new FakeSuggestionsSource();
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.INITIALIZING);
|
| - mSnippetsSource.setInfoForCategory(
|
| - KnownCategories.ARTICLES,
|
| - new SuggestionsCategoryInfo(
|
| - "Articles for you", ContentSuggestionsCardLayout.FULL_CARD, false, true));
|
| - mNtpAdapter = new NewTabPageAdapter(null, null, mSnippetsSource, null);
|
| + mSource = new FakeSuggestionsSource();
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.INITIALIZING);
|
| + mSource.setInfoForCategory(KnownCategories.ARTICLES,
|
| + new SuggestionsCategoryInfo("Articles for you",
|
| + ContentSuggestionsCardLayout.FULL_CARD, false, true));
|
| + mAdapter = new NewTabPageAdapter(null, null, mSource, null);
|
| }
|
|
|
| /**
|
| - * Tests the content of the adapter under standard conditions: on start and after a snippet
|
| + * Tests the content of the adapter under standard conditions: on start and after a suggestions
|
| * fetch.
|
| */
|
| @Test
|
| @Feature({"Ntp"})
|
| - public void testSnippetLoading() {
|
| + public void testSuggestionLoading() {
|
| assertItemsFor(sectionWithStatusCard());
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mNtpAdapter.getItemViewType(0));
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mNtpAdapter.getItemViewType(1));
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_STATUS, mNtpAdapter.getItemViewType(2));
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_PROGRESS, mNtpAdapter.getItemViewType(3));
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_SPACING, mNtpAdapter.getItemViewType(4));
|
| -
|
| - List<SnippetArticle> snippets = createDummySnippets(3);
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| -
|
| - List<NewTabPageItem> loadedItems = new ArrayList<>(mNtpAdapter.getItems());
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mNtpAdapter.getItemViewType(0));
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mNtpAdapter.getItemViewType(1));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mAdapter.getItemViewType(0));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mAdapter.getItemViewType(1));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_STATUS, mAdapter.getItemViewType(2));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_PROGRESS, mAdapter.getItemViewType(3));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_FOOTER, mAdapter.getItemViewType(4));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_SPACING, mAdapter.getItemViewType(5));
|
| +
|
| + List<SnippetArticle> suggestions = createDummySuggestions(3);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, suggestions);
|
| +
|
| + List<NewTabPageItem> loadedItems = new ArrayList<>(mAdapter.getItems());
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mAdapter.getItemViewType(0));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mAdapter.getItemViewType(1));
|
| // From the loadedItems, cut out aboveTheFold and header from the front,
|
| - // and bottom spacer from the back.
|
| - assertEquals(snippets, loadedItems.subList(2, loadedItems.size() - 1));
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_SPACING,
|
| - mNtpAdapter.getItemViewType(loadedItems.size() - 1));
|
| + // and footer and bottom spacer from the back.
|
| + assertEquals(suggestions, loadedItems.subList(2, loadedItems.size() - 2));
|
| + assertEquals(
|
| + NewTabPageItem.VIEW_TYPE_FOOTER, mAdapter.getItemViewType(loadedItems.size() - 2));
|
| + assertEquals(
|
| + NewTabPageItem.VIEW_TYPE_SPACING, mAdapter.getItemViewType(loadedItems.size() - 1));
|
|
|
| // The adapter should ignore any new incoming data.
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES,
|
| - Arrays.asList(new SnippetArticle[] {new SnippetArticle(
|
| - 0, "foo", "title1", "pub1", "txt1", "foo", "bar", 0, 0, 0,
|
| - ContentSuggestionsCardLayout.FULL_CARD)}));
|
| - assertEquals(loadedItems, mNtpAdapter.getItems());
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES,
|
| + Arrays.asList(new SnippetArticle[] {new SnippetArticle(0, "foo", "title1", "pub1",
|
| + "txt1", "foo", "bar", 0, 0, 0, ContentSuggestionsCardLayout.FULL_CARD)}));
|
| + assertEquals(loadedItems, mAdapter.getItems());
|
| }
|
|
|
| /**
|
| - * Tests that the adapter keeps listening for snippet updates if it didn't get anything from
|
| + * Tests that the adapter keeps listening for suggestion updates if it didn't get anything from
|
| * a previous fetch.
|
| */
|
| @Test
|
| @Feature({"Ntp"})
|
| - public void testSnippetLoadingInitiallyEmpty() {
|
| + public void testSuggestionLoadingInitiallyEmpty() {
|
| // If we don't get anything, we should be in the same situation as the initial one.
|
| - mSnippetsSource.setSuggestionsForCategory(
|
| + mSource.setSuggestionsForCategory(
|
| KnownCategories.ARTICLES, new ArrayList<SnippetArticle>());
|
| assertItemsFor(sectionWithStatusCard());
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mNtpAdapter.getItemViewType(0));
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mNtpAdapter.getItemViewType(1));
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_STATUS, mNtpAdapter.getItemViewType(2));
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_PROGRESS, mNtpAdapter.getItemViewType(3));
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_SPACING, mNtpAdapter.getItemViewType(4));
|
| -
|
| - // We should load new snippets when we get notified about them.
|
| - List<SnippetArticle> snippets = createDummySnippets(5);
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| - List<NewTabPageItem> loadedItems = new ArrayList<>(mNtpAdapter.getItems());
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mNtpAdapter.getItemViewType(0));
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mNtpAdapter.getItemViewType(1));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mAdapter.getItemViewType(0));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mAdapter.getItemViewType(1));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_STATUS, mAdapter.getItemViewType(2));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_PROGRESS, mAdapter.getItemViewType(3));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_FOOTER, mAdapter.getItemViewType(4));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_SPACING, mAdapter.getItemViewType(5));
|
| +
|
| + // We should load new suggestions when we get notified about them.
|
| + List<SnippetArticle> suggestions = createDummySuggestions(5);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, suggestions);
|
| + List<NewTabPageItem> loadedItems = new ArrayList<>(mAdapter.getItems());
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_ABOVE_THE_FOLD, mAdapter.getItemViewType(0));
|
| + assertEquals(NewTabPageItem.VIEW_TYPE_HEADER, mAdapter.getItemViewType(1));
|
| // From the loadedItems, cut out aboveTheFold and header from the front,
|
| - // and bottom spacer from the back.
|
| - assertEquals(snippets, loadedItems.subList(2, loadedItems.size() - 1));
|
| - assertEquals(NewTabPageItem.VIEW_TYPE_SPACING,
|
| - mNtpAdapter.getItemViewType(loadedItems.size() - 1));
|
| + // and footer and bottom spacer from the back.
|
| + assertEquals(suggestions, loadedItems.subList(2, loadedItems.size() - 2));
|
| + assertEquals(
|
| + NewTabPageItem.VIEW_TYPE_FOOTER, mAdapter.getItemViewType(loadedItems.size() - 2));
|
| + assertEquals(
|
| + NewTabPageItem.VIEW_TYPE_SPACING, mAdapter.getItemViewType(loadedItems.size() - 1));
|
|
|
| // The adapter should ignore any new incoming data.
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES,
|
| - Arrays.asList(new SnippetArticle[] {new SnippetArticle(
|
| - 0, "foo", "title1", "pub1", "txt1", "foo", "bar", 0, 0, 0,
|
| - ContentSuggestionsCardLayout.FULL_CARD)}));
|
| - assertEquals(loadedItems, mNtpAdapter.getItems());
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES,
|
| + Arrays.asList(new SnippetArticle[] {new SnippetArticle(0, "foo", "title1", "pub1",
|
| + "txt1", "foo", "bar", 0, 0, 0, ContentSuggestionsCardLayout.FULL_CARD)}));
|
| + assertEquals(loadedItems, mAdapter.getItems());
|
| }
|
|
|
| /**
|
| - * Tests that the adapter clears the snippets when asked to.
|
| + * Tests that the adapter clears the suggestions when asked to.
|
| */
|
| @Test
|
| @Feature({"Ntp"})
|
| - public void testSnippetClearing() {
|
| - List<SnippetArticle> snippets = createDummySnippets(4);
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| + public void testSuggestionClearing() {
|
| + List<SnippetArticle> suggestions = createDummySuggestions(4);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, suggestions);
|
| assertItemsFor(section(4));
|
|
|
| - // If we get told that snippets are enabled, we just leave the current
|
| - // ones there and not clear.
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
|
| - CategoryStatus.AVAILABLE);
|
| + // If we get told that the category is enabled, we just leave the current suggestions do not
|
| + // clear them.
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| assertItemsFor(section(4));
|
|
|
| - // When snippets are disabled, we clear them and we should go back to
|
| + // When the category is disabled, the suggestions are cleared and we should go back to
|
| // the situation with the status card.
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
|
| - CategoryStatus.SIGNED_OUT);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.SIGNED_OUT);
|
| assertItemsFor(sectionWithStatusCard());
|
|
|
| - // The adapter should now be waiting for new snippets.
|
| - snippets = createDummySnippets(6);
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
|
| - CategoryStatus.AVAILABLE);
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| + // The adapter should now be waiting for new suggestions.
|
| + suggestions = createDummySuggestions(6);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, suggestions);
|
| assertItemsFor(section(6));
|
| }
|
|
|
| /**
|
| - * Tests that the adapter loads snippets only when the status is favorable.
|
| + * Tests that the adapter loads suggestions only when the status is favorable.
|
| */
|
| @Test
|
| @Feature({"Ntp"})
|
| - public void testSnippetLoadingBlock() {
|
| - List<SnippetArticle> snippets = createDummySnippets(3);
|
| + public void testSuggestionLoadingBlock() {
|
| + List<SnippetArticle> suggestions = createDummySuggestions(3);
|
|
|
| - // By default, status is INITIALIZING, so we can load snippets
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| + // By default, status is INITIALIZING, so we can load suggestions.
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, suggestions);
|
| assertItemsFor(section(3));
|
|
|
| // If we have snippets, we should not load the new list (i.e. the extra item does *not*
|
| // appear).
|
| - snippets.add(new SnippetArticle(0, "https://site.com/url1", "title1", "pub1", "txt1",
|
| + suggestions.add(new SnippetArticle(0, "https://site.com/url1", "title1", "pub1", "txt1",
|
| "https://site.com/url1", "https://amp.site.com/url1", 0, 0, 0,
|
| ContentSuggestionsCardLayout.FULL_CARD));
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, suggestions);
|
| assertItemsFor(section(3));
|
|
|
| // When snippets are disabled, we should not be able to load them.
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
|
| - CategoryStatus.SIGNED_OUT);
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.SIGNED_OUT);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, suggestions);
|
| assertItemsFor(sectionWithStatusCard());
|
|
|
| // INITIALIZING lets us load snippets still.
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
|
| - CategoryStatus.INITIALIZING);
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.INITIALIZING);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, suggestions);
|
| assertItemsFor(sectionWithStatusCard());
|
|
|
| // The adapter should now be waiting for new snippets and the fourth one should appear.
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
|
| - CategoryStatus.AVAILABLE);
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, suggestions);
|
| assertItemsFor(section(4));
|
| }
|
|
|
| @@ -275,23 +264,19 @@ public class NewTabPageAdapterTest {
|
| @Test
|
| @Feature({"Ntp"})
|
| public void testProgressIndicatorDisplay() {
|
| - int progressPos = mNtpAdapter.getBottomSpacerPosition() - 1;
|
| - ProgressItem progress = (ProgressItem) mNtpAdapter.getItems().get(progressPos);
|
| + int progressPos = mAdapter.getLastContentItemPosition() - 1;
|
| + ProgressItem progress = (ProgressItem) mAdapter.getItems().get(progressPos);
|
|
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
|
| - CategoryStatus.INITIALIZING);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.INITIALIZING);
|
| assertTrue(progress.isVisible());
|
|
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
|
| - CategoryStatus.AVAILABLE);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| assertFalse(progress.isVisible());
|
|
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
|
| - CategoryStatus.AVAILABLE_LOADING);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE_LOADING);
|
| assertTrue(progress.isVisible());
|
|
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
|
| - CategoryStatus.SIGNED_OUT);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.SIGNED_OUT);
|
| assertFalse(progress.isVisible());
|
| }
|
|
|
| @@ -302,31 +287,30 @@ public class NewTabPageAdapterTest {
|
| @Test
|
| @Feature({"Ntp"})
|
| public void testSectionClearingWhenUnavailable() {
|
| - List<SnippetArticle> snippets = createDummySnippets(5);
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| + List<SnippetArticle> snippets = createDummySuggestions(5);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| assertItemsFor(section(5));
|
|
|
| // When the category goes away with a hard error, the section is cleared from the UI.
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES,
|
| - CategoryStatus.LOADING_ERROR);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.LOADING_ERROR);
|
| assertItemsFor();
|
|
|
| // Same when loading a new NTP.
|
| - mNtpAdapter = new NewTabPageAdapter(null, null, mSnippetsSource, null);
|
| + mAdapter = new NewTabPageAdapter(null, null, mSource, null);
|
| assertItemsFor();
|
|
|
| // Same for CATEGORY_EXPLICITLY_DISABLED.
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| - mNtpAdapter = new NewTabPageAdapter(null, null, mSnippetsSource, null);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| + mAdapter = new NewTabPageAdapter(null, null, mSource, null);
|
| assertItemsFor(section(5));
|
| - mSnippetsSource.setStatusForCategory(
|
| + mSource.setStatusForCategory(
|
| KnownCategories.ARTICLES, CategoryStatus.CATEGORY_EXPLICITLY_DISABLED);
|
| assertItemsFor();
|
|
|
| // Same when loading a new NTP.
|
| - mNtpAdapter = new NewTabPageAdapter(null, null, mSnippetsSource, null);
|
| + mAdapter = new NewTabPageAdapter(null, null, mSource, null);
|
| assertItemsFor();
|
| }
|
|
|
| @@ -336,18 +320,18 @@ public class NewTabPageAdapterTest {
|
| @Test
|
| @Feature({"Ntp"})
|
| public void testUIUntouchedWhenNotProvided() {
|
| - List<SnippetArticle> snippets = createDummySnippets(4);
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| + List<SnippetArticle> snippets = createDummySuggestions(4);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, snippets);
|
| assertItemsFor(section(4));
|
|
|
| // When the category switches to NOT_PROVIDED, UI stays the same.
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.NOT_PROVIDED);
|
| - mSnippetsSource.silentlyRemoveCategory(KnownCategories.ARTICLES);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.NOT_PROVIDED);
|
| + mSource.silentlyRemoveCategory(KnownCategories.ARTICLES);
|
| assertItemsFor(section(4));
|
|
|
| // But it disappears when loading a new NTP.
|
| - mNtpAdapter = new NewTabPageAdapter(null, null, mSnippetsSource, null);
|
| + mAdapter = new NewTabPageAdapter(null, null, mSource, null);
|
| assertItemsFor();
|
| }
|
|
|
| @@ -356,7 +340,8 @@ public class NewTabPageAdapterTest {
|
| public void testSectionVisibleIfEmpty() {
|
| final int category = 42;
|
| final int sectionIdx = 1; // section 0 is the above-the-fold item, we test the one after.
|
| - final List<SnippetArticle> articles = Collections.unmodifiableList(createDummySnippets(3));
|
| + final List<SnippetArticle> articles =
|
| + Collections.unmodifiableList(createDummySuggestions(3));
|
| FakeSuggestionsSource suggestionsSource;
|
| SuggestionsSection section;
|
|
|
| @@ -368,7 +353,7 @@ public class NewTabPageAdapterTest {
|
| "", ContentSuggestionsCardLayout.MINIMAL_CARD, false, true));
|
|
|
| // 1.1 - Initial state
|
| - mNtpAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null);
|
| + mAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null);
|
| assertItemsFor(sectionWithStatusCard());
|
|
|
| // 1.2 - With suggestions
|
| @@ -377,8 +362,8 @@ public class NewTabPageAdapterTest {
|
| assertItemsFor(section(3));
|
|
|
| // 1.3 - When all suggestions are dismissed
|
| - assertEquals(SuggestionsSection.class, mNtpAdapter.getGroups().get(sectionIdx).getClass());
|
| - section = (SuggestionsSection) mNtpAdapter.getGroups().get(sectionIdx);
|
| + assertEquals(SuggestionsSection.class, mAdapter.getGroups().get(sectionIdx).getClass());
|
| + section = (SuggestionsSection) mAdapter.getGroups().get(sectionIdx);
|
| assertEquals(section(3), section.getItems().size());
|
| section.removeSuggestion(articles.get(0));
|
| section.removeSuggestion(articles.get(1));
|
| @@ -393,7 +378,7 @@ public class NewTabPageAdapterTest {
|
| "", ContentSuggestionsCardLayout.MINIMAL_CARD, false, false));
|
|
|
| // 2.1 - Initial state
|
| - mNtpAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null);
|
| + mAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null);
|
| assertItemsFor();
|
|
|
| // 2.2 - With suggestions
|
| @@ -412,7 +397,8 @@ public class NewTabPageAdapterTest {
|
| public void testMoreButton() {
|
| final int category = 42;
|
| final int sectionIdx = 1; // section 0 is the above the fold, we test the one after.
|
| - final List<SnippetArticle> articles = Collections.unmodifiableList(createDummySnippets(3));
|
| + final List<SnippetArticle> articles =
|
| + Collections.unmodifiableList(createDummySuggestions(3));
|
| FakeSuggestionsSource suggestionsSource;
|
| SuggestionsSection section;
|
|
|
| @@ -424,7 +410,7 @@ public class NewTabPageAdapterTest {
|
| "", ContentSuggestionsCardLayout.MINIMAL_CARD, true, true));
|
|
|
| // 1.1 - Initial state.
|
| - mNtpAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null);
|
| + mAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null);
|
| assertItemsFor(sectionWithStatusCardAndMoreButton());
|
|
|
| // 1.2 - With suggestions.
|
| @@ -433,8 +419,8 @@ public class NewTabPageAdapterTest {
|
| assertItemsFor(sectionWithMoreButton(3));
|
|
|
| // 1.3 - When all suggestions are dismissed.
|
| - assertEquals(SuggestionsSection.class, mNtpAdapter.getGroups().get(sectionIdx).getClass());
|
| - section = (SuggestionsSection) mNtpAdapter.getGroups().get(sectionIdx);
|
| + assertEquals(SuggestionsSection.class, mAdapter.getGroups().get(sectionIdx).getClass());
|
| + section = (SuggestionsSection) mAdapter.getGroups().get(sectionIdx);
|
| assertEquals(sectionWithMoreButton(3), section.getItems().size());
|
| section.removeSuggestion(articles.get(0));
|
| section.removeSuggestion(articles.get(1));
|
| @@ -449,7 +435,7 @@ public class NewTabPageAdapterTest {
|
| "", ContentSuggestionsCardLayout.MINIMAL_CARD, false, true));
|
|
|
| // 2.1 - Initial state.
|
| - mNtpAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null);
|
| + mAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null);
|
| assertItemsFor(sectionWithStatusCard());
|
|
|
| // 2.2 - With suggestions.
|
| @@ -458,8 +444,8 @@ public class NewTabPageAdapterTest {
|
| assertItemsFor(section(3));
|
|
|
| // 2.3 - When all suggestions are dismissed.
|
| - assertEquals(SuggestionsSection.class, mNtpAdapter.getGroups().get(sectionIdx).getClass());
|
| - section = (SuggestionsSection) mNtpAdapter.getGroups().get(sectionIdx);
|
| + assertEquals(SuggestionsSection.class, mAdapter.getGroups().get(sectionIdx).getClass());
|
| + section = (SuggestionsSection) mAdapter.getGroups().get(sectionIdx);
|
| assertEquals(section(3), section.getItems().size());
|
| section.removeSuggestion(articles.get(0));
|
| section.removeSuggestion(articles.get(1));
|
| @@ -473,15 +459,15 @@ public class NewTabPageAdapterTest {
|
| @Test
|
| @Feature({"Ntp"})
|
| public void testSuggestionInvalidated() {
|
| - List<SnippetArticle> articles = createDummySnippets(3);
|
| - mSnippetsSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| - mSnippetsSource.setSuggestionsForCategory(KnownCategories.ARTICLES, articles);
|
| + List<SnippetArticle> articles = createDummySuggestions(3);
|
| + mSource.setStatusForCategory(KnownCategories.ARTICLES, CategoryStatus.AVAILABLE);
|
| + mSource.setSuggestionsForCategory(KnownCategories.ARTICLES, articles);
|
| assertItemsFor(section(3));
|
| - assertEquals(articles, mNtpAdapter.getItems().subList(2, 5));
|
| + assertEquals(articles, mAdapter.getItems().subList(2, 5));
|
|
|
| SnippetArticle removed = articles.remove(1);
|
| - mSnippetsSource.fireSuggestionInvalidated(KnownCategories.ARTICLES, removed.mId);
|
| - assertEquals(articles, mNtpAdapter.getItems().subList(2, 4));
|
| + mSource.fireSuggestionInvalidated(KnownCategories.ARTICLES, removed.mId);
|
| + assertEquals(articles, mAdapter.getItems().subList(2, 4));
|
| }
|
|
|
| /**
|
| @@ -499,7 +485,7 @@ public class NewTabPageAdapterTest {
|
| NewTabPageAdapter ntpAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null);
|
| List<ItemGroup> groups = ntpAdapter.getGroups();
|
|
|
| - assertEquals(6, groups.size());
|
| + 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)));
|
| @@ -520,7 +506,7 @@ public class NewTabPageAdapterTest {
|
| ntpAdapter = new NewTabPageAdapter(null, null, suggestionsSource, null);
|
| groups = ntpAdapter.getGroups();
|
|
|
| - assertEquals(6, groups.size());
|
| + 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)));
|
| @@ -545,7 +531,7 @@ public class NewTabPageAdapterTest {
|
|
|
| groups = ntpAdapter.getGroups();
|
|
|
| - assertEquals(5, groups.size());
|
| + 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)));
|
| @@ -555,27 +541,29 @@ public class NewTabPageAdapterTest {
|
| assertEquals(KnownCategories.DOWNLOADS, getCategory(groups.get(3)));
|
| }
|
|
|
| - private List<SnippetArticle> createDummySnippets(int count) {
|
| - List<SnippetArticle> snippets = new ArrayList<>();
|
| + private List<SnippetArticle> createDummySuggestions(int count) {
|
| + List<SnippetArticle> suggestions = new ArrayList<>();
|
| for (int index = 0; index < count; index++) {
|
| - snippets.add(new SnippetArticle(0, "https://site.com/url" + index, "title" + index,
|
| + suggestions.add(new SnippetArticle(0, "https://site.com/url" + index, "title" + index,
|
| "pub" + index, "txt" + index, "https://site.com/url" + index,
|
| "https://amp.site.com/url" + index, 0, 0, 0,
|
| ContentSuggestionsCardLayout.FULL_CARD));
|
| }
|
| - return snippets;
|
| + return suggestions;
|
| }
|
|
|
| /** Registers the category with hasMoreButton=false and showIfEmpty=true*/
|
| private void registerCategory(FakeSuggestionsSource suggestionsSource,
|
| @CategoryInt int category, int suggestionCount) {
|
| - // FakeSuggestionSource does not provide snippets if the category's status is not available.
|
| + // FakeSuggestionSource does not provide suggestions if the category's status is not
|
| + // AVAILABLE.
|
| suggestionsSource.setStatusForCategory(category, CategoryStatus.AVAILABLE);
|
| // Important: showIfEmpty flag to true.
|
| suggestionsSource.setInfoForCategory(
|
| category, new SuggestionsCategoryInfo(
|
| "", ContentSuggestionsCardLayout.FULL_CARD, false, true));
|
| - suggestionsSource.setSuggestionsForCategory(category, createDummySnippets(suggestionCount));
|
| + suggestionsSource.setSuggestionsForCategory(
|
| + category, createDummySuggestions(suggestionCount));
|
| }
|
|
|
| private int getCategory(ItemGroup itemGroup) {
|
|
|