Index: chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java |
index 8fd60aaef51a63ab5e06255d6e9c461f7f40b3d9..1ecb8bb5537c5f046307117eb48adea7567d5656 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java |
@@ -5,20 +5,31 @@ |
package org.chromium.chrome.browser.compositor.overlays.strip; |
import android.content.pm.ActivityInfo; |
+import android.support.test.InstrumentationRegistry; |
import android.support.test.filters.LargeTest; |
+import org.junit.Assert; |
+import org.junit.Before; |
+import org.junit.Rule; |
+import org.junit.Test; |
+import org.junit.runner.RunWith; |
+ |
import org.chromium.base.ThreadUtils; |
import org.chromium.base.test.util.CallbackHelper; |
+import org.chromium.base.test.util.CommandLineFlags; |
import org.chromium.base.test.util.Feature; |
import org.chromium.base.test.util.FlakyTest; |
import org.chromium.base.test.util.Restriction; |
+import org.chromium.chrome.browser.ChromeSwitches; |
import org.chromium.chrome.browser.compositor.layouts.components.CompositorButton; |
import org.chromium.chrome.browser.tab.Tab; |
import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver; |
import org.chromium.chrome.browser.tabmodel.TabModel; |
import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver; |
import org.chromium.chrome.browser.tabmodel.TabModelUtils; |
-import org.chromium.chrome.test.ChromeTabbedActivityTestBase; |
+import org.chromium.chrome.test.ChromeActivityTestRule; |
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; |
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; |
import org.chromium.chrome.test.util.ChromeRestriction; |
import org.chromium.chrome.test.util.ChromeTabUtils; |
import org.chromium.chrome.test.util.TabStripUtils; |
@@ -35,22 +46,30 @@ import java.util.concurrent.TimeoutException; |
/** |
* Test suite for the TabStrip and making sure it properly represents the TabModel backend. |
*/ |
-public class TabStripTest extends ChromeTabbedActivityTestBase { |
- |
- @Override |
- public void startMainActivity() throws InterruptedException { |
- startMainActivityOnBlankPage(); |
+@RunWith(ChromeJUnit4ClassRunner.class) |
+@CommandLineFlags.Add({ |
+ ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, |
+ ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG, |
+}) |
+public class TabStripTest { |
+ @Rule |
+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); |
+ |
+ @Before |
+ public void setUp() throws InterruptedException { |
+ mActivityTestRule.startMainActivityOnBlankPage(); |
} |
/** |
* Tests that the initial state of the system is good. This is so the default TabStrips match |
* the TabModels and we do not have to test this in further tests. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testInitialState() throws Exception { |
- getInstrumentation().waitForIdleSync(); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
compareAllTabStripsWithModel(); |
} |
@@ -58,68 +77,79 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* Tests that pressing the new tab button creates a new tab, properly updating the selected |
* index. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip", "Main"}) |
public void testNewTabButtonWithOneTab() throws Exception { |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("Expected original tab to be selected", |
- getActivity().getTabModelSelector().getModel(false).index(), 0); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("Expected original tab to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(false).index(), 0); |
- ChromeTabUtils.clickNewTabButton(this, this); |
+ ChromeTabUtils.clickNewTabButton( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("Expected two tabs to exist", |
- getActivity().getTabModelSelector().getModel(false).getCount(), 2); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("Expected two tabs to exist", |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(false).getCount(), |
+ 2); |
compareAllTabStripsWithModel(); |
- assertEquals("Expected second tab to be selected", |
- getActivity().getTabModelSelector().getModel(false).index(), 1); |
+ Assert.assertEquals("Expected second tab to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(false).index(), 1); |
} |
/** |
* Tests that pressing the new tab button creates a new tab when many exist, properly updating |
* the selected index. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
@FlakyTest(message = "crbug.com/592961") |
public void testNewTabButtonWithManyTabs() throws Exception { |
- ChromeTabUtils.newTabsFromMenu(getInstrumentation(), getActivity(), 3); |
- getInstrumentation().runOnMainSync(new Runnable() { |
+ ChromeTabUtils.newTabsFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity(), 3); |
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() { |
@Override |
public void run() { |
- TabModelUtils.setIndex(getActivity().getTabModelSelector().getModel(false), 0); |
+ TabModelUtils.setIndex( |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(false), 0); |
} |
}); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("Expected original tab to be selected", |
- getActivity().getTabModelSelector().getModel(false).index(), 0); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("Expected original tab to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(false).index(), 0); |
compareAllTabStripsWithModel(); |
- ChromeTabUtils.clickNewTabButton(this, this); |
+ ChromeTabUtils.clickNewTabButton( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("Expected five tabs to exist", |
- getActivity().getTabModelSelector().getModel(false).getCount(), 5); |
- assertEquals("Expected last tab to be selected", |
- getActivity().getTabModelSelector().getModel(false).index(), 4); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("Expected five tabs to exist", |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(false).getCount(), |
+ 5); |
+ Assert.assertEquals("Expected last tab to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(false).index(), 4); |
compareAllTabStripsWithModel(); |
} |
/** |
* Tests that creating a new tab from the menu properly updates the TabStrip. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testNewTabFromMenu() throws Exception { |
- getInstrumentation().waitForIdleSync(); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
compareAllTabStripsWithModel(); |
- ChromeTabUtils.newTabFromMenu(getInstrumentation(), getActivity()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("Expected two tabs to exist", |
- getActivity().getTabModelSelector().getModel(false).getCount(), 2); |
+ ChromeTabUtils.newTabFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("Expected two tabs to exist", |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(false).getCount(), |
+ 2); |
compareAllTabStripsWithModel(); |
} |
@@ -127,39 +157,44 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* Tests that creating a new incognito from the menu properly updates the TabStrips and |
* activates the incognito TabStrip. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testNewIncognitoTabFromMenuAtNormalStrip() throws Exception { |
- getInstrumentation().waitForIdleSync(); |
- assertFalse("Expected normal strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
- newIncognitoTabFromMenu(); |
- getInstrumentation().waitForIdleSync(); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertFalse("Expected normal strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
+ mActivityTestRule.newIncognitoTabFromMenu(); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
compareAllTabStripsWithModel(); |
- assertTrue("Expected incognito strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
- assertEquals("Expected normal model to have one tab", |
- getActivity().getTabModelSelector().getModel(false).getCount(), 1); |
- assertEquals("Expected incognito model to have one tab", |
- getActivity().getTabModelSelector().getModel(false).getCount(), 1); |
+ Assert.assertTrue("Expected incognito strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
+ Assert.assertEquals("Expected normal model to have one tab", |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(false).getCount(), |
+ 1); |
+ Assert.assertEquals("Expected incognito model to have one tab", |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(false).getCount(), |
+ 1); |
} |
/** |
* Tests that selecting a tab properly selects the new tab. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testSelectWithTwoTabs() throws Exception { |
- ChromeTabUtils.newTabFromMenu(getInstrumentation(), getActivity()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("The second tab is not selected", |
- getActivity().getCurrentTabModel().index(), 1); |
- selectTab(false, getActivity().getCurrentTabModel().getTabAt(0).getId()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("The first tab is not selected", |
- getActivity().getCurrentTabModel().index(), 0); |
+ ChromeTabUtils.newTabFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("The second tab is not selected", |
+ mActivityTestRule.getActivity().getCurrentTabModel().index(), 1); |
+ selectTab(false, mActivityTestRule.getActivity().getCurrentTabModel().getTabAt(0).getId()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("The first tab is not selected", |
+ mActivityTestRule.getActivity().getCurrentTabModel().index(), 0); |
compareAllTabStripsWithModel(); |
} |
@@ -167,21 +202,23 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* Tests that selecting a tab properly selects the new tab with many present. This lets us |
* also check that the visible tab ordering is correct. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testSelectWithManyTabs() throws Exception { |
- ChromeTabUtils.newTabsFromMenu(getInstrumentation(), getActivity(), 4); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("The last tab is not selected", |
- getActivity().getCurrentTabModel().index(), 4); |
+ ChromeTabUtils.newTabsFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity(), 4); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("The last tab is not selected", |
+ mActivityTestRule.getActivity().getCurrentTabModel().index(), 4); |
compareAllTabStripsWithModel(); |
// Note: if the tab is not visible, this will fail. Currently that's not a problem, because |
// the devices we test on are wide enough. |
- selectTab(false, getActivity().getCurrentTabModel().getTabAt(0).getId()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("The middle tab is not selected", |
- getActivity().getCurrentTabModel().index(), 0); |
+ selectTab(false, mActivityTestRule.getActivity().getCurrentTabModel().getTabAt(0).getId()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("The middle tab is not selected", |
+ mActivityTestRule.getActivity().getCurrentTabModel().index(), 0); |
compareAllTabStripsWithModel(); |
} |
@@ -189,25 +226,27 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* Tests closing a tab when there are two tabs open. The remaining tab should still be |
* selected. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testCloseTabWithTwoTabs() throws Exception { |
- ChromeTabUtils.newTabFromMenu(getInstrumentation(), getActivity()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("There are not two tabs present", |
- getActivity().getCurrentTabModel().getCount(), 2); |
- assertEquals("The second tab is not selected", |
- getActivity().getCurrentTabModel().index(), 1); |
- int initialSelectedId = getActivity().getActivityTab().getId(); |
- closeTab(false, getActivity().getCurrentTabModel().getTabAt(0).getId()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("There is not one tab present", |
- getActivity().getCurrentTabModel().getCount(), 1); |
- assertEquals("The wrong tab index is selected after close", |
- getActivity().getCurrentTabModel().index(), 0); |
- assertEquals("Same tab not still selected", initialSelectedId, |
- getActivity().getActivityTab().getId()); |
+ ChromeTabUtils.newTabFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("There are not two tabs present", |
+ mActivityTestRule.getActivity().getCurrentTabModel().getCount(), 2); |
+ Assert.assertEquals("The second tab is not selected", |
+ mActivityTestRule.getActivity().getCurrentTabModel().index(), 1); |
+ int initialSelectedId = mActivityTestRule.getActivity().getActivityTab().getId(); |
+ closeTab(false, mActivityTestRule.getActivity().getCurrentTabModel().getTabAt(0).getId()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("There is not one tab present", |
+ mActivityTestRule.getActivity().getCurrentTabModel().getCount(), 1); |
+ Assert.assertEquals("The wrong tab index is selected after close", |
+ mActivityTestRule.getActivity().getCurrentTabModel().index(), 0); |
+ Assert.assertEquals("Same tab not still selected", initialSelectedId, |
+ mActivityTestRule.getActivity().getActivityTab().getId()); |
compareAllTabStripsWithModel(); |
} |
@@ -215,27 +254,29 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* Tests closing a tab when there are many tabs open. The remaining tab should still be |
* selected, even if the index has changed. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testCloseTabWithManyTabs() throws Exception { |
- ChromeTabUtils.newTabsFromMenu(getInstrumentation(), getActivity(), 4); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("There are not five tabs present", |
- getActivity().getCurrentTabModel().getCount(), 5); |
- assertEquals("The last tab is not selected", |
- getActivity().getCurrentTabModel().index(), 4); |
- int initialSelectedId = getActivity().getActivityTab().getId(); |
+ ChromeTabUtils.newTabsFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity(), 4); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("There are not five tabs present", |
+ mActivityTestRule.getActivity().getCurrentTabModel().getCount(), 5); |
+ Assert.assertEquals("The last tab is not selected", |
+ mActivityTestRule.getActivity().getCurrentTabModel().index(), 4); |
+ int initialSelectedId = mActivityTestRule.getActivity().getActivityTab().getId(); |
// Note: if the tab is not visible, this will fail. Currently that's not a problem, because |
// the devices we test on are wide enough. |
- closeTab(false, getActivity().getCurrentTabModel().getTabAt(0).getId()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("There are not four tabs present", |
- getActivity().getCurrentTabModel().getCount(), 4); |
- assertEquals("The wrong tab index is selected after close", |
- getActivity().getCurrentTabModel().index(), 3); |
- assertEquals("Same tab not still selected", initialSelectedId, |
- getActivity().getActivityTab().getId()); |
+ closeTab(false, mActivityTestRule.getActivity().getCurrentTabModel().getTabAt(0).getId()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("There are not four tabs present", |
+ mActivityTestRule.getActivity().getCurrentTabModel().getCount(), 4); |
+ Assert.assertEquals("The wrong tab index is selected after close", |
+ mActivityTestRule.getActivity().getCurrentTabModel().index(), 3); |
+ Assert.assertEquals("Same tab not still selected", initialSelectedId, |
+ mActivityTestRule.getActivity().getActivityTab().getId()); |
compareAllTabStripsWithModel(); |
} |
@@ -243,25 +284,28 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* Tests that closing the selected tab properly closes the current tab and updates to a new |
* selected tab. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testCloseSelectedTab() throws Exception { |
- ChromeTabUtils.newTabFromMenu(getInstrumentation(), getActivity()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("There are not two tabs present", |
- getActivity().getCurrentTabModel().getCount(), 2); |
- assertEquals("The second tab is not selected", |
- getActivity().getCurrentTabModel().index(), 1); |
- int newSelectionId = getActivity().getCurrentTabModel().getTabAt(0).getId(); |
- closeTab(false, getActivity().getCurrentTabModel().getTabAt(1).getId()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("There is not one tab present", |
- getActivity().getCurrentTabModel().getCount(), 1); |
- assertEquals("The wrong tab index is selected after close", |
- getActivity().getCurrentTabModel().index(), 0); |
- assertEquals("New tab not selected", newSelectionId, |
- getActivity().getActivityTab().getId()); |
+ ChromeTabUtils.newTabFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("There are not two tabs present", |
+ mActivityTestRule.getActivity().getCurrentTabModel().getCount(), 2); |
+ Assert.assertEquals("The second tab is not selected", |
+ mActivityTestRule.getActivity().getCurrentTabModel().index(), 1); |
+ int newSelectionId = |
+ mActivityTestRule.getActivity().getCurrentTabModel().getTabAt(0).getId(); |
+ closeTab(false, mActivityTestRule.getActivity().getCurrentTabModel().getTabAt(1).getId()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("There is not one tab present", |
+ mActivityTestRule.getActivity().getCurrentTabModel().getCount(), 1); |
+ Assert.assertEquals("The wrong tab index is selected after close", |
+ mActivityTestRule.getActivity().getCurrentTabModel().index(), 0); |
+ Assert.assertEquals("New tab not selected", newSelectionId, |
+ mActivityTestRule.getActivity().getActivityTab().getId()); |
compareAllTabStripsWithModel(); |
} |
@@ -269,70 +313,79 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* Tests that selecting "Close all tabs" from the tab menu closes all tabs. |
* Also tests that long press on close button selects the tab and displays the menu. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testCloseAllTabsFromTabMenuClosesAllTabs() throws Exception { |
// 1. Create a second tab |
- ChromeTabUtils.newTabFromMenu(getInstrumentation(), getActivity()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("There are not two tabs present", |
- 2, getActivity().getCurrentTabModel().getCount()); |
- assertEquals("The second tab is not selected", |
- 1, getActivity().getCurrentTabModel().index()); |
+ ChromeTabUtils.newTabFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("There are not two tabs present", 2, |
+ mActivityTestRule.getActivity().getCurrentTabModel().getCount()); |
+ Assert.assertEquals("The second tab is not selected", 1, |
+ mActivityTestRule.getActivity().getCurrentTabModel().index()); |
// 2. Display tab menu on first tab |
- int tabSelectionId = getActivity().getCurrentTabModel().getTabAt(0).getId(); |
+ int tabSelectionId = |
+ mActivityTestRule.getActivity().getCurrentTabModel().getTabAt(0).getId(); |
longPressCloseTab(false, tabSelectionId); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("There are not two tabs present", |
- 2, getActivity().getCurrentTabModel().getCount()); |
- assertEquals("The wrong tab index is selected after long press", |
- 0, getActivity().getCurrentTabModel().index()); |
- assertEquals("Long pressed tab not selected", |
- tabSelectionId, getActivity().getActivityTab().getId()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("There are not two tabs present", 2, |
+ mActivityTestRule.getActivity().getCurrentTabModel().getCount()); |
+ Assert.assertEquals("The wrong tab index is selected after long press", 0, |
+ mActivityTestRule.getActivity().getCurrentTabModel().index()); |
+ Assert.assertEquals("Long pressed tab not selected", tabSelectionId, |
+ mActivityTestRule.getActivity().getActivityTab().getId()); |
// 3. Invoke "close all tabs" menu action; block until action is completed |
ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
@Override |
public void run() { |
- TabStripUtils.getActiveStripLayoutHelper(getActivity()).clickTabMenuItem( |
- StripLayoutHelper.ID_CLOSE_ALL_TABS); |
+ TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()) |
+ .clickTabMenuItem(StripLayoutHelper.ID_CLOSE_ALL_TABS); |
} |
}); |
// 4. Ensure all tabs were closed |
- assertEquals("Expected no tabs to be present", |
- 0, getActivity().getCurrentTabModel().getCount()); |
+ Assert.assertEquals("Expected no tabs to be present", 0, |
+ mActivityTestRule.getActivity().getCurrentTabModel().getCount()); |
} |
/** |
* Tests that the tab menu is dismissed when the orientation changes and no tabs |
* are closed. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testTabMenuDismissedOnOrientationChange() throws Exception { |
// 1. Set orientation to portrait |
- getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); |
- getInstrumentation().waitForIdleSync(); |
+ mActivityTestRule.getActivity().setRequestedOrientation( |
+ ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
// 2. Open tab menu |
- int tabSelectionId = getActivity().getCurrentTabModel().getTabAt(0).getId(); |
+ int tabSelectionId = |
+ mActivityTestRule.getActivity().getCurrentTabModel().getTabAt(0).getId(); |
longPressCloseTab(false, tabSelectionId); |
- getInstrumentation().waitForIdleSync(); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
// 3. Set orientation to landscape and assert tab menu is not showing |
- getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); |
- getInstrumentation().waitForIdleSync(); |
- assertFalse(TabStripUtils.getActiveStripLayoutHelper(getActivity()).isTabMenuShowing()); |
- assertEquals("Expected 1 tab to be present", |
- 1, getActivity().getCurrentTabModel().getCount()); |
+ mActivityTestRule.getActivity().setRequestedOrientation( |
+ ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertFalse(TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()) |
+ .isTabMenuShowing()); |
+ Assert.assertEquals("Expected 1 tab to be present", 1, |
+ mActivityTestRule.getActivity().getCurrentTabModel().getCount()); |
// 4. Reset orientation |
- getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); |
- getInstrumentation().waitForIdleSync(); |
+ mActivityTestRule.getActivity().setRequestedOrientation( |
+ ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
} |
/** |
@@ -340,120 +393,132 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* and normal TabStrips. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testToggleIncognitoMode() throws Exception { |
- getInstrumentation().waitForIdleSync(); |
- assertFalse("Expected normal strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
- newIncognitoTabFromMenu(); |
- getInstrumentation().waitForIdleSync(); |
- assertTrue("Expected incognito strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertFalse("Expected normal strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
+ mActivityTestRule.newIncognitoTabFromMenu(); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertTrue("Expected incognito strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
compareAllTabStripsWithModel(); |
clickIncognitoToggleButton(); |
- getInstrumentation().waitForIdleSync(); |
- assertFalse("Expected normal strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertFalse("Expected normal strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
compareAllTabStripsWithModel(); |
clickIncognitoToggleButton(); |
- getInstrumentation().waitForIdleSync(); |
- assertTrue("Expected incognito strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertTrue("Expected incognito strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
} |
/** |
* Tests that closing the last incognito tab properly closes the incognito TabStrip and |
* switches to the normal TabStrip. |
*/ |
+ @Test |
@LargeTest |
@Feature({"TabStrip"}) |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
public void testCloseLastIncognitoTab() throws Exception { |
- getInstrumentation().waitForIdleSync(); |
- assertFalse("Expected normal strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
- newIncognitoTabFromMenu(); |
- getInstrumentation().waitForIdleSync(); |
- assertTrue("Expected incognito strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
- closeTab(true, TabModelUtils.getCurrentTab( |
- getActivity().getTabModelSelector().getModel(true)).getId()); |
- getInstrumentation().waitForIdleSync(); |
- assertFalse("Expected normal strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
- assertEquals("Expected incognito strip to have no tabs", |
- getActivity().getTabModelSelector().getModel(true).getCount(), 0); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertFalse("Expected normal strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
+ mActivityTestRule.newIncognitoTabFromMenu(); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertTrue("Expected incognito strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
+ closeTab(true, |
+ TabModelUtils |
+ .getCurrentTab( |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel( |
+ true)) |
+ .getId()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertFalse("Expected normal strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
+ Assert.assertEquals("Expected incognito strip to have no tabs", |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(true).getCount(), 0); |
} |
/** |
* Tests that closing all incognito tab properly closes the incognito TabStrip and |
* switches to the normal TabStrip. |
*/ |
+ @Test |
@LargeTest |
@Feature({"TabStrip"}) |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
public void testCloseAllIncognitoTabsFromTabMenu() throws Exception { |
//1. Create two incognito tabs |
- getInstrumentation().waitForIdleSync(); |
- assertFalse("Expected normal strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
- newIncognitoTabFromMenu(); |
- getInstrumentation().waitForIdleSync(); |
- newIncognitoTabFromMenu(); |
- getInstrumentation().waitForIdleSync(); |
- assertTrue("Expected incognito strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
- assertEquals("Expected incognito strip to have 2 tabs", |
- 2, getActivity().getTabModelSelector().getModel(true).getCount()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertFalse("Expected normal strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
+ mActivityTestRule.newIncognitoTabFromMenu(); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ mActivityTestRule.newIncognitoTabFromMenu(); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertTrue("Expected incognito strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
+ Assert.assertEquals("Expected incognito strip to have 2 tabs", 2, |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(true).getCount()); |
// 2. Open tab menu |
- int tabSelectionId = TabModelUtils.getCurrentTab( |
- getActivity().getTabModelSelector().getModel(true)).getId(); |
+ int tabSelectionId = |
+ TabModelUtils |
+ .getCurrentTab( |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel( |
+ true)) |
+ .getId(); |
longPressCloseTab(true, tabSelectionId); |
- getInstrumentation().waitForIdleSync(); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
// 3. Invoke menu action; block until action is completed |
ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
@Override |
public void run() { |
- TabStripUtils.getActiveStripLayoutHelper(getActivity()).clickTabMenuItem( |
- StripLayoutHelper.ID_CLOSE_ALL_TABS); |
+ TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()) |
+ .clickTabMenuItem(StripLayoutHelper.ID_CLOSE_ALL_TABS); |
} |
}); |
// 4. Ensure all incognito tabs were closed and TabStrip is switched to normal |
- assertFalse("Expected normal strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
- assertEquals("Expected normal strip to have 1 tab", |
- 1, getActivity().getTabModelSelector().getModel(false).getCount()); |
- assertEquals("Expected incognito strip to have no tabs", |
- 0, getActivity().getTabModelSelector().getModel(true).getCount()); |
+ Assert.assertFalse("Expected normal strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
+ Assert.assertEquals("Expected normal strip to have 1 tab", 1, |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(false).getCount()); |
+ Assert.assertEquals("Expected incognito strip to have no tabs", 0, |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(true).getCount()); |
} |
/** |
* Test that switching a tab and quickly changing the model stays on the correct new tab/model |
* when the tab finishes loading (when the GL overlay goes away). |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testTabSelectionViewDoesNotBreakModelSwitch() throws Exception { |
- getInstrumentation().waitForIdleSync(); |
- assertFalse("Expected normal strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
- newIncognitoTabFromMenu(); |
- getInstrumentation().waitForIdleSync(); |
- assertTrue("Expected incognito strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
- newIncognitoTabFromMenu(); |
- ChromeTabUtils.switchTabInCurrentTabModel(getActivity(), 0); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertFalse("Expected normal strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
+ mActivityTestRule.newIncognitoTabFromMenu(); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertTrue("Expected incognito strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
+ mActivityTestRule.newIncognitoTabFromMenu(); |
+ ChromeTabUtils.switchTabInCurrentTabModel(mActivityTestRule.getActivity(), 0); |
clickIncognitoToggleButton(); |
- assertFalse("Expected normal strip to be selected", |
- getActivity().getTabModelSelector().isIncognitoSelected()); |
+ Assert.assertFalse("Expected normal strip to be selected", |
+ mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected()); |
} |
/** |
@@ -463,25 +528,27 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* the button while using the CascadingStripStacker), and checks that switching between |
* tab models scrolls to make the selected tab visible. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testSwitchStripStackersWithIncognito() throws Exception { |
// Open an incognito tab to switch to the incognito model. |
- newIncognitoTabFromMenu(); |
+ mActivityTestRule.newIncognitoTabFromMenu(); |
// Open enough regular tabs to cause the tabs to cascade or the strip to scroll depending |
// on which stacker is being used. |
- ChromeTabUtils.newTabsFromMenu(getInstrumentation(), getActivity(), 10); |
+ ChromeTabUtils.newTabsFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity(), 10); |
// Switch to the ScrollingStripStacker. |
setShouldCascadeTabsAndCheckTabStrips(false); |
// Scroll so the selected tab is not visible. |
assertSetTabStripScrollOffset(0); |
- TabModel model = getActivity().getTabModelSelector().getModel(false); |
- StripLayoutTab tab = TabStripUtils.findStripLayoutTab(getActivity(), false, |
- model.getTabAt(10).getId()); |
+ TabModel model = mActivityTestRule.getActivity().getTabModelSelector().getModel(false); |
+ StripLayoutTab tab = TabStripUtils.findStripLayoutTab( |
+ mActivityTestRule.getActivity(), false, model.getTabAt(10).getId()); |
assertTabVisibility(false, tab); |
// Create visibility callback helper. |
@@ -495,7 +562,7 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
}); |
// Open another incognito tab to switch to the incognito model. |
- newIncognitoTabFromMenu(); |
+ mActivityTestRule.newIncognitoTabFromMenu(); |
// Switch tab models to switch back to the regular tab strip. |
clickIncognitoToggleButton(); |
@@ -512,13 +579,15 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* CascadingStripStacker when the last tab is selected. This also verifies that the strip |
* scrolls correctly and the correct index is selected after switching. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testSwitchStripStackersWithLastTabSelected() throws Exception { |
// Open enough regular tabs to cause the tabs to cascade or the strip to scroll depending |
// on which stacker is being used. |
- ChromeTabUtils.newTabsFromMenu(getInstrumentation(), getActivity(), 10); |
+ ChromeTabUtils.newTabsFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity(), 10); |
// Switch to the ScrollingStripStacker. |
setShouldCascadeTabsAndCheckTabStrips(false); |
@@ -532,17 +601,19 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* CascadingStripStacker when the first tab is selected. This also verifies that the strip |
* scrolls correctly and the correct index is selected after switching. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testSwitchStripStackersWithFirstTabSelected() throws Exception { |
// Open enough regular tabs to cause the tabs to cascade or the strip to scroll depending |
// on which stacker is being used. |
- ChromeTabUtils.newTabsFromMenu(getInstrumentation(), getActivity(), 10); |
+ ChromeTabUtils.newTabsFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity(), 10); |
// Select the first tab by setting the index directly. It may not be visible, so don't |
// try to tap on it. |
- ChromeTabUtils.switchTabInCurrentTabModel(getActivity(), 0); |
+ ChromeTabUtils.switchTabInCurrentTabModel(mActivityTestRule.getActivity(), 0); |
// Switch to the ScrollingStripStacker. |
setShouldCascadeTabsAndCheckTabStrips(false); |
@@ -551,10 +622,12 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
// CascadingStripStacker makes it visible again. The selected tab should always be visible |
// when using the CascadingStripStacker but may not be visible when using the |
// ScrollingStripStacker. |
- assertSetTabStripScrollOffset((int) TabStripUtils.getActiveStripLayoutHelper( |
- getActivity()).getMinimumScrollOffset()); |
- StripLayoutTab selectedLayoutTab = TabStripUtils.findStripLayoutTab( |
- getActivity(), false, getActivity().getCurrentTabModel().getTabAt(0).getId()); |
+ assertSetTabStripScrollOffset( |
+ (int) TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()) |
+ .getMinimumScrollOffset()); |
+ StripLayoutTab selectedLayoutTab = |
+ TabStripUtils.findStripLayoutTab(mActivityTestRule.getActivity(), false, |
+ mActivityTestRule.getActivity().getCurrentTabModel().getTabAt(0).getId()); |
assertTabVisibility(false, selectedLayoutTab); |
// Switch to the CascadingStripStacker. |
@@ -566,17 +639,19 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* CascadingStripStacker when a middle tab is selected. This also verifies that the strip |
* scrolls correctly and the correct index is selected after switching. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
public void testSwitchStripStackersWithMiddleTabSelected() throws Exception { |
// Open enough regular tabs to cause the tabs to cascade or the strip to scroll depending |
// on which stacker is being used. |
- ChromeTabUtils.newTabsFromMenu(getInstrumentation(), getActivity(), 10); |
+ ChromeTabUtils.newTabsFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity(), 10); |
// Select the sixth tab by setting the index directly. It may not be visible, so don't |
// try to tap on it. |
- ChromeTabUtils.switchTabInCurrentTabModel(getActivity(), 5); |
+ ChromeTabUtils.switchTabInCurrentTabModel(mActivityTestRule.getActivity(), 5); |
// Switch to the ScrollingStripStacker. |
setShouldCascadeTabsAndCheckTabStrips(false); |
@@ -590,6 +665,7 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* hidden at various scroll positions. |
* TODO(twellington): Also test these expectations in RTL. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
@@ -598,7 +674,8 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
setShouldCascadeTabsAndCheckTabStrips(false); |
// Open enough regular tabs to cause the strip to scroll. |
- ChromeTabUtils.newTabsFromMenu(getInstrumentation(), getActivity(), 10); |
+ ChromeTabUtils.newTabsFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity(), 10); |
// In RTL the expectation for left/right fade opacities is swapped. |
boolean isLeft = !LocalizationUtils.isLayoutRtl(); |
@@ -609,9 +686,10 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
// Scroll a little below the minimum scroll offset causing the right fade (in LTR) to be |
// at partial opacity. |
- assertSetTabStripScrollOffset((int) (TabStripUtils.getActiveStripLayoutHelper( |
- getActivity()).getMinimumScrollOffset() |
- + StripLayoutHelper.FADE_FULL_OPACITY_THRESHOLD_DP / 2)); |
+ assertSetTabStripScrollOffset( |
+ (int) (TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()) |
+ .getMinimumScrollOffset() |
+ + StripLayoutHelper.FADE_FULL_OPACITY_THRESHOLD_DP / 2)); |
assertTabStripFadePartiallyVisible(!isLeft); |
assertTabStripFadeFullyVisible(isLeft); |
@@ -631,6 +709,7 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* Test that selecting a tab that isn't currently visible causes the ScrollingStripStacker |
* to scroll to make it visible. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
@@ -639,12 +718,13 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
setShouldCascadeTabsAndCheckTabStrips(false); |
// Open enough regular tabs to cause the strip to scroll. |
- ChromeTabUtils.newTabsFromMenu(getInstrumentation(), getActivity(), 10); |
+ ChromeTabUtils.newTabsFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity(), 10); |
// Get tab at index 0 and assert it is not visible. |
- TabModel model = getActivity().getTabModelSelector().getModel(false); |
- final StripLayoutTab tab = TabStripUtils.findStripLayoutTab(getActivity(), false, |
- model.getTabAt(0).getId()); |
+ TabModel model = mActivityTestRule.getActivity().getTabModelSelector().getModel(false); |
+ final StripLayoutTab tab = TabStripUtils.findStripLayoutTab( |
+ mActivityTestRule.getActivity(), false, model.getTabAt(0).getId()); |
assertTabVisibility(false, tab); |
// Create visibility callback helper. |
@@ -658,7 +738,7 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
}); |
// Select tab 0. |
- ChromeTabUtils.switchTabInCurrentTabModel(getActivity(), 0); |
+ ChromeTabUtils.switchTabInCurrentTabModel(mActivityTestRule.getActivity(), 0); |
// Tab should now be visible. |
helper.waitForCallback(0); |
@@ -668,6 +748,7 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* Test that the draw positions for tabs match expectations at various scroll positions |
* when using the ScrollingStripStacker. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip"}) |
@@ -676,10 +757,12 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
setShouldCascadeTabsAndCheckTabStrips(false); |
// Open enough regular tabs to cause the strip to scroll and select the first tab. |
- ChromeTabUtils.newTabsFromMenu(getInstrumentation(), getActivity(), 10); |
+ ChromeTabUtils.newTabsFromMenu( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity(), 10); |
// Set up some variables. |
- StripLayoutHelper strip = TabStripUtils.getActiveStripLayoutHelper(getActivity()); |
+ StripLayoutHelper strip = |
+ TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()); |
StripLayoutTab[] tabs = strip.getStripLayoutTabs(); |
float tabDrawWidth = tabs[0].getWidth() - strip.getTabOverlapWidth(); |
@@ -697,14 +780,14 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
}); |
// Switch to the first tab and wait until it's visible. |
- ChromeTabUtils.switchTabInCurrentTabModel(getActivity(), 0); |
+ ChromeTabUtils.switchTabInCurrentTabModel(mActivityTestRule.getActivity(), 0); |
visibleHelper.waitForCallback(0); |
// Check initial model validity. |
compareAllTabStripsWithModel(); |
// Assert getStripLayoutTabs() returns the expected number of tabs. |
- assertEquals("Unexpected number of StripLayoutTabs.", 11, tabs.length); |
+ Assert.assertEquals("Unexpected number of StripLayoutTabs.", 11, tabs.length); |
// Create callback helper to be notified when first tab is no longer visible. |
final CallbackHelper notVisibleHelper = new CallbackHelper(); |
@@ -740,22 +823,26 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
/** |
* Tests that switching tabs hides keyboard. |
*/ |
+ @Test |
@LargeTest |
@Restriction(ChromeRestriction.RESTRICTION_TYPE_TABLET) |
@Feature({"TabStrip", "IME"}) |
public void testSwitchingTabsHidesKeyboard() throws Throwable { |
- loadUrl("data:text/html;charset=utf-8,<html><head></head><body><form>" |
+ mActivityTestRule.loadUrl("data:text/html;charset=utf-8,<html><head></head><body><form>" |
+ "<input type='text' id='input0'></form></body></html>"); |
- DOMUtils.clickNode(getActivity().getActivityTab().getContentViewCore(), "input0"); |
+ DOMUtils.clickNode( |
+ mActivityTestRule.getActivity().getActivityTab().getContentViewCore(), "input0"); |
assertWaitForKeyboardStatus(true); |
- getInstrumentation().waitForIdleSync(); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
- ChromeTabUtils.clickNewTabButton(this, this); |
+ ChromeTabUtils.clickNewTabButton( |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity()); |
- getInstrumentation().waitForIdleSync(); |
- assertEquals("Expected two tabs to exist", |
- getActivity().getTabModelSelector().getModel(false).getCount(), 2); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ Assert.assertEquals("Expected two tabs to exist", |
+ mActivityTestRule.getActivity().getTabModelSelector().getModel(false).getCount(), |
+ 2); |
assertWaitForKeyboardStatus(false); |
} |
@@ -788,15 +875,17 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
tabModelSelectedCallback.notifyCalled(); |
} |
}; |
- getActivity().getTabModelSelector().addObserver(observer); |
- StripLayoutHelperManager manager = TabStripUtils.getStripLayoutHelperManager(getActivity()); |
- TabStripUtils.clickCompositorButton(manager.getModelSelectorButton(), this); |
+ mActivityTestRule.getActivity().getTabModelSelector().addObserver(observer); |
+ StripLayoutHelperManager manager = |
+ TabStripUtils.getStripLayoutHelperManager(mActivityTestRule.getActivity()); |
+ TabStripUtils.clickCompositorButton(manager.getModelSelectorButton(), |
+ InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity()); |
try { |
tabModelSelectedCallback.waitForCallback(0); |
} catch (TimeoutException e) { |
- fail("Tab model selected event never occurred."); |
+ Assert.fail("Tab model selected event never occurred."); |
} |
- getActivity().getTabModelSelector().removeObserver(observer); |
+ mActivityTestRule.getActivity().getTabModelSelector().removeObserver(observer); |
} |
/** |
@@ -805,14 +894,17 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* @param id The id of the tab to click. |
*/ |
protected void selectTab(final boolean incognito, final int id) throws InterruptedException { |
- ChromeTabUtils.selectTabWithAction(getInstrumentation(), getActivity(), new Runnable() { |
- @Override |
- public void run() { |
- TabStripUtils.clickTab( |
- TabStripUtils.findStripLayoutTab(getActivity(), incognito, id), |
- TabStripTest.this); |
- } |
- }); |
+ ChromeTabUtils.selectTabWithAction(InstrumentationRegistry.getInstrumentation(), |
+ mActivityTestRule.getActivity(), new Runnable() { |
+ @Override |
+ public void run() { |
+ TabStripUtils.clickTab( |
+ TabStripUtils.findStripLayoutTab( |
+ mActivityTestRule.getActivity(), incognito, id), |
+ InstrumentationRegistry.getInstrumentation(), |
+ mActivityTestRule.getActivity()); |
+ } |
+ }); |
} |
/** |
@@ -821,14 +913,17 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* @param id The id of the tab to click. |
*/ |
protected void closeTab(final boolean incognito, final int id) throws InterruptedException { |
- ChromeTabUtils.closeTabWithAction(getInstrumentation(), getActivity(), new Runnable() { |
- @Override |
- public void run() { |
- StripLayoutTab tab = TabStripUtils.findStripLayoutTab( |
- getActivity(), incognito, id); |
- TabStripUtils.clickCompositorButton(tab.getCloseButton(), TabStripTest.this); |
- } |
- }); |
+ ChromeTabUtils.closeTabWithAction(InstrumentationRegistry.getInstrumentation(), |
+ mActivityTestRule.getActivity(), new Runnable() { |
+ @Override |
+ public void run() { |
+ StripLayoutTab tab = TabStripUtils.findStripLayoutTab( |
+ mActivityTestRule.getActivity(), incognito, id); |
+ TabStripUtils.clickCompositorButton(tab.getCloseButton(), |
+ InstrumentationRegistry.getInstrumentation(), |
+ mActivityTestRule.getActivity()); |
+ } |
+ }); |
} |
/** |
@@ -839,15 +934,19 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
*/ |
protected void longPressCloseTab(final boolean incognito, final int id) |
throws InterruptedException { |
- ChromeTabUtils.selectTabWithAction(getInstrumentation(), getActivity(), new Runnable() { |
- @Override |
- public void run() { |
- StripLayoutTab tab = TabStripUtils.findStripLayoutTab( |
- getActivity(), incognito, id); |
- TabStripUtils.longPressCompositorButton(tab.getCloseButton(), TabStripTest.this); |
- } |
- }); |
- assertTrue(TabStripUtils.getActiveStripLayoutHelper(getActivity()).isTabMenuShowing()); |
+ ChromeTabUtils.selectTabWithAction(InstrumentationRegistry.getInstrumentation(), |
+ mActivityTestRule.getActivity(), new Runnable() { |
+ @Override |
+ public void run() { |
+ StripLayoutTab tab = TabStripUtils.findStripLayoutTab( |
+ mActivityTestRule.getActivity(), incognito, id); |
+ TabStripUtils.longPressCompositorButton(tab.getCloseButton(), |
+ InstrumentationRegistry.getInstrumentation(), |
+ mActivityTestRule.getActivity()); |
+ } |
+ }); |
+ Assert.assertTrue(TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()) |
+ .isTabMenuShowing()); |
} |
/** |
@@ -857,32 +956,36 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* @param id The id of the tab to compare. |
*/ |
protected void compareTabViewWithModel(boolean incognito, int id) throws ExecutionException { |
- TabModel model = getActivity().getTabModelSelector().getModel(incognito); |
+ TabModel model = mActivityTestRule.getActivity().getTabModelSelector().getModel(incognito); |
Tab tab = TabModelUtils.getTabById(model, id); |
- StripLayoutHelper tabStrip = TabStripUtils.getStripLayoutHelper(getActivity(), incognito); |
- StripLayoutTab tabView = TabStripUtils.findStripLayoutTab(getActivity(), incognito, id); |
+ StripLayoutHelper tabStrip = |
+ TabStripUtils.getStripLayoutHelper(mActivityTestRule.getActivity(), incognito); |
+ StripLayoutTab tabView = |
+ TabStripUtils.findStripLayoutTab(mActivityTestRule.getActivity(), incognito, id); |
- assertTrue("One of Tab and TabView does not exist", (tabView == null && tab == null) |
- || (tabView != null && tab != null)); |
+ Assert.assertTrue("One of Tab and TabView does not exist", |
+ (tabView == null && tab == null) || (tabView != null && tab != null)); |
if (tabView == null || tab == null) return; |
- assertEquals("The IDs are not identical", tabView.getId(), tab.getId()); |
+ Assert.assertEquals("The IDs are not identical", tabView.getId(), tab.getId()); |
int assumedTabViewIndex = mapModelToViewIndex(model.getCount(), model.index(), |
model.indexOf(tab)); |
- assertEquals("The tab is not in the proper position ", |
- assumedTabViewIndex, tabStrip.visualIndexOfTab(tabView)); |
+ Assert.assertEquals("The tab is not in the proper position ", assumedTabViewIndex, |
+ tabStrip.visualIndexOfTab(tabView)); |
if (TabModelUtils.getCurrentTab(model) == tab |
- && getActivity().getTabModelSelector().isIncognitoSelected() == incognito) { |
- assertTrue("ChromeTab is not in the proper selection state", |
+ && mActivityTestRule.getActivity().getTabModelSelector().isIncognitoSelected() |
+ == incognito) { |
+ Assert.assertTrue("ChromeTab is not in the proper selection state", |
tabStrip.isForegroundTab(tabView)); |
if (tabStrip.shouldCascadeTabs()) { |
- assertEquals("ChromeTab is not completely visible, but is selected. The selected " |
- + "tab should be visible when the CascadingStripStacker is in use.", |
- tabView.getVisiblePercentage(), 1.0f); |
+ Assert.assertEquals( |
+ "ChromeTab is not completely visible, but is selected. The selected " |
+ + "tab should be visible when the CascadingStripStacker is in use.", |
+ tabView.getVisiblePercentage(), 1.0f, 0); |
} |
} |
@@ -901,27 +1004,31 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* @param incognito Whether or not to check the incognito or normal TabStrip. |
*/ |
protected void compareTabStripWithModel(boolean incognito) throws ExecutionException { |
- TabModel model = getActivity().getTabModelSelector().getModel(incognito); |
- StripLayoutHelper strip = TabStripUtils.getStripLayoutHelper(getActivity(), incognito); |
- StripLayoutHelper activeStrip = TabStripUtils.getActiveStripLayoutHelper(getActivity()); |
- TabModel activeModel = getActivity().getCurrentTabModel(); |
+ TabModel model = mActivityTestRule.getActivity().getTabModelSelector().getModel(incognito); |
+ StripLayoutHelper strip = |
+ TabStripUtils.getStripLayoutHelper(mActivityTestRule.getActivity(), incognito); |
+ StripLayoutHelper activeStrip = |
+ TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()); |
+ TabModel activeModel = mActivityTestRule.getActivity().getCurrentTabModel(); |
if (activeModel.isIncognito() == incognito) { |
- assertEquals("TabStrip is not in the right visible state", strip, activeStrip); |
- assertEquals("TabStrip does not have the same number of views as the model", |
+ Assert.assertEquals("TabStrip is not in the right visible state", strip, activeStrip); |
+ Assert.assertEquals("TabStrip does not have the same number of views as the model", |
strip.getTabCount(), model.getCount()); |
} else { |
- assertTrue("TabStrip is not in the right visible state", model != activeModel); |
+ Assert.assertTrue("TabStrip is not in the right visible state", model != activeModel); |
} |
CompositorButton incognitoIndicator = |
- TabStripUtils.getStripLayoutHelperManager(getActivity()).getModelSelectorButton(); |
+ TabStripUtils.getStripLayoutHelperManager(mActivityTestRule.getActivity()) |
+ .getModelSelectorButton(); |
if (activeModel.isIncognito()) { |
- assertNotNull("Incognito indicator null in incognito mode", incognitoIndicator); |
- assertTrue("Incognito indicator not visible in incognito mode", |
+ Assert.assertNotNull("Incognito indicator null in incognito mode", incognitoIndicator); |
+ Assert.assertTrue("Incognito indicator not visible in incognito mode", |
incognitoIndicator.isVisible()); |
- } else if (getActivity().getTabModelSelector().getModel(true).getCount() == 0) { |
- assertFalse("Incognito indicator visible in non incognito mode", |
+ } else if (mActivityTestRule.getActivity().getTabModelSelector().getModel(true).getCount() |
+ == 0) { |
+ Assert.assertFalse("Incognito indicator visible in non incognito mode", |
incognitoIndicator.isVisible()); |
} |
@@ -947,36 +1054,38 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
*/ |
private void setShouldCascadeTabsAndCheckTabStrips(final boolean shouldCascadeTabs) |
throws ExecutionException { |
- TabModel model = getActivity().getCurrentTabModel(); |
+ TabModel model = mActivityTestRule.getActivity().getCurrentTabModel(); |
int selectedTabIndex = model.index(); |
ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
@Override |
public void run() { |
- TabStripUtils.getStripLayoutHelper(getActivity(), true).setShouldCascadeTabs( |
- shouldCascadeTabs); |
- TabStripUtils.getStripLayoutHelper(getActivity(), false).setShouldCascadeTabs( |
- shouldCascadeTabs); |
+ TabStripUtils.getStripLayoutHelper(mActivityTestRule.getActivity(), true) |
+ .setShouldCascadeTabs(shouldCascadeTabs); |
+ TabStripUtils.getStripLayoutHelper(mActivityTestRule.getActivity(), false) |
+ .setShouldCascadeTabs(shouldCascadeTabs); |
} |
}); |
// Assert that the correct StripStacker is being used. |
- assertEquals(shouldCascadeTabs |
- ? "Expected CascadingStripStacker but was ScrollingStripStacker." |
+ Assert.assertEquals(shouldCascadeTabs |
+ ? "Expected CascadingStripStacker but was ScrollingStripStacker." |
: "Expected ScrollingStripStacker but was CascadingStripStacker.", |
shouldCascadeTabs, |
- TabStripUtils.getActiveStripLayoutHelper(getActivity()).shouldCascadeTabs()); |
+ TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()) |
+ .shouldCascadeTabs()); |
// Assert that the same tab is still selected. |
- assertEquals("The correct tab is not selected.", selectedTabIndex, model.index()); |
+ Assert.assertEquals("The correct tab is not selected.", selectedTabIndex, model.index()); |
// Compare all TabStrips with corresponding TabModels. |
compareAllTabStripsWithModel(); |
// The selected tab should always be visible in the CascadingStripStacker and switching to |
// the ScrollingStripStacker should auto-scroll to make the selected tab visible. |
- StripLayoutTab selectedLayoutTab = TabStripUtils.findStripLayoutTab( |
- getActivity(), model.isIncognito(), model.getTabAt(selectedTabIndex).getId()); |
+ StripLayoutTab selectedLayoutTab = |
+ TabStripUtils.findStripLayoutTab(mActivityTestRule.getActivity(), |
+ model.isIncognito(), model.getTabAt(selectedTabIndex).getId()); |
assertTabVisibility(true, selectedLayoutTab); |
} |
@@ -986,7 +1095,8 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* @param scrollOffset The end scroll position for the tab strip. |
*/ |
private void assertSetTabStripScrollOffset(final int scrollOffset) throws ExecutionException { |
- final StripLayoutHelper strip = TabStripUtils.getActiveStripLayoutHelper(getActivity()); |
+ final StripLayoutHelper strip = |
+ TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()); |
ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
@Override |
public void run() { |
@@ -994,7 +1104,7 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
} |
}); |
- assertEquals("Tab strip scroll incorrect.", scrollOffset, strip.getScrollOffset()); |
+ Assert.assertEquals("Tab strip scroll incorrect.", scrollOffset, strip.getScrollOffset()); |
compareAllTabStripsWithModel(); |
} |
@@ -1003,13 +1113,14 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* @param isLeft Whether the left fade should be checked. |
*/ |
private void assertTabStripFadeFullyHidden(boolean isLeft) { |
- StripLayoutHelper strip = TabStripUtils.getActiveStripLayoutHelper(getActivity()); |
+ StripLayoutHelper strip = |
+ TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()); |
if (isLeft) { |
- assertEquals("Left tab strip fade visibility is incorrect.", 0.f, |
- strip.getLeftFadeOpacity()); |
+ Assert.assertEquals("Left tab strip fade visibility is incorrect.", 0.f, |
+ strip.getLeftFadeOpacity(), 0); |
} else { |
- assertEquals("Right tab strip fade visibility is incorrect.", 0.f, |
- strip.getRightFadeOpacity()); |
+ Assert.assertEquals("Right tab strip fade visibility is incorrect.", 0.f, |
+ strip.getRightFadeOpacity(), 0); |
} |
} |
@@ -1018,13 +1129,14 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* @param isLeft Whether the left fade should be checked. |
*/ |
private void assertTabStripFadeFullyVisible(boolean isLeft) { |
- StripLayoutHelper strip = TabStripUtils.getActiveStripLayoutHelper(getActivity()); |
+ StripLayoutHelper strip = |
+ TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()); |
if (isLeft) { |
- assertEquals("Left tab strip fade visibility is incorrect.", 1.f, |
- strip.getLeftFadeOpacity()); |
+ Assert.assertEquals("Left tab strip fade visibility is incorrect.", 1.f, |
+ strip.getLeftFadeOpacity(), 0); |
} else { |
- assertEquals("Right tab strip fade visibility is incorrect.", 1.f, |
- strip.getRightFadeOpacity()); |
+ Assert.assertEquals("Right tab strip fade visibility is incorrect.", 1.f, |
+ strip.getRightFadeOpacity(), 0); |
} |
} |
@@ -1033,16 +1145,17 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
* @param isLeft Whether the left fade should be checked. |
*/ |
private void assertTabStripFadePartiallyVisible(boolean isLeft) { |
- StripLayoutHelper strip = TabStripUtils.getActiveStripLayoutHelper(getActivity()); |
+ StripLayoutHelper strip = |
+ TabStripUtils.getActiveStripLayoutHelper(mActivityTestRule.getActivity()); |
if (isLeft) { |
boolean isPartiallyVisible = strip.getLeftFadeOpacity() > 0.f |
&& strip.getLeftFadeOpacity() < 1.f; |
- assertEquals("Left tab strip fade expected to be partially visible.", true, |
+ Assert.assertEquals("Left tab strip fade expected to be partially visible.", true, |
isPartiallyVisible); |
} else { |
boolean isPartiallyVisible = strip.getRightFadeOpacity() > 0.f |
&& strip.getRightFadeOpacity() < 1.f; |
- assertEquals("Right tab strip fade expected to be partially visible.", true, |
+ Assert.assertEquals("Right tab strip fade expected to be partially visible.", true, |
isPartiallyVisible); |
} |
} |
@@ -1057,9 +1170,9 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
private void assertTabVisibilityForScrollingStripStacker(final StripLayoutHelper tabStrip, |
final StripLayoutTab tabView) throws ExecutionException { |
// The visible percent for all tabs is 1.0 in the ScrollingStripStacker. |
- assertEquals("ChromeTab is not completely visible. All tabs should be visible when " |
- + "the ScrollingStripStacker is in use.", |
- tabView.getVisiblePercentage(), 1.0f); |
+ Assert.assertEquals("ChromeTab is not completely visible. All tabs should be visible when " |
+ + "the ScrollingStripStacker is in use.", |
+ tabView.getVisiblePercentage(), 1.0f, 0); |
// Only tabs that can currently be seen on the screen should be visible. |
Boolean shouldBeVisible = ThreadUtils.runOnUiThreadBlocking(new Callable<Boolean>() { |
@@ -1086,7 +1199,8 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
} |
}); |
- assertEquals("ChromeTab " + (shouldBeVisible ? "should" : "should not") + " be visible.", |
+ Assert.assertEquals( |
+ "ChromeTab " + (shouldBeVisible ? "should" : "should not") + " be visible.", |
shouldBeVisible, isVisible); |
} |
@@ -1105,21 +1219,22 @@ public class TabStripTest extends ChromeTabbedActivityTestBase { |
} |
}); |
- assertEquals("Incorrect draw position for tab at " + index, expectedDrawX, tabDrawX); |
+ Assert.assertEquals( |
+ "Incorrect draw position for tab at " + index, expectedDrawX, tabDrawX, 0); |
} |
/** |
* Asserts that we get the keyboard status to be shown or hidden. |
* @param expectsShown Whether shown status is expected. |
- * @throws InterruptedException |
*/ |
private void assertWaitForKeyboardStatus(final boolean expectsShown) { |
CriteriaHelper.pollInstrumentationThread(new Criteria() { |
@Override |
public boolean isSatisfied() { |
updateFailureReason("expectsShown: " + expectsShown); |
- return expectsShown == UiUtils.isKeyboardShowing(getActivity(), |
- getActivity().getActivityTab().getView()); |
+ return expectsShown |
+ == UiUtils.isKeyboardShowing(mActivityTestRule.getActivity(), |
+ mActivityTestRule.getActivity().getActivityTab().getView()); |
} |
}); |
} |