Commit 04aa794c authored by Theresa's avatar Theresa Committed by Commit Bot

Add entry for Chrome Modern to fieldtrial_testing_config.json

And fix up NTP tests.

BUG=803095

Change-Id: I0b757c79ba6f0fe1b8a06cd7d4eaa700297b30ed
Reviewed-on: https://chromium-review.googlesource.com/949090Reviewed-by: default avatarBernhard Bauer <bauerb@chromium.org>
Reviewed-by: default avatarJesse Doherty <jwd@chromium.org>
Commit-Queue: Theresa <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#541899}
parent ac34055c
...@@ -268,6 +268,14 @@ public class FeatureUtilities { ...@@ -268,6 +268,14 @@ public class FeatureUtilities {
return sIsSoleEnabled; return sIsSoleEnabled;
} }
/**
* Resets whether Chrome modern design is enabled for tests. After this is called, the next
* call to #isChromeModernDesignEnabled() will retrieve the value from shared preferences.
*/
public static void resetChromeModernDesignEnabledForTests() {
sIsChromeModernDesignEnabled = null;
}
/** /**
* @return Whether Chrome modern design is enabled. This returns true if Chrome Home is enabled. * @return Whether Chrome modern design is enabled. This returns true if Chrome Home is enabled.
*/ */
......
...@@ -19,6 +19,7 @@ import org.junit.Assert; ...@@ -19,6 +19,7 @@ import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.ActivityState; import org.chromium.base.ActivityState;
...@@ -44,6 +45,7 @@ import org.chromium.chrome.test.util.BookmarkTestUtil; ...@@ -44,6 +45,7 @@ import org.chromium.chrome.test.util.BookmarkTestUtil;
import org.chromium.chrome.test.util.ChromeTabUtils; import org.chromium.chrome.test.util.ChromeTabUtils;
import org.chromium.chrome.test.util.MenuUtils; import org.chromium.chrome.test.util.MenuUtils;
import org.chromium.chrome.test.util.RenderTestRule; import org.chromium.chrome.test.util.RenderTestRule;
import org.chromium.chrome.test.util.browser.ChromeModernDesign;
import org.chromium.components.bookmarks.BookmarkId; import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.components.bookmarks.BookmarkType; import org.chromium.components.bookmarks.BookmarkType;
import org.chromium.content.browser.test.util.TouchCommon; import org.chromium.content.browser.test.util.TouchCommon;
...@@ -69,6 +71,9 @@ public class BookmarkTest { ...@@ -69,6 +71,9 @@ public class BookmarkTest {
@Rule @Rule
public RenderTestRule mRenderTestRule = new RenderTestRule(); public RenderTestRule mRenderTestRule = new RenderTestRule();
@Rule
public TestRule mChromeModernDesignStateRule = new ChromeModernDesign.Processor();
private static final String TEST_PAGE_URL_GOOGLE = "/chrome/test/data/android/google.html"; private static final String TEST_PAGE_URL_GOOGLE = "/chrome/test/data/android/google.html";
private static final String TEST_PAGE_TITLE_GOOGLE = "The Google"; private static final String TEST_PAGE_TITLE_GOOGLE = "The Google";
private static final String TEST_PAGE_TITLE_GOOGLE2 = "Google"; private static final String TEST_PAGE_TITLE_GOOGLE2 = "Google";
...@@ -382,6 +387,7 @@ public class BookmarkTest { ...@@ -382,6 +387,7 @@ public class BookmarkTest {
@Test @Test
@MediumTest @MediumTest
@Feature({"RenderTest"}) @Feature({"RenderTest"})
@ChromeModernDesign.Enable
public void testBookmarkFolderIcon() throws Exception { public void testBookmarkFolderIcon() throws Exception {
BookmarkPromoHeader.forcePromoStateForTests(BookmarkPromoHeader.PromoState.PROMO_NONE); BookmarkPromoHeader.forcePromoStateForTests(BookmarkPromoHeader.PromoState.PROMO_NONE);
addFolder(TEST_FOLDER_TITLE); addFolder(TEST_FOLDER_TITLE);
......
...@@ -33,6 +33,7 @@ import org.junit.Assert; ...@@ -33,6 +33,7 @@ import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
...@@ -56,6 +57,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableItemView; ...@@ -56,6 +57,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableItemView;
import org.chromium.chrome.browser.widget.selection.SelectableItemViewHolder; import org.chromium.chrome.browser.widget.selection.SelectableItemViewHolder;
import org.chromium.chrome.browser.widget.selection.SelectionDelegate.SelectionObserver; import org.chromium.chrome.browser.widget.selection.SelectionDelegate.SelectionObserver;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.browser.ChromeModernDesign;
import org.chromium.chrome.test.util.browser.signin.SigninTestUtil; import org.chromium.chrome.test.util.browser.signin.SigninTestUtil;
import org.chromium.chrome.test.util.browser.sync.SyncTestUtil; import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
import org.chromium.components.signin.ChromeSigninController; import org.chromium.components.signin.ChromeSigninController;
...@@ -78,6 +80,9 @@ public class HistoryActivityTest { ...@@ -78,6 +80,9 @@ public class HistoryActivityTest {
public IntentsTestRule<HistoryActivity> mActivityTestRule = public IntentsTestRule<HistoryActivity> mActivityTestRule =
new IntentsTestRule<>(HistoryActivity.class, false, false); new IntentsTestRule<>(HistoryActivity.class, false, false);
@Rule
public TestRule mChromeModernDesignStateRule = new ChromeModernDesign.Processor();
private static class TestObserver extends RecyclerView.AdapterDataObserver private static class TestObserver extends RecyclerView.AdapterDataObserver
implements SelectionObserver<HistoryItem>, SignInStateObserver, PrefObserver { implements SelectionObserver<HistoryItem>, SignInStateObserver, PrefObserver {
public final CallbackHelper onChangedCallback = new CallbackHelper(); public final CallbackHelper onChangedCallback = new CallbackHelper();
...@@ -411,6 +416,7 @@ public class HistoryActivityTest { ...@@ -411,6 +416,7 @@ public class HistoryActivityTest {
@Test @Test
@SmallTest @SmallTest
@ChromeModernDesign.Enable
public void testSearchView() throws Exception { public void testSearchView() throws Exception {
final HistoryManagerToolbar toolbar = mHistoryManager.getToolbarForTests(); final HistoryManagerToolbar toolbar = mHistoryManager.getToolbarForTests();
View toolbarShadow = mHistoryManager.getSelectableListLayout().getToolbarShadowForTests(); View toolbarShadow = mHistoryManager.getSelectableListLayout().getToolbarShadowForTests();
...@@ -432,7 +438,7 @@ public class HistoryActivityTest { ...@@ -432,7 +438,7 @@ public class HistoryActivityTest {
// The selection should be cleared when a search is started. // The selection should be cleared when a search is started.
mTestObserver.onSelectionCallback.waitForCallback(callCount, 1); mTestObserver.onSelectionCallback.waitForCallback(callCount, 1);
Assert.assertFalse(mHistoryManager.getSelectionDelegateForTests().isSelectionEnabled()); Assert.assertFalse(mHistoryManager.getSelectionDelegateForTests().isSelectionEnabled());
Assert.assertEquals(View.VISIBLE, toolbarShadow.getVisibility()); Assert.assertEquals(View.GONE, toolbarShadow.getVisibility());
Assert.assertEquals(View.VISIBLE, toolbarSearchView.getVisibility()); Assert.assertEquals(View.VISIBLE, toolbarSearchView.getVisibility());
// Select an item and assert that the search view is no longer showing. // Select an item and assert that the search view is no longer showing.
...@@ -444,7 +450,7 @@ public class HistoryActivityTest { ...@@ -444,7 +450,7 @@ public class HistoryActivityTest {
// Clear the selection and assert that the search view is showing again. // Clear the selection and assert that the search view is showing again.
toggleItemSelection(2); toggleItemSelection(2);
Assert.assertFalse(mHistoryManager.getSelectionDelegateForTests().isSelectionEnabled()); Assert.assertFalse(mHistoryManager.getSelectionDelegateForTests().isSelectionEnabled());
Assert.assertEquals(View.VISIBLE, toolbarShadow.getVisibility()); Assert.assertEquals(View.GONE, toolbarShadow.getVisibility());
Assert.assertEquals(View.VISIBLE, toolbarSearchView.getVisibility()); Assert.assertEquals(View.VISIBLE, toolbarSearchView.getVisibility());
// Close the search view. // Close the search view.
......
...@@ -19,10 +19,15 @@ import org.junit.Assert; ...@@ -19,10 +19,15 @@ import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.MethodRule;
import org.junit.rules.TestRule; import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.test.params.MethodParamAnnotationRule;
import org.chromium.base.test.params.ParameterAnnotations;
import org.chromium.base.test.params.ParameterSet;
import org.chromium.base.test.params.ParameterizedRunner;
import org.chromium.base.test.util.CallbackHelper; import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisableIf; import org.chromium.base.test.util.DisableIf;
...@@ -45,12 +50,13 @@ import org.chromium.chrome.browser.tab.Tab; ...@@ -45,12 +50,13 @@ import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver; import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver;
import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.chrome.test.util.ChromeTabUtils; import org.chromium.chrome.test.util.ChromeTabUtils;
import org.chromium.chrome.test.util.NewTabPageTestUtils; import org.chromium.chrome.test.util.NewTabPageTestUtils;
import org.chromium.chrome.test.util.OmniboxTestUtils; import org.chromium.chrome.test.util.OmniboxTestUtils;
import org.chromium.chrome.test.util.RenderTestRule; import org.chromium.chrome.test.util.RenderTestRule;
import org.chromium.chrome.test.util.browser.ChromeModernDesign;
import org.chromium.chrome.test.util.browser.Features; import org.chromium.chrome.test.util.browser.Features;
import org.chromium.chrome.test.util.browser.Features.DisableFeatures; import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
import org.chromium.chrome.test.util.browser.RecyclerViewTestUtils; import org.chromium.chrome.test.util.browser.RecyclerViewTestUtils;
...@@ -69,6 +75,7 @@ import org.chromium.ui.base.PageTransition; ...@@ -69,6 +75,7 @@ import org.chromium.ui.base.PageTransition;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
...@@ -79,7 +86,8 @@ import java.util.concurrent.TimeoutException; ...@@ -79,7 +86,8 @@ import java.util.concurrent.TimeoutException;
/** /**
* Tests for the native android New Tab Page. * Tests for the native android New Tab Page.
*/ */
@RunWith(ChromeJUnit4ClassRunner.class) @RunWith(ParameterizedRunner.class)
@ParameterAnnotations.UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
@CommandLineFlags.Add(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE) @CommandLineFlags.Add(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE)
@DisableFeatures("NetworkPrediction") @DisableFeatures("NetworkPrediction")
@RetryOnFailure @RetryOnFailure
...@@ -93,9 +101,20 @@ public class NewTabPageTest { ...@@ -93,9 +101,20 @@ public class NewTabPageTest {
public RenderTestRule mRenderTestRule = public RenderTestRule mRenderTestRule =
new RenderTestRule("chrome/test/data/android/render_tests"); new RenderTestRule("chrome/test/data/android/render_tests");
@Rule
public MethodRule mMethodParamAnnotationProcessor = new MethodParamAnnotationRule();
@Rule
public ChromeModernDesign.Processor mChromeModernProcessor = new ChromeModernDesign.Processor();
@Rule @Rule
public TestRule mFeatureRule = new Features.InstrumentationProcessor(); public TestRule mFeatureRule = new Features.InstrumentationProcessor();
@ParameterAnnotations.MethodParameter("Modern")
private static List<ParameterSet> sMethodParamModern =
Arrays.asList(new ParameterSet().value(false).name("DisableChromeModern"),
new ParameterSet().value(true).name("EnableChromeModern"));
private static final String TEST_PAGE = "/chrome/test/data/android/navigate/simple.html"; private static final String TEST_PAGE = "/chrome/test/data/android/navigate/simple.html";
private Tab mTab; private Tab mTab;
...@@ -106,6 +125,18 @@ public class NewTabPageTest { ...@@ -106,6 +125,18 @@ public class NewTabPageTest {
private EmbeddedTestServer mTestServer; private EmbeddedTestServer mTestServer;
private List<SiteSuggestion> mSiteSuggestions; private List<SiteSuggestion> mSiteSuggestions;
@ParameterAnnotations.UseMethodParameterBefore("Modern")
public void setupModernDesign(boolean enabled) {
mChromeModernProcessor.setPrefs(enabled);
if (enabled) mRenderTestRule.setVariantPrefix("modern");
}
@ParameterAnnotations.UseMethodParameterAfter("Modern")
public void teardownModernDesign(boolean enabled) {
mChromeModernProcessor.clearTestState();
}
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
// Disable peeking card animation. // Disable peeking card animation.
...@@ -162,7 +193,8 @@ public class NewTabPageTest { ...@@ -162,7 +193,8 @@ public class NewTabPageTest {
@Test @Test
@MediumTest @MediumTest
@Feature({"NewTabPage", "RenderTest"}) @Feature({"NewTabPage", "RenderTest"})
public void testRender() throws IOException { @ParameterAnnotations.UseMethodParameter("Modern")
public void testRender(boolean modern) throws IOException {
InstrumentationRegistry.getInstrumentation().waitForIdleSync(); InstrumentationRegistry.getInstrumentation().waitForIdleSync();
RenderTestRule.sanitize(mNtp.getView()); RenderTestRule.sanitize(mNtp.getView());
mRenderTestRule.render(mTileGridLayout, "most_visited"); mRenderTestRule.render(mTileGridLayout, "most_visited");
......
...@@ -23,7 +23,7 @@ import org.chromium.chrome.browser.ntp.cards.AllDismissedItem.ViewHolder; ...@@ -23,7 +23,7 @@ import org.chromium.chrome.browser.ntp.cards.AllDismissedItem.ViewHolder;
import org.chromium.chrome.test.ChromeActivityTestRule; import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.RenderTestRule; import org.chromium.chrome.test.util.RenderTestRule;
import org.chromium.chrome.test.util.browser.ChromeHome; import org.chromium.chrome.test.util.browser.ChromeModernDesign;
import java.io.IOException; import java.io.IOException;
...@@ -42,7 +42,7 @@ public class AllDismissedItemTest { ...@@ -42,7 +42,7 @@ public class AllDismissedItemTest {
public RenderTestRule mRenderTestRule = new RenderTestRule(); public RenderTestRule mRenderTestRule = new RenderTestRule();
@Rule @Rule
public TestRule mChromeHomeStateRule = new ChromeHome.Processor(); public TestRule mChromeModernDesignStateRule = new ChromeModernDesign.Processor();
private FrameLayout mContentView; private FrameLayout mContentView;
...@@ -59,8 +59,8 @@ public class AllDismissedItemTest { ...@@ -59,8 +59,8 @@ public class AllDismissedItemTest {
@Test @Test
@MediumTest @MediumTest
@Feature({"Cards", "RenderTest"}) @Feature({"Cards", "RenderTest"})
@ChromeHome.Disable @ChromeModernDesign.Disable
public void testNewTabPageAppearance() throws IOException { public void testNewTabPageAppearance_Normal() throws IOException {
SectionList sectionList = null; // The SectionList is only used if the item is clicked on. SectionList sectionList = null; // The SectionList is only used if the item is clicked on.
ViewHolder viewHolder = new ViewHolder(mContentView, sectionList); ViewHolder viewHolder = new ViewHolder(mContentView, sectionList);
...@@ -69,12 +69,25 @@ public class AllDismissedItemTest { ...@@ -69,12 +69,25 @@ public class AllDismissedItemTest {
renderAtHour(viewHolder, 20, "evening"); renderAtHour(viewHolder, 20, "evening");
} }
@Test
@MediumTest
@Feature({"Cards", "RenderTest"})
@ChromeModernDesign.Enable
public void testNewTabPageAppearance_Modern() throws IOException {
SectionList sectionList = null; // The SectionList is only used if the item is clicked on.
ViewHolder viewHolder = new ViewHolder(mContentView, sectionList);
renderAtHour(viewHolder, 9, "modern-morning");
renderAtHour(viewHolder, 14, "modern-afternoon");
renderAtHour(viewHolder, 20, "modern-evening");
}
@Test @Test
//@MediumTest //@MediumTest
//@Feature({"Cards", "RenderTest"}) //@Feature({"Cards", "RenderTest"})
// crbug.com/780555 // https://crbug.com/780555, re-enable with https://crbug.com/816922
@DisabledTest @DisabledTest
@ChromeHome.Enable @ChromeModernDesign.Enable
public void testChromeHomeAppearance() throws IOException { public void testChromeHomeAppearance() throws IOException {
renderAtHour(new ViewHolder(mContentView, null), 0, "modern"); renderAtHour(new ViewHolder(mContentView, null), 0, "modern");
} }
......
...@@ -28,12 +28,16 @@ import org.junit.runner.RunWith; ...@@ -28,12 +28,16 @@ import org.junit.runner.RunWith;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.DiscardableReferencePool; import org.chromium.base.DiscardableReferencePool;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.test.params.ParameterAnnotations.ClassParameter;
import org.chromium.base.test.params.ParameterAnnotations.UseRunnerDelegate; import org.chromium.base.test.params.ParameterAnnotations.UseRunnerDelegate;
import org.chromium.base.test.params.ParameterSet;
import org.chromium.base.test.params.ParameterizedRunner;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.UrlUtils; import org.chromium.base.test.util.UrlUtils;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.favicon.IconType; import org.chromium.chrome.browser.favicon.IconType;
import org.chromium.chrome.browser.favicon.LargeIconBridge; import org.chromium.chrome.browser.favicon.LargeIconBridge;
...@@ -60,9 +64,10 @@ import org.chromium.chrome.browser.widget.displaystyle.HorizontalDisplayStyle; ...@@ -60,9 +64,10 @@ import org.chromium.chrome.browser.widget.displaystyle.HorizontalDisplayStyle;
import org.chromium.chrome.browser.widget.displaystyle.UiConfig; import org.chromium.chrome.browser.widget.displaystyle.UiConfig;
import org.chromium.chrome.browser.widget.displaystyle.VerticalDisplayStyle; import org.chromium.chrome.browser.widget.displaystyle.VerticalDisplayStyle;
import org.chromium.chrome.test.ChromeActivityTestRule; import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate; import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate;
import org.chromium.chrome.test.util.RenderTestRule; import org.chromium.chrome.test.util.RenderTestRule;
import org.chromium.chrome.test.util.browser.ChromeModernDesign;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.chrome.test.util.browser.compositor.layouts.DisableChromeAnimations; import org.chromium.chrome.test.util.browser.compositor.layouts.DisableChromeAnimations;
import org.chromium.chrome.test.util.browser.suggestions.DummySuggestionsEventReporter; import org.chromium.chrome.test.util.browser.suggestions.DummySuggestionsEventReporter;
import org.chromium.chrome.test.util.browser.suggestions.FakeSuggestionsSource; import org.chromium.chrome.test.util.browser.suggestions.FakeSuggestionsSource;
...@@ -71,16 +76,23 @@ import org.chromium.net.NetworkChangeNotifier; ...@@ -71,16 +76,23 @@ import org.chromium.net.NetworkChangeNotifier;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
/** /**
* Tests for the appearance of Article Snippets. * Tests for the appearance of Article Snippets.
*/ */
@RunWith(ChromeJUnit4ClassRunner.class) @RunWith(ParameterizedRunner.class)
@UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class) @UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class)
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
@ChromeModernDesign.Disable
public class ArticleSnippetsTest { public class ArticleSnippetsTest {
@ClassParameter
private static List<ParameterSet> sClassParams =
Arrays.asList(new ParameterSet().value(false).name("DisableNTPModernLayout"),
new ParameterSet().value(true).name("EnableNTPModernLayout"));
@Rule @Rule
public SuggestionsDependenciesRule mSuggestionsDeps = new SuggestionsDependenciesRule(); public SuggestionsDependenciesRule mSuggestionsDeps = new SuggestionsDependenciesRule();
...@@ -91,6 +103,12 @@ public class ArticleSnippetsTest { ...@@ -91,6 +103,12 @@ public class ArticleSnippetsTest {
@Rule @Rule
public RenderTestRule mRenderTestRule = new RenderTestRule(); public RenderTestRule mRenderTestRule = new RenderTestRule();
@Rule
public TestRule mChromeModernDesignStateRule = new ChromeModernDesign.Processor();
@Rule
public TestRule mFeaturesProcessor = new Features.InstrumentationProcessor();
@Rule @Rule
public TestRule mDisableChromeAnimations = new DisableChromeAnimations(); public TestRule mDisableChromeAnimations = new DisableChromeAnimations();
...@@ -111,8 +129,21 @@ public class ArticleSnippetsTest { ...@@ -111,8 +129,21 @@ public class ArticleSnippetsTest {
private long mTimestamp; private long mTimestamp;
private final boolean mEnableNTPModernLayout;
public ArticleSnippetsTest(boolean enableNTPModernLayout) {
mEnableNTPModernLayout = enableNTPModernLayout;
}
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
if (mEnableNTPModernLayout) {
Features.getInstance().enable(ChromeFeatureList.NTP_MODERN_LAYOUT);
mRenderTestRule.setVariantPrefix("modern");
} else {
Features.getInstance().disable(ChromeFeatureList.NTP_MODERN_LAYOUT);
}
mActivityTestRule.startMainActivityOnBlankPage(); mActivityTestRule.startMainActivityOnBlankPage();
mThumbnailProvider = new MockThumbnailProvider(); mThumbnailProvider = new MockThumbnailProvider();
mSnippetsSource = new FakeSuggestionsSource(); mSnippetsSource = new FakeSuggestionsSource();
......
...@@ -27,6 +27,7 @@ import android.widget.FrameLayout; ...@@ -27,6 +27,7 @@ import android.widget.FrameLayout;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.TestRule;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
...@@ -53,7 +54,7 @@ import org.chromium.chrome.test.ChromeJUnit4ClassRunner; ...@@ -53,7 +54,7 @@ import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.chrome.test.util.NewTabPageTestUtils; import org.chromium.chrome.test.util.NewTabPageTestUtils;
import org.chromium.chrome.test.util.RenderTestRule; import org.chromium.chrome.test.util.RenderTestRule;
import org.chromium.chrome.test.util.browser.ChromeHome; import org.chromium.chrome.test.util.browser.ChromeModernDesign;
import org.chromium.chrome.test.util.browser.Features.DisableFeatures; import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
import org.chromium.chrome.test.util.browser.RecyclerViewTestUtils; import org.chromium.chrome.test.util.browser.RecyclerViewTestUtils;
import org.chromium.chrome.test.util.browser.offlinepages.FakeOfflinePageBridge; import org.chromium.chrome.test.util.browser.offlinepages.FakeOfflinePageBridge;
...@@ -82,7 +83,7 @@ public class TileGridLayoutTest { ...@@ -82,7 +83,7 @@ public class TileGridLayoutTest {
public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
@Rule @Rule
public ChromeHome.Processor mChromeHomeStateRule = new ChromeHome.Processor(); public TestRule mChromeModernDesignStateRule = new ChromeModernDesign.Processor();
@Rule @Rule
public SuggestionsDependenciesRule mSuggestionsDeps = new SuggestionsDependenciesRule(); public SuggestionsDependenciesRule mSuggestionsDeps = new SuggestionsDependenciesRule();
...@@ -163,6 +164,7 @@ public class TileGridLayoutTest { ...@@ -163,6 +164,7 @@ public class TileGridLayoutTest {
@Test @Test
@MediumTest @MediumTest
@Feature({"NewTabPage", "RenderTest"}) @Feature({"NewTabPage", "RenderTest"})
@ChromeModernDesign.Disable
public void testTileGridAppearance() throws Exception { public void testTileGridAppearance() throws Exception {
NewTabPage ntp = NewTabPage ntp =
setUpFakeDataToShowOnNtp(/*homePagePosition=*/2, FAKE_MOST_VISITED_URLS.length); setUpFakeDataToShowOnNtp(/*homePagePosition=*/2, FAKE_MOST_VISITED_URLS.length);
...@@ -173,7 +175,7 @@ public class TileGridLayoutTest { ...@@ -173,7 +175,7 @@ public class TileGridLayoutTest {
//@MediumTest //@MediumTest
@DisabledTest(message = "crbug.com/771648") @DisabledTest(message = "crbug.com/771648")
@Feature({"NewTabPage", "RenderTest"}) @Feature({"NewTabPage", "RenderTest"})
@ChromeHome.Enable @ChromeModernDesign.Enable
public void testModernTileGridAppearance_Full() throws IOException, InterruptedException { public void testModernTileGridAppearance_Full() throws IOException, InterruptedException {
View tileGridLayout = renderTiles(makeSuggestions(FAKE_MOST_VISITED_URLS.length)); View tileGridLayout = renderTiles(makeSuggestions(FAKE_MOST_VISITED_URLS.length));
...@@ -195,7 +197,7 @@ public class TileGridLayoutTest { ...@@ -195,7 +197,7 @@ public class TileGridLayoutTest {
//@MediumTest //@MediumTest
@DisabledTest(message = "crbug.com/771648") @DisabledTest(message = "crbug.com/771648")
@Feature({"NewTabPage", "RenderTest"}) @Feature({"NewTabPage", "RenderTest"})
@ChromeHome.Disable @ChromeModernDesign.Disable
public void testTileGridAppearance_Full() throws IOException, InterruptedException { public void testTileGridAppearance_Full() throws IOException, InterruptedException {
View tileGridLayout = renderTiles(makeSuggestions(FAKE_MOST_VISITED_URLS.length)); View tileGridLayout = renderTiles(makeSuggestions(FAKE_MOST_VISITED_URLS.length));
...@@ -218,7 +220,7 @@ public class TileGridLayoutTest { ...@@ -218,7 +220,7 @@ public class TileGridLayoutTest {
@DisabledTest(message = "crbug.com/771648") @DisabledTest(message = "crbug.com/771648")
@RetryOnFailure @RetryOnFailure
@Feature({"NewTabPage", "RenderTest"}) @Feature({"NewTabPage", "RenderTest"})
@ChromeHome.Enable @ChromeModernDesign.Enable
public void testModernTileGridAppearance_Two() throws IOException, InterruptedException { public void testModernTileGridAppearance_Two() throws IOException, InterruptedException {
View tileGridLayout = renderTiles(makeSuggestions(2)); View tileGridLayout = renderTiles(makeSuggestions(2));
...@@ -234,7 +236,7 @@ public class TileGridLayoutTest { ...@@ -234,7 +236,7 @@ public class TileGridLayoutTest {
@DisabledTest(message = "crbug.com/771648") @DisabledTest(message = "crbug.com/771648")
@RetryOnFailure @RetryOnFailure
@Feature({"NewTabPage", "RenderTest"}) @Feature({"NewTabPage", "RenderTest"})
@ChromeHome.Disable @ChromeModernDesign.Disable
public void testTileGridAppearance_Two() throws IOException, InterruptedException { public void testTileGridAppearance_Two() throws IOException, InterruptedException {
View tileGridLayout = renderTiles(makeSuggestions(2)); View tileGridLayout = renderTiles(makeSuggestions(2));
...@@ -245,11 +247,10 @@ public class TileGridLayoutTest { ...@@ -245,11 +247,10 @@ public class TileGridLayoutTest {
mRenderTestRule.render(tileGridLayout, "two_tiles_grid_landscape"); mRenderTestRule.render(tileGridLayout, "two_tiles_grid_landscape");
} }
@DisabledTest(message = "https://crbug.com/805160")
@Test @Test
@MediumTest @MediumTest
@Feature({"NewTabPage", "RenderTest"}) @Feature({"NewTabPage", "RenderTest"})
@ChromeHome.Enable @ChromeModernDesign.Enable
public void testTileAppearanceModern() public void testTileAppearanceModern()
throws IOException, InterruptedException, TimeoutException { throws IOException, InterruptedException, TimeoutException {
List<SiteSuggestion> suggestions = makeSuggestions(2); List<SiteSuggestion> suggestions = makeSuggestions(2);
...@@ -265,7 +266,7 @@ public class TileGridLayoutTest { ...@@ -265,7 +266,7 @@ public class TileGridLayoutTest {
@Test @Test
@MediumTest @MediumTest
@Feature({"NewTabPage", "RenderTest"}) @Feature({"NewTabPage", "RenderTest"})
@ChromeHome.Disable @ChromeModernDesign.Disable
public void testTileAppearanceClassic() public void testTileAppearanceClassic()
throws IOException, InterruptedException, TimeoutException { throws IOException, InterruptedException, TimeoutException {
List<SiteSuggestion> suggestions = makeSuggestions(2); List<SiteSuggestion> suggestions = makeSuggestions(2);
......
...@@ -27,6 +27,7 @@ android_library("chrome_java_test_support") { ...@@ -27,6 +27,7 @@ android_library("chrome_java_test_support") {
"javatests/src/org/chromium/chrome/test/util/browser/compositor/layouts/DisableChromeAnimations.java", "javatests/src/org/chromium/chrome/test/util/browser/compositor/layouts/DisableChromeAnimations.java",
"javatests/src/org/chromium/chrome/test/util/browser/contextmenu/ContextMenuUtils.java", "javatests/src/org/chromium/chrome/test/util/browser/contextmenu/ContextMenuUtils.java",
"javatests/src/org/chromium/chrome/test/util/browser/ChromeHome.java", "javatests/src/org/chromium/chrome/test/util/browser/ChromeHome.java",
"javatests/src/org/chromium/chrome/test/util/browser/ChromeModernDesign.java",
"javatests/src/org/chromium/chrome/test/util/browser/Features.java", "javatests/src/org/chromium/chrome/test/util/browser/Features.java",
"javatests/src/org/chromium/chrome/test/util/browser/LocationSettingsTestUtil.java", "javatests/src/org/chromium/chrome/test/util/browser/LocationSettingsTestUtil.java",
"javatests/src/org/chromium/chrome/test/util/browser/notifications/MockNotificationManagerProxy.java", "javatests/src/org/chromium/chrome/test/util/browser/notifications/MockNotificationManagerProxy.java",
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.test.util.browser;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
import org.chromium.base.StrictModeContext;
import org.chromium.base.test.util.AnnotationRule;
import org.chromium.base.test.util.Restriction;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
import org.chromium.chrome.browser.util.FeatureUtilities;
import org.chromium.ui.test.util.UiRestriction;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Utility annotation and rule to enable or disable ChromeModernDesign. Handles setting and
* resetting the feature flag and the preference.
*
* @see ChromeModernDesign.Processor
* @see FeatureUtilities#isChromeModernDesignEnabled()
*/
public interface ChromeModernDesign {
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
@Restriction(UiRestriction.RESTRICTION_TYPE_PHONE)
@Features.EnableFeatures(ChromeFeatureList.CHROME_MODERN_DESIGN)
@interface Enable {}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
@Features.DisableFeatures(ChromeFeatureList.CHROME_MODERN_DESIGN)
@interface Disable {}
/**
* Rule to handle setting and resetting the cached feature state for ChromeModernDesign. Can be
* used by explicitly calling methods ({@link #setPrefs(boolean)} and {@link #clearTestState()})
* or by using the {@link ChromeModernDesign.Enable} and {@link ChromeModernDesign.Disable}
* annotations on tests.
*/
class Processor extends AnnotationRule {
private Boolean mOldState;
public Processor() {
super(ChromeModernDesign.Enable.class, ChromeModernDesign.Disable.class);
}
@Override
public Statement apply(Statement base, Description description) {
Statement wrappedStatement = super.apply(base, description);
return getAnnotations().isEmpty() ? base : wrappedStatement;
}
@Override
protected void before() throws Throwable {
boolean featureEnabled = getClosestAnnotation() instanceof ChromeModernDesign.Enable;
setPrefs(featureEnabled);
}
@Override
protected void after() {
clearTestState();
}
public void setPrefs(boolean enabled) {
// Chrome relies on a shared preference to determine if the ChromeModernDesign feature
// is enabled during start up, so we need to manually set the preference to enable
// ChromeModernDesign before starting Chrome.
ChromePreferenceManager prefsManager = ChromePreferenceManager.getInstance();
try (StrictModeContext unused = StrictModeContext.allowDiskReads()) {
mOldState = prefsManager.isChromeModernDesignEnabled();
}
FeatureUtilities.resetChromeModernDesignEnabledForTests();
// The native library should not be enabled yet, so we set the preference here and
// cache it by checking for the feature. Ideally we instead would call
// FeatureUtilities.cacheChromeModernDesignEnabled()
prefsManager.setChromeModernDesignEnabled(enabled);
assertEquals(enabled, FeatureUtilities.isChromeModernDesignEnabled());
}
public void clearTestState() {
assertNotNull(mOldState);
ChromePreferenceManager.getInstance().setChromeModernDesignEnabled(mOldState);
}
}
}
...@@ -872,6 +872,21 @@ ...@@ -872,6 +872,21 @@
] ]
} }
], ],
"ChromeModernDesign": [
{
"platforms": [
"android"
],
"experiments": [
{
"name": "Modern",
"enable_features": [
"ChromeModernDesign"
]
}
]
}
],
"ChromeSmartSelection": [ "ChromeSmartSelection": [
{ {
"platforms": [ "platforms": [
......
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