Commit b9eeac84 authored by Becky Zhou's avatar Becky Zhou Committed by Commit Bot

[Feed] Enable existing test and add new tests

+ Parameterized some more tests in NewTabPageTest
+ Add some tests for FeedNewTabPage on the header views

Bug: 860055
Change-Id: Ie86d67d4e852117eb4074db9c522bbc219d5d4dc
Reviewed-on: https://chromium-review.googlesource.com/1227178
Commit-Queue: Becky Zhou <huayinz@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Reviewed-by: default avatarTheresa <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#592910}
parent 6f312268
......@@ -15,7 +15,6 @@ import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ScrollView;
......@@ -323,7 +322,7 @@ public class FeedNewTabPage extends NewTabPage {
LayoutInflater inflater = LayoutInflater.from(activity);
mSectionHeaderView = (SectionHeaderView) inflater.inflate(
R.layout.new_tab_page_snippets_expandable_header, null);
R.layout.new_tab_page_snippets_expandable_header, mRootView, false);
mSectionHeaderViewMarginResizer = MarginResizer.createAndAttach(
mSectionHeaderView, mUiConfig, mDefaultMargin, mWideMargin);
......@@ -395,12 +394,8 @@ public class FeedNewTabPage extends NewTabPage {
if (mSigninPromoView == null) {
LayoutInflater inflater = LayoutInflater.from(mRootView.getContext());
mSigninPromoView = (PersonalizedSigninPromoView) inflater.inflate(
R.layout.personalized_signin_promo_view_modern_content_suggestions, null);
ViewGroup.MarginLayoutParams lp = new ViewGroup.MarginLayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
lp.bottomMargin = mDefaultMargin;
mSigninPromoView.setLayoutParams(lp);
R.layout.personalized_signin_promo_view_modern_content_suggestions, mRootView,
false);
mSignInPromoViewMarginResizer = MarginResizer.createAndAttach(
mSigninPromoView, mUiConfig, mDefaultMargin, mWideMargin);
}
......@@ -432,4 +427,19 @@ public class FeedNewTabPage extends NewTabPage {
FeedProcessScopeFactory.clearFeedProcessScopeForTesting();
}
}
@VisibleForTesting
FeedNewTabPageMediator getMediatorForTesting() {
return mMediator;
}
@Override
public View getSignInPromoViewForTesting() {
return getSigninPromoView();
}
@Override
public View getSectionHeaderViewForTesting() {
return getSectionHeaderView();
}
}
......@@ -15,6 +15,7 @@ import com.google.android.libraries.feed.api.stream.ScrollListener;
import com.google.android.libraries.feed.api.stream.Stream;
import org.chromium.base.MemoryPressureListener;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.memory.MemoryPressureCallback;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.native_page.ContextMenuManager;
......@@ -34,6 +35,8 @@ import org.chromium.chrome.browser.signin.SigninPromoUtil;
*/
class FeedNewTabPageMediator
implements NewTabPageLayout.ScrollDelegate, ContextMenuManager.TouchEnabledDelegate {
private static boolean sOverrideFeedEnabledForTesting;
private final FeedNewTabPage mCoordinator;
private final SnapScrollHelper mSnapScrollHelper;
private final PrefChangeRegistrar mPrefChangeRegistrar;
......@@ -84,8 +87,13 @@ class FeedNewTabPageMediator
/** Update the content based on supervised user or enterprise policy. */
private void updateContent() {
// TODO(huayinz): Replace sOverrideFeedEnabledForTesting with the real preference in test
// once we have a decision for whether to re-enable the Feed on supervised/enterprise
// account removed within a session.
if (!sOverrideFeedEnabledForTesting) {
mFeedEnabled =
PrefServiceBridge.getInstance().getBoolean(Pref.NTP_ARTICLES_SECTION_ENABLED);
}
if ((mFeedEnabled && mCoordinator.getStream() != null)
|| (!mFeedEnabled && mCoordinator.getScrollViewForPolicy() != null))
return;
......@@ -316,4 +324,26 @@ class FeedNewTabPageMediator
mCoordinator.getSigninPromoView(), null);
}
}
@VisibleForTesting
void overrideFeedEnabledForTesting(boolean override) {
sOverrideFeedEnabledForTesting = override;
}
@VisibleForTesting
void updateContentForTesting(boolean feedEnabled) {
mFeedEnabled = feedEnabled;
updateContent();
}
// TODO(huayinz): Return the Model for testing in Coordinator instead once a Model is created.
@VisibleForTesting
SectionHeader getSectionHeaderForTesting() {
return mSectionHeader;
}
@VisibleForTesting
SignInPromo getSignInPromoForTesting() {
return mSignInPromo;
}
}
......@@ -46,6 +46,7 @@ if (enable_feed_in_chrome) {
feed_test_java_sources = [
"//chrome/android/javatests/src/org/chromium/chrome/browser/feed/FeedNetworkBridgeConformanceTest.java",
"//chrome/android/javatests/src/org/chromium/chrome/browser/feed/FeedNewTabPageTest.java",
"//chrome/android/javatests/src/org/chromium/chrome/browser/feed/FeedSchedulerBridgeConformanceTest.java",
"//chrome/android/javatests/src/org/chromium/chrome/browser/feed/FeedRefreshTaskTest.java",
]
......
......@@ -15,7 +15,7 @@
android:paddingEnd="16dp"
android:paddingStart="16dp"
android:paddingTop="12dp"
android:layout_marginTop="12dp">
android:layout_marginTop="@dimen/content_suggestions_card_modern_margin">
<FrameLayout
android:layout_width="match_parent"
......
......@@ -31,6 +31,8 @@ import org.chromium.chrome.browser.download.DownloadManagerService;
import org.chromium.chrome.browser.native_page.NativePage;
import org.chromium.chrome.browser.native_page.NativePageHost;
import org.chromium.chrome.browser.ntp.NewTabPageView.NewTabPageManager;
import org.chromium.chrome.browser.ntp.cards.ItemViewType;
import org.chromium.chrome.browser.ntp.cards.NewTabPageAdapter;
import org.chromium.chrome.browser.ntp.snippets.SuggestionsSource;
import org.chromium.chrome.browser.omnibox.LocationBarVoiceRecognitionHandler;
import org.chromium.chrome.browser.profiles.Profile;
......@@ -629,4 +631,22 @@ public class NewTabPage
public NewTabPageManager getManagerForTesting() {
return mNewTabPageManager;
}
@VisibleForTesting
public View getSignInPromoViewForTesting() {
RecyclerView recyclerView = mNewTabPageView.getRecyclerView();
NewTabPageAdapter adapter = (NewTabPageAdapter) recyclerView.getAdapter();
return recyclerView
.findViewHolderForAdapterPosition(
adapter.getFirstPositionForType(ItemViewType.PROMO))
.itemView;
}
@VisibleForTesting
public View getSectionHeaderViewForTesting() {
RecyclerView recyclerView = mNewTabPageView.getRecyclerView();
NewTabPageAdapter adapter = (NewTabPageAdapter) recyclerView.getAdapter();
return recyclerView.findViewHolderForAdapterPosition(adapter.getFirstHeaderPosition())
.itemView;
}
}
......@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.ntp.cards;
import android.support.annotation.Nullable;
import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.native_page.ContextMenuManager;
import org.chromium.chrome.browser.signin.DisplayableProfileData;
......@@ -65,12 +66,14 @@ public class PersonalizedPromoViewHolder extends CardViewHolder {
* @param profileData The profile data which will be used to configure the personalized
* signin promo.
*/
@VisibleForTesting
public void bindAndConfigureViewForTests(@Nullable DisplayableProfileData profileData) {
super.onBindViewHolder();
PersonalizedSigninPromoView view = (PersonalizedSigninPromoView) itemView;
mSigninPromoController.setupPromoView(view.getContext(), view, profileData, null);
}
@VisibleForTesting
public void setSigninPromoControllerForTests(@Nullable SigninPromoController controller) {
mSigninPromoController = controller;
}
......
......@@ -168,12 +168,12 @@ public class SignInPromo extends OptionalLeaf {
}
@VisibleForTesting
SigninObserver getSigninObserverForTesting() {
public SigninObserver getSigninObserverForTesting() {
return mSigninObserver;
}
@VisibleForTesting
class SigninObserver implements SignInStateObserver, SignInAllowedObserver,
public class SigninObserver implements SignInStateObserver, SignInAllowedObserver,
ProfileDataCache.Observer, AccountsChangeObserver {
private final SigninManager mSigninManager;
......
......@@ -9,14 +9,24 @@ import android.os.Build;
import org.chromium.chrome.browser.ntp.IncognitoNewTabPage;
import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.suggestions.SiteSuggestion;
import org.chromium.chrome.browser.suggestions.TileSectionType;
import org.chromium.chrome.browser.suggestions.TileSource;
import org.chromium.chrome.browser.suggestions.TileTitleSource;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.content_public.browser.test.util.Criteria;
import org.chromium.content_public.browser.test.util.CriteriaHelper;
import org.chromium.net.test.EmbeddedTestServer;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Utilities for testing the NTP.
*/
public class NewTabPageTestUtils {
private static final String TEST_PAGE = "/chrome/test/data/android/navigate/simple.html";
/**
* Waits for the NTP owned by the passed in tab to be fully loaded.
......@@ -45,4 +55,32 @@ public class NewTabPageTestUtils {
});
}
public static List<SiteSuggestion> createFakeSiteSuggestions(EmbeddedTestServer testServer) {
List<SiteSuggestion> siteSuggestions = new ArrayList<>();
siteSuggestions.add(new SiteSuggestion("0 TOP_SITES", testServer.getURL(TEST_PAGE) + "#0",
"", TileTitleSource.TITLE_TAG, TileSource.TOP_SITES, TileSectionType.PERSONALIZED,
new Date()));
siteSuggestions.add(new SiteSuggestion("1 WHITELIST", testServer.getURL(TEST_PAGE) + "#1",
"/test.png", TileTitleSource.UNKNOWN, TileSource.WHITELIST,
TileSectionType.PERSONALIZED, new Date()));
siteSuggestions.add(new SiteSuggestion("2 TOP_SITES", testServer.getURL(TEST_PAGE) + "#2",
"", TileTitleSource.TITLE_TAG, TileSource.TOP_SITES, TileSectionType.PERSONALIZED,
new Date()));
siteSuggestions.add(new SiteSuggestion("3 TOP_SITES", testServer.getURL(TEST_PAGE) + "#3",
"", TileTitleSource.TITLE_TAG, TileSource.TOP_SITES, TileSectionType.PERSONALIZED,
new Date()));
siteSuggestions.add(new SiteSuggestion("4 TOP_SITES", testServer.getURL(TEST_PAGE) + "#4",
"", TileTitleSource.TITLE_TAG, TileSource.TOP_SITES, TileSectionType.PERSONALIZED,
new Date()));
siteSuggestions.add(new SiteSuggestion("5 TOP_SITES", testServer.getURL(TEST_PAGE) + "#5",
"", TileTitleSource.TITLE_TAG, TileSource.TOP_SITES, TileSectionType.PERSONALIZED,
new Date()));
siteSuggestions.add(new SiteSuggestion("6 TOP_SITES", testServer.getURL(TEST_PAGE) + "#6",
"", TileTitleSource.TITLE_TAG, TileSource.TOP_SITES, TileSectionType.PERSONALIZED,
new Date()));
siteSuggestions.add(new SiteSuggestion("7 TOP_SITES", testServer.getURL(TEST_PAGE) + "#7",
"", TileTitleSource.TITLE_TAG, TileSource.TOP_SITES, TileSectionType.PERSONALIZED,
new Date()));
return siteSuggestions;
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment