Commit 57dc2621 authored by Ted Choc's avatar Ted Choc Committed by Chromium LUCI CQ

Convert ConditionalTabStripTest to batched.

Makes BlankCTATabInitialStateRule more robust:
  * Handles the activity being restarted as part of the test.
  * Handles the case where all tabs are closed.

Performance metrics: 117777 -> 77156

BUG=989569

Change-Id: Ib1281d1160a76595c6ef5ead3cde2a7fcd370293
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2596034
Commit-Queue: Ted Choc <tedchoc@chromium.org>
Reviewed-by: default avatarYue Zhang <yuezhanggg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#838233}
parent cef23ac3
...@@ -45,12 +45,15 @@ import androidx.test.espresso.contrib.RecyclerViewActions; ...@@ -45,12 +45,15 @@ import androidx.test.espresso.contrib.RecyclerViewActions;
import androidx.test.filters.MediumTest; import androidx.test.filters.MediumTest;
import org.hamcrest.Matchers; import org.hamcrest.Matchers;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.test.util.Batch;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Criteria; import org.chromium.base.test.util.Criteria;
import org.chromium.base.test.util.CriteriaHelper; import org.chromium.base.test.util.CriteriaHelper;
...@@ -81,6 +84,7 @@ import org.chromium.chrome.browser.util.ChromeAccessibilityUtil; ...@@ -81,6 +84,7 @@ import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
import org.chromium.chrome.tab_ui.R; import org.chromium.chrome.tab_ui.R;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
import org.chromium.chrome.test.batch.BlankCTATabInitialStateRule;
import org.chromium.chrome.test.util.ChromeTabUtils; import org.chromium.chrome.test.util.ChromeTabUtils;
import org.chromium.chrome.test.util.OverviewModeBehaviorWatcher; import org.chromium.chrome.test.util.OverviewModeBehaviorWatcher;
import org.chromium.chrome.test.util.browser.Features; import org.chromium.chrome.test.util.browser.Features;
...@@ -94,15 +98,22 @@ import java.util.concurrent.ExecutionException; ...@@ -94,15 +98,22 @@ import java.util.concurrent.ExecutionException;
/** End-to-end tests for conditional tab strip component. */ /** End-to-end tests for conditional tab strip component. */
@RunWith(ChromeJUnit4ClassRunner.class) @RunWith(ChromeJUnit4ClassRunner.class)
// clang-format off // clang-format off
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
ChromeSwitches.DISABLE_STARTUP_PROMOS})
@Restriction(UiRestriction.RESTRICTION_TYPE_PHONE) @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE)
@Features.EnableFeatures({CONDITIONAL_TAB_STRIP_ANDROID}) @Features.EnableFeatures({CONDITIONAL_TAB_STRIP_ANDROID})
@Features.DisableFeatures({TAB_GRID_LAYOUT_ANDROID, TAB_GROUPS_ANDROID, START_SURFACE_ANDROID}) @Features.DisableFeatures({TAB_GRID_LAYOUT_ANDROID, TAB_GROUPS_ANDROID, START_SURFACE_ANDROID})
@Batch(Batch.PER_CLASS)
public class ConditionalTabStripTest { public class ConditionalTabStripTest {
// clang-format on // clang-format on
private static final int TEST_SESSION_MS = 600000; private static final int TEST_SESSION_MS = 600000;
private static final int SWIPE_TO_RIGHT_DIRECTION = 1; private static final int SWIPE_TO_RIGHT_DIRECTION = 1;
private static final int SWIPE_TO_LEFT_DIRECTION = -1; private static final int SWIPE_TO_LEFT_DIRECTION = -1;
@ClassRule
public static final ChromeTabbedActivityTestRule sActivityTestRule =
new ChromeTabbedActivityTestRule();
private SimulateTabSwipeOnMainThread mSwipeToNormal; private SimulateTabSwipeOnMainThread mSwipeToNormal;
private SimulateTabSwipeOnMainThread mSwipeToIncognito; private SimulateTabSwipeOnMainThread mSwipeToIncognito;
private float mPxToDp = 1f; private float mPxToDp = 1f;
...@@ -110,7 +121,8 @@ public class ConditionalTabStripTest { ...@@ -110,7 +121,8 @@ public class ConditionalTabStripTest {
private float mTabsViewWidthDp; private float mTabsViewWidthDp;
@Rule @Rule
public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); public final BlankCTATabInitialStateRule mInitialStateRule =
new BlankCTATabInitialStateRule(sActivityTestRule, false);
@Before @Before
public void setUp() { public void setUp() {
...@@ -120,9 +132,9 @@ public class ConditionalTabStripTest { ...@@ -120,9 +132,9 @@ public class ConditionalTabStripTest {
CONDITIONAL_TAB_STRIP_SESSION_TIME_MS.setForTesting(0); CONDITIONAL_TAB_STRIP_SESSION_TIME_MS.setForTesting(0);
ConditionalTabStripUtils.setOptOutIndicator(false); ConditionalTabStripUtils.setOptOutIndicator(false);
ConditionalTabStripUtils.setContinuousDismissCount(0); ConditionalTabStripUtils.setContinuousDismissCount(0);
ConditionalTabStripUtils.setFeatureStatus(ConditionalTabStripUtils.FeatureStatus.DEFAULT);
mActivityTestRule.startMainActivityOnBlankPage(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
ChromeTabbedActivity cta = mActivityTestRule.getActivity();
CriteriaHelper.pollUiThread(cta.getTabModelSelector()::isTabStateInitialized); CriteriaHelper.pollUiThread(cta.getTabModelSelector()::isTabStateInitialized);
float dpToPx = InstrumentationRegistry.getInstrumentation() float dpToPx = InstrumentationRegistry.getInstrumentation()
...@@ -131,7 +143,7 @@ public class ConditionalTabStripTest { ...@@ -131,7 +143,7 @@ public class ConditionalTabStripTest {
.getDisplayMetrics() .getDisplayMetrics()
.density; .density;
mPxToDp = 1.0f / dpToPx; mPxToDp = 1.0f / dpToPx;
View tabsView = mActivityTestRule.getActivity().getTabsView(); View tabsView = cta.getTabsView();
mTabsViewHeightDp = tabsView.getHeight() * mPxToDp; mTabsViewHeightDp = tabsView.getHeight() * mPxToDp;
mTabsViewWidthDp = tabsView.getWidth() * mPxToDp; mTabsViewWidthDp = tabsView.getWidth() * mPxToDp;
mSwipeToIncognito = mSwipeToIncognito =
...@@ -141,6 +153,14 @@ public class ConditionalTabStripTest { ...@@ -141,6 +153,14 @@ public class ConditionalTabStripTest {
mTabsViewHeightDp / 2, SWIPE_TO_RIGHT_DIRECTION * mTabsViewWidthDp, 0); mTabsViewHeightDp / 2, SWIPE_TO_RIGHT_DIRECTION * mTabsViewWidthDp, 0);
} }
@After
public void tearDown() {
TestThreadUtils.runOnUiThreadBlocking(() -> {
sActivityTestRule.getActivity().getTabModelSelector().getModel(true).closeAllTabs();
ChromeAccessibilityUtil.get().setAccessibilityEnabledForTesting(null);
});
}
private void enterTabSwitcher(ChromeTabbedActivity cta) { private void enterTabSwitcher(ChromeTabbedActivity cta) {
OverviewModeBehaviorWatcher showWatcher = TabUiTestHelper.createOverviewShowWatcher(cta); OverviewModeBehaviorWatcher showWatcher = TabUiTestHelper.createOverviewShowWatcher(cta);
TestThreadUtils.runOnUiThreadBlocking( TestThreadUtils.runOnUiThreadBlocking(
...@@ -152,7 +172,7 @@ public class ConditionalTabStripTest { ...@@ -152,7 +172,7 @@ public class ConditionalTabStripTest {
@MediumTest @MediumTest
@DisableIf.Build(sdk_is_less_than = M, message = "crbug.com/1081832") @DisableIf.Build(sdk_is_less_than = M, message = "crbug.com/1081832")
public void testStrip_updateWithAddition() throws Exception { public void testStrip_updateWithAddition() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
verifyHidingStrip(); verifyHidingStrip();
// Unintentional tab creation will not trigger tab strip. // Unintentional tab creation will not trigger tab strip.
...@@ -199,7 +219,7 @@ public class ConditionalTabStripTest { ...@@ -199,7 +219,7 @@ public class ConditionalTabStripTest {
@Test @Test
@MediumTest @MediumTest
public void testStrip_updateWithClosure() throws Exception { public void testStrip_updateWithClosure() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
verifyHidingStrip(); verifyHidingStrip();
createTabs(cta, false, 3); createTabs(cta, false, 3);
...@@ -222,7 +242,7 @@ public class ConditionalTabStripTest { ...@@ -222,7 +242,7 @@ public class ConditionalTabStripTest {
@Test @Test
@MediumTest @MediumTest
public void testStrip_updateWithSelection() throws Exception { public void testStrip_updateWithSelection() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
verifyHidingStrip(); verifyHidingStrip();
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
...@@ -249,7 +269,7 @@ public class ConditionalTabStripTest { ...@@ -249,7 +269,7 @@ public class ConditionalTabStripTest {
@Test @Test
@MediumTest @MediumTest
public void testStrip_updateWithTabModelSwitch() throws Exception { public void testStrip_updateWithTabModelSwitch() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
verifyHidingStrip(); verifyHidingStrip();
createTabs(cta, false, 3); createTabs(cta, false, 3);
...@@ -279,7 +299,7 @@ public class ConditionalTabStripTest { ...@@ -279,7 +299,7 @@ public class ConditionalTabStripTest {
@Test @Test
@MediumTest @MediumTest
public void testStrip_createTabWithStrip() throws Exception { public void testStrip_createTabWithStrip() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
verifyHidingStrip(); verifyHidingStrip();
// Test creating normal tabs by clicking the plus button in tab strip. // Test creating normal tabs by clicking the plus button in tab strip.
...@@ -311,7 +331,7 @@ public class ConditionalTabStripTest { ...@@ -311,7 +331,7 @@ public class ConditionalTabStripTest {
@Test @Test
@MediumTest @MediumTest
public void testStrip_switchTabWithStrip() throws Exception { public void testStrip_switchTabWithStrip() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
verifyHidingStrip(); verifyHidingStrip();
createTabs(cta, false, 4); createTabs(cta, false, 4);
...@@ -328,7 +348,7 @@ public class ConditionalTabStripTest { ...@@ -328,7 +348,7 @@ public class ConditionalTabStripTest {
@Test @Test
@MediumTest @MediumTest
public void testStrip_closeTabWithStrip() throws Exception { public void testStrip_closeTabWithStrip() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
verifyHidingStrip(); verifyHidingStrip();
createTabs(cta, false, 2); createTabs(cta, false, 2);
...@@ -369,7 +389,7 @@ public class ConditionalTabStripTest { ...@@ -369,7 +389,7 @@ public class ConditionalTabStripTest {
@Test @Test
@MediumTest @MediumTest
public void testStrip_dismiss() throws Exception { public void testStrip_dismiss() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
verifyHidingStrip(); verifyHidingStrip();
triggerStripAndDismiss(cta); triggerStripAndDismiss(cta);
...@@ -387,7 +407,7 @@ public class ConditionalTabStripTest { ...@@ -387,7 +407,7 @@ public class ConditionalTabStripTest {
@Test @Test
@MediumTest @MediumTest
public void testStrip_disabled_expired() throws Exception { public void testStrip_disabled_expired() throws Exception {
triggerStripAndDismiss(mActivityTestRule.getActivity()); triggerStripAndDismiss(sActivityTestRule.getActivity());
ChromeTabbedActivity cta = restartChrome(); ChromeTabbedActivity cta = restartChrome();
verifyHidingStrip(); verifyHidingStrip();
...@@ -399,7 +419,7 @@ public class ConditionalTabStripTest { ...@@ -399,7 +419,7 @@ public class ConditionalTabStripTest {
@Test @Test
@MediumTest @MediumTest
public void testStrip_disabled_notExpired() throws Exception { public void testStrip_disabled_notExpired() throws Exception {
triggerStripAndDismiss(mActivityTestRule.getActivity()); triggerStripAndDismiss(sActivityTestRule.getActivity());
// Update the session time so that the disabled state is not expired for next restart. // Update the session time so that the disabled state is not expired for next restart.
CONDITIONAL_TAB_STRIP_SESSION_TIME_MS.setForTesting(TEST_SESSION_MS); CONDITIONAL_TAB_STRIP_SESSION_TIME_MS.setForTesting(TEST_SESSION_MS);
...@@ -413,7 +433,7 @@ public class ConditionalTabStripTest { ...@@ -413,7 +433,7 @@ public class ConditionalTabStripTest {
@Test @Test
@MediumTest @MediumTest
public void testStrip_enabled_expired() throws Exception { public void testStrip_enabled_expired() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
createBlankPageWithLaunchType(cta, false, TabLaunchType.FROM_CHROME_UI); createBlankPageWithLaunchType(cta, false, TabLaunchType.FROM_CHROME_UI);
} }
...@@ -426,7 +446,7 @@ public class ConditionalTabStripTest { ...@@ -426,7 +446,7 @@ public class ConditionalTabStripTest {
@Test @Test
@MediumTest @MediumTest
public void testStrip_enabled_notExpired() throws Exception { public void testStrip_enabled_notExpired() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
createBlankPageWithLaunchType(cta, false, TabLaunchType.FROM_CHROME_UI); createBlankPageWithLaunchType(cta, false, TabLaunchType.FROM_CHROME_UI);
} }
...@@ -442,7 +462,7 @@ public class ConditionalTabStripTest { ...@@ -442,7 +462,7 @@ public class ConditionalTabStripTest {
@MediumTest @MediumTest
@DisabledTest(message = "crbug.com/1081697") @DisabledTest(message = "crbug.com/1081697")
public void testStrip_UndoDismiss() throws Exception { public void testStrip_UndoDismiss() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
createBlankPageWithLaunchType(cta, false, TabLaunchType.FROM_CHROME_UI); createBlankPageWithLaunchType(cta, false, TabLaunchType.FROM_CHROME_UI);
} }
...@@ -464,7 +484,7 @@ public class ConditionalTabStripTest { ...@@ -464,7 +484,7 @@ public class ConditionalTabStripTest {
@MediumTest @MediumTest
@DisableIf.Build(supported_abis_includes = "x86", message = "https://crbug.com/1094998") @DisableIf.Build(supported_abis_includes = "x86", message = "https://crbug.com/1094998")
public void testStrip_InfoBarOptOut() throws Exception { public void testStrip_InfoBarOptOut() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
createBlankPageWithLaunchType(cta, false, TabLaunchType.FROM_CHROME_UI); createBlankPageWithLaunchType(cta, false, TabLaunchType.FROM_CHROME_UI);
} }
...@@ -476,7 +496,7 @@ public class ConditionalTabStripTest { ...@@ -476,7 +496,7 @@ public class ConditionalTabStripTest {
assertTrue(ConditionalTabStripUtils.shouldShowSnackbarForDismissal()); assertTrue(ConditionalTabStripUtils.shouldShowSnackbarForDismissal());
clickDismissButtonInStrip(); clickDismissButtonInStrip();
CriteriaHelper.pollUiThread( CriteriaHelper.pollUiThread(
() -> mActivityTestRule.getActivity().getSnackbarManager().isShowing()); () -> sActivityTestRule.getActivity().getSnackbarManager().isShowing());
// Update the dismiss counter so that the next dismissal should be the third continuous // Update the dismiss counter so that the next dismissal should be the third continuous
// dismissal, and we should show opt-out info bar. // dismissal, and we should show opt-out info bar.
...@@ -512,7 +532,7 @@ public class ConditionalTabStripTest { ...@@ -512,7 +532,7 @@ public class ConditionalTabStripTest {
@MediumTest @MediumTest
@DisableIf.Build(supported_abis_includes = "x86", message = "https://crbug.com/1094998") @DisableIf.Build(supported_abis_includes = "x86", message = "https://crbug.com/1094998")
public void testStrip_InfoBarOptIn() throws Exception { public void testStrip_InfoBarOptIn() throws Exception {
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
createBlankPageWithLaunchType(cta, false, TabLaunchType.FROM_CHROME_UI); createBlankPageWithLaunchType(cta, false, TabLaunchType.FROM_CHROME_UI);
} }
...@@ -524,7 +544,7 @@ public class ConditionalTabStripTest { ...@@ -524,7 +544,7 @@ public class ConditionalTabStripTest {
assertTrue(ConditionalTabStripUtils.shouldShowSnackbarForDismissal()); assertTrue(ConditionalTabStripUtils.shouldShowSnackbarForDismissal());
clickDismissButtonInStrip(); clickDismissButtonInStrip();
CriteriaHelper.pollUiThread( CriteriaHelper.pollUiThread(
() -> mActivityTestRule.getActivity().getSnackbarManager().isShowing()); () -> sActivityTestRule.getActivity().getSnackbarManager().isShowing());
// Update the dismiss counter so that the next dismissal should be the third continuous // Update the dismiss counter so that the next dismissal should be the third continuous
// dismissal, and we should show opt-out info bar. // dismissal, and we should show opt-out info bar.
...@@ -550,7 +570,7 @@ public class ConditionalTabStripTest { ...@@ -550,7 +570,7 @@ public class ConditionalTabStripTest {
verifyShowingStrip(cta, false, 6); verifyShowingStrip(cta, false, 6);
clickDismissButtonInStrip(); clickDismissButtonInStrip();
CriteriaHelper.pollUiThread( CriteriaHelper.pollUiThread(
() -> mActivityTestRule.getActivity().getSnackbarManager().isShowing()); () -> sActivityTestRule.getActivity().getSnackbarManager().isShowing());
} }
@Test @Test
...@@ -580,7 +600,7 @@ public class ConditionalTabStripTest { ...@@ -580,7 +600,7 @@ public class ConditionalTabStripTest {
verifyShowingStrip(cta, false, 3); verifyShowingStrip(cta, false, 3);
clickDismissButtonInStrip(); clickDismissButtonInStrip();
CriteriaHelper.pollUiThread( CriteriaHelper.pollUiThread(
() -> mActivityTestRule.getActivity().getSnackbarManager().isShowing()); () -> sActivityTestRule.getActivity().getSnackbarManager().isShowing());
// Update the dismiss counter so that the next dismissal should be the sixth continuous // Update the dismiss counter so that the next dismissal should be the sixth continuous
// dismissal, and we should show opt-out info bar. // dismissal, and we should show opt-out info bar.
...@@ -596,7 +616,7 @@ public class ConditionalTabStripTest { ...@@ -596,7 +616,7 @@ public class ConditionalTabStripTest {
onView(withId(R.id.infobar_close_button)).perform(click()); onView(withId(R.id.infobar_close_button)).perform(click());
CriteriaHelper.pollUiThread(() -> { CriteriaHelper.pollUiThread(() -> {
InfoBarContainer container = InfoBarContainer.get( InfoBarContainer container = InfoBarContainer.get(
mActivityTestRule.getActivity().getTabModelSelector().getCurrentTab()); sActivityTestRule.getActivity().getTabModelSelector().getCurrentTab());
return container.getInfoBarsForTesting().size() == 0; return container.getInfoBarsForTesting().size() == 0;
}); });
...@@ -611,8 +631,8 @@ public class ConditionalTabStripTest { ...@@ -611,8 +631,8 @@ public class ConditionalTabStripTest {
public void testUndoClosure_AccessibilityMode() throws Exception { public void testUndoClosure_AccessibilityMode() throws Exception {
TestThreadUtils.runOnUiThreadBlocking( TestThreadUtils.runOnUiThreadBlocking(
() -> ChromeAccessibilityUtil.get().setAccessibilityEnabledForTesting(true)); () -> ChromeAccessibilityUtil.get().setAccessibilityEnabledForTesting(true));
ChromeTabbedActivity cta = mActivityTestRule.getActivity(); ChromeTabbedActivity cta = sActivityTestRule.getActivity();
SnackbarManager snackbarManager = mActivityTestRule.getActivity().getSnackbarManager(); SnackbarManager snackbarManager = sActivityTestRule.getActivity().getSnackbarManager();
createTabs(cta, false, 3); createTabs(cta, false, 3);
verifyShowingStrip(cta, false, 3); verifyShowingStrip(cta, false, 3);
verifyStripSelectedPosition(cta, 2); verifyStripSelectedPosition(cta, 2);
...@@ -660,15 +680,16 @@ public class ConditionalTabStripTest { ...@@ -660,15 +680,16 @@ public class ConditionalTabStripTest {
} }
private ChromeTabbedActivity restartChrome() throws Exception { private ChromeTabbedActivity restartChrome() throws Exception {
TabUiTestHelper.finishActivity(mActivityTestRule.getActivity()); TabUiTestHelper.finishActivity(sActivityTestRule.getActivity());
mActivityTestRule.startMainActivityFromLauncher(); sActivityTestRule.startMainActivityFromLauncher();
// Wait for bottom controls to stabilize. // Wait for bottom controls to stabilize.
CriteriaHelper.pollUiThread(() CriteriaHelper.pollUiThread(() -> {
-> mActivityTestRule.getActivity() Criteria.checkThat(sActivityTestRule.getActivity()
.getBrowserControlsManager() .getBrowserControlsManager()
.getBottomControlOffset() .getBottomControlOffset(),
== 0); Matchers.is(0));
return mActivityTestRule.getActivity(); });
return sActivityTestRule.getActivity();
} }
private void createBlankPageWithLaunchType(ChromeTabbedActivity cta, boolean isIncognito, private void createBlankPageWithLaunchType(ChromeTabbedActivity cta, boolean isIncognito,
...@@ -839,16 +860,16 @@ public class ConditionalTabStripTest { ...@@ -839,16 +860,16 @@ public class ConditionalTabStripTest {
} }
private LayoutManagerChrome updateTabsViewSize() { private LayoutManagerChrome updateTabsViewSize() {
View tabsView = mActivityTestRule.getActivity().getTabsView(); View tabsView = sActivityTestRule.getActivity().getTabsView();
mTabsViewHeightDp = tabsView.getHeight() * mPxToDp; mTabsViewHeightDp = tabsView.getHeight() * mPxToDp;
mTabsViewWidthDp = tabsView.getWidth() * mPxToDp; mTabsViewWidthDp = tabsView.getWidth() * mPxToDp;
return mActivityTestRule.getActivity().getLayoutManager(); return sActivityTestRule.getActivity().getLayoutManager();
} }
// Utility methods from OverviewListLayoutTest.java. // Utility methods from OverviewListLayoutTest.java.
private ListView getAccessibilityOverviewList() { private ListView getAccessibilityOverviewList() {
AccessibilityTabModelWrapper container = AccessibilityTabModelWrapper container =
((OverviewListLayout) mActivityTestRule.getActivity().getOverviewListLayout()) ((OverviewListLayout) sActivityTestRule.getActivity().getOverviewListLayout())
.getContainer(); .getContainer();
return (ListView) container.findViewById(R.id.list_view); return (ListView) container.findViewById(R.id.list_view);
} }
......
...@@ -11,6 +11,7 @@ import androidx.annotation.VisibleForTesting; ...@@ -11,6 +11,7 @@ import androidx.annotation.VisibleForTesting;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.CommandLine;
import org.chromium.base.TraceEvent; import org.chromium.base.TraceEvent;
import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.base.supplier.ObservableSupplierImpl;
...@@ -33,6 +34,7 @@ import org.chromium.chrome.browser.datareduction.DataReductionPromoScreen; ...@@ -33,6 +34,7 @@ import org.chromium.chrome.browser.datareduction.DataReductionPromoScreen;
import org.chromium.chrome.browser.feature_engagement.TrackerFactory; import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
import org.chromium.chrome.browser.firstrun.FirstRunStatus; import org.chromium.chrome.browser.firstrun.FirstRunStatus;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; import org.chromium.chrome.browser.fullscreen.BrowserControlsManager;
import org.chromium.chrome.browser.gesturenav.HistoryNavigationCoordinator; import org.chromium.chrome.browser.gesturenav.HistoryNavigationCoordinator;
import org.chromium.chrome.browser.gesturenav.NavigationSheet; import org.chromium.chrome.browser.gesturenav.NavigationSheet;
...@@ -490,6 +492,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { ...@@ -490,6 +492,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
*/ */
private boolean triggerPromo(boolean intentWithEffect) { private boolean triggerPromo(boolean intentWithEffect) {
try (TraceEvent e = TraceEvent.scoped("TabbedRootUiCoordinator.triggerPromo")) { try (TraceEvent e = TraceEvent.scoped("TabbedRootUiCoordinator.triggerPromo")) {
if (CommandLine.getInstance().hasSwitch(ChromeSwitches.DISABLE_STARTUP_PROMOS)) {
return false;
}
SharedPreferencesManager preferenceManager = SharedPreferencesManager.getInstance(); SharedPreferencesManager preferenceManager = SharedPreferencesManager.getInstance();
// Promos can only be shown when we start with ACTION_MAIN intent and // Promos can only be shown when we start with ACTION_MAIN intent and
// after FRE is complete. Native initialization can finish before the FRE flow is // after FRE is complete. Native initialization can finish before the FRE flow is
......
...@@ -218,6 +218,10 @@ public class CachedFeatureFlags { ...@@ -218,6 +218,10 @@ public class CachedFeatureFlags {
@VisibleForTesting @VisibleForTesting
public static void setOverrideTestValue(String preferenceKey, String overrideValue) { public static void setOverrideTestValue(String preferenceKey, String overrideValue) {
if (sOverridesTestFeatures == null) {
sOverridesTestFeatures = new HashMap<>();
}
sOverridesTestFeatures.put(preferenceKey, overrideValue); sOverridesTestFeatures.put(preferenceKey, overrideValue);
} }
......
...@@ -33,6 +33,9 @@ public abstract class ChromeSwitches {{ ...@@ -33,6 +33,9 @@ public abstract class ChromeSwitches {{
/** Disable the First Run Experience. */ /** Disable the First Run Experience. */
public static final String DISABLE_FIRST_RUN_EXPERIENCE = "disable-fre"; public static final String DISABLE_FIRST_RUN_EXPERIENCE = "disable-fre";
/** Disable promos shown on startup. */
public static final String DISABLE_STARTUP_PROMOS = "disable-startup-promos-for-testing";
/** /**
* Forces the First Run Experience (FRE) flow complete check to always return true. * Forces the First Run Experience (FRE) flow complete check to always return true.
*/ */
......
...@@ -54,17 +54,29 @@ public class BlankCTATabInitialStateRule implements TestRule { ...@@ -54,17 +54,29 @@ public class BlankCTATabInitialStateRule implements TestRule {
sActivity = mActivityTestRule.getActivity(); sActivity = mActivityTestRule.getActivity();
} else { } else {
mActivityTestRule.setActivity(sActivity); mActivityTestRule.setActivity(sActivity);
if (mClearAllTabState) { if (shouldPerformFastReset()) {
resetTabStateThorough();
} else {
resetTabStateFast(); resetTabStateFast();
} else {
resetTabStateThorough();
} }
} }
base.evaluate(); try {
base.evaluate();
} finally {
// If the activity was relaunched during the test, update the reference to use
// the most up to date Activity.
sActivity = mActivityTestRule.getActivity();
}
} }
}; };
} }
private boolean shouldPerformFastReset() {
if (mClearAllTabState) return false;
return TestThreadUtils.runOnUiThreadBlockingNoException(
() -> { return sActivity.getTabModelSelector().getModel(false).getCount() > 0; });
}
// Avoids closing the primary tab (and killing the renderer) in order to reset tab state // Avoids closing the primary tab (and killing the renderer) in order to reset tab state
// quickly, at the cost of thoroughness. This should be adequate for most tests. // quickly, at the cost of thoroughness. This should be adequate for most tests.
private void resetTabStateFast() { private void resetTabStateFast() {
......
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