| Index: chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java
|
| index 77ab29e38797e83adc7a00029a766868d828018a..5878c7e1ea87420076551aaee5944d5188eae7b8 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java
|
| @@ -12,6 +12,7 @@ import android.content.IntentFilter;
|
| import android.content.pm.PackageInfo;
|
| import android.content.pm.PackageManager;
|
| import android.graphics.Bitmap;
|
| +import android.support.test.InstrumentationRegistry;
|
| import android.support.test.filters.MediumTest;
|
| import android.support.test.filters.SmallTest;
|
| import android.test.mock.MockPackageManager;
|
| @@ -20,10 +21,19 @@ import android.view.View;
|
| import android.widget.Button;
|
| import android.widget.TextView;
|
|
|
| +import org.junit.After;
|
| +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.metrics.RecordHistogram;
|
| +import org.chromium.base.test.util.CommandLineFlags;
|
| import org.chromium.base.test.util.Feature;
|
| import org.chromium.chrome.R;
|
| +import org.chromium.chrome.browser.ChromeSwitches;
|
| import org.chromium.chrome.browser.ShortcutHelper;
|
| import org.chromium.chrome.browser.engagement.SiteEngagementService;
|
| import org.chromium.chrome.browser.infobar.AppBannerInfoBarAndroid;
|
| @@ -35,7 +45,9 @@ import org.chromium.chrome.browser.infobar.InfoBarContainerLayout.Item;
|
| import org.chromium.chrome.browser.profiles.Profile;
|
| import org.chromium.chrome.browser.tab.Tab;
|
| import org.chromium.chrome.browser.webapps.WebappDataStorage;
|
| -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.InfoBarUtil;
|
| import org.chromium.chrome.test.util.browser.TabLoadObserver;
|
| import org.chromium.chrome.test.util.browser.TabTitleObserver;
|
| @@ -53,7 +65,13 @@ import java.util.concurrent.Callable;
|
| /**
|
| * Tests the app banners.
|
| */
|
| -public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| +@RunWith(ChromeJUnit4ClassRunner.class)
|
| +@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
|
| + ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG})
|
| +public class AppBannerManagerTest {
|
| + @Rule
|
| + public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
|
| +
|
| private static final String NATIVE_APP_PATH =
|
| "/chrome/test/data/banners/play_app_test_page.html";
|
|
|
| @@ -148,7 +166,7 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
|
|
| @Override
|
| public void updateSplashScreenImage(String splashScreenImage) {
|
| - assertNull(mSplashImage);
|
| + Assert.assertNull(mSplashImage);
|
| mSplashImage = splashScreenImage;
|
| }
|
| }
|
| @@ -174,13 +192,8 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| private EmbeddedTestServer mTestServer;
|
| private String mWebAppUrl;
|
|
|
| - @Override
|
| - public void startMainActivity() throws InterruptedException {
|
| - startMainActivityOnBlankPage();
|
| - }
|
| -
|
| - @Override
|
| - protected void setUp() throws Exception {
|
| + @Before
|
| + public void setUp() throws Exception {
|
| mPackageManager = new TestPackageManager();
|
| AppBannerManager.setIsSupported(true);
|
| AppBannerInfoBarDelegateAndroid.setPackageManagerForTesting(mPackageManager);
|
| @@ -191,8 +204,7 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| }
|
| });
|
|
|
| - super.setUp();
|
| -
|
| + mActivityTestRule.startMainActivityOnBlankPage();
|
| // Must be set after native has loaded.
|
| mDetailsDelegate = new MockAppDetailsDelegate();
|
| ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| @@ -203,15 +215,15 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| });
|
|
|
| AppBannerManager.setTotalEngagementForTesting(10);
|
| - mTestServer = EmbeddedTestServer.createAndStartServer(getInstrumentation().getContext());
|
| + mTestServer = EmbeddedTestServer.createAndStartServer(
|
| + InstrumentationRegistry.getInstrumentation().getContext());
|
| mNativeAppUrl = mTestServer.getURL(NATIVE_APP_PATH);
|
| mWebAppUrl = mTestServer.getURL(WEB_APP_PATH);
|
| }
|
|
|
| - @Override
|
| - protected void tearDown() throws Exception {
|
| + @After
|
| + public void tearDown() throws Exception {
|
| mTestServer.stopAndDestroyServer();
|
| - super.tearDown();
|
| }
|
|
|
| private void resetEngagementForUrl(final String url, final double engagement) {
|
| @@ -228,7 +240,8 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| CriteriaHelper.pollUiThread(new Criteria() {
|
| @Override
|
| public boolean isSatisfied() {
|
| - AppBannerManager manager = getActivity().getActivityTab().getAppBannerManager();
|
| + AppBannerManager manager =
|
| + mActivityTestRule.getActivity().getActivityTab().getAppBannerManager();
|
| return mDetailsDelegate.mNumRetrieved == numExpected
|
| && !manager.isActiveForTesting();
|
| }
|
| @@ -239,7 +252,7 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| CriteriaHelper.pollUiThread(new Criteria() {
|
| @Override
|
| public boolean isSatisfied() {
|
| - List<InfoBar> infobars = getInfoBars();
|
| + List<InfoBar> infobars = mActivityTestRule.getInfoBars();
|
| if (infobars.size() != 1) return false;
|
| if (!(infobars.get(0) instanceof AppBannerInfoBarAndroid)) return false;
|
|
|
| @@ -254,17 +267,20 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| private void runFullNativeInstallPathway(String url, String expectedReferrer) throws Exception {
|
| // Visit a site that requests a banner.
|
| resetEngagementForUrl(url, 0);
|
| - new TabLoadObserver(getActivity().getActivityTab()).fullyLoadUrl(url, PageTransition.TYPED);
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| + .fullyLoadUrl(url, PageTransition.TYPED);
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
|
|
| // Update engagement, then revisit the page to get the banner to appear.
|
| resetEngagementForUrl(url, 10);
|
| - InfoBarContainer container = getActivity().getActivityTab().getInfoBarContainer();
|
| + InfoBarContainer container =
|
| + mActivityTestRule.getActivity().getActivityTab().getInfoBarContainer();
|
| final InfobarListener listener = new InfobarListener();
|
| container.addAnimationListener(listener);
|
| - new TabLoadObserver(getActivity().getActivityTab()).fullyLoadUrl(url, PageTransition.TYPED);
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| + .fullyLoadUrl(url, PageTransition.TYPED);
|
| waitUntilAppDetailsRetrieved(1);
|
| - assertEquals(mDetailsDelegate.mReferrer, expectedReferrer);
|
| + Assert.assertEquals(mDetailsDelegate.mReferrer, expectedReferrer);
|
| waitUntilAppBannerInfoBarAppears(NATIVE_APP_TITLE);
|
| CriteriaHelper.pollUiThread(new Criteria() {
|
| @Override
|
| @@ -277,22 +293,24 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| InfoBar infobar = container.getInfoBarsForTesting().get(0);
|
| final Button button =
|
| (Button) infobar.getView().findViewById(R.id.button_primary);
|
| - assertEquals(NATIVE_APP_INSTALL_TEXT, button.getText());
|
| + Assert.assertEquals(NATIVE_APP_INSTALL_TEXT, button.getText());
|
|
|
| // Click the button to trigger the install.
|
| final ActivityMonitor activityMonitor = new ActivityMonitor(
|
| new IntentFilter(INSTALL_ACTION), new ActivityResult(Activity.RESULT_OK, null),
|
| true);
|
| - getInstrumentation().addMonitor(activityMonitor);
|
| + InstrumentationRegistry.getInstrumentation().addMonitor(activityMonitor);
|
| TouchCommon.singleClickView(button);
|
|
|
| // Wait for the infobar to register that the app is installing.
|
| final String installingText =
|
| - getInstrumentation().getTargetContext().getString(R.string.app_banner_installing);
|
| + InstrumentationRegistry.getInstrumentation().getTargetContext().getString(
|
| + R.string.app_banner_installing);
|
| CriteriaHelper.pollInstrumentationThread(new Criteria() {
|
| @Override
|
| public boolean isSatisfied() {
|
| - return getInstrumentation().checkMonitorHit(activityMonitor, 1)
|
| + return InstrumentationRegistry.getInstrumentation().checkMonitorHit(
|
| + activityMonitor, 1)
|
| && TextUtils.equals(button.getText(), installingText);
|
| }
|
| });
|
| @@ -300,7 +318,8 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| // Say that the package is installed. Infobar should say that the app is ready to open.
|
| mPackageManager.isInstalled = true;
|
| final String openText =
|
| - getInstrumentation().getTargetContext().getString(R.string.app_banner_open);
|
| + InstrumentationRegistry.getInstrumentation().getTargetContext().getString(
|
| + R.string.app_banner_open);
|
| CriteriaHelper.pollInstrumentationThread(new Criteria() {
|
| @Override
|
| public boolean isSatisfied() {
|
| @@ -313,30 +332,35 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| throws Exception {
|
| // Visit the site in a new tab.
|
| resetEngagementForUrl(url, 0);
|
| - loadUrlInNewTab("about:blank");
|
| - new TabLoadObserver(getActivity().getActivityTab()).fullyLoadUrl(url, PageTransition.TYPED);
|
| + mActivityTestRule.loadUrlInNewTab("about:blank");
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| + .fullyLoadUrl(url, PageTransition.TYPED);
|
|
|
| CriteriaHelper.pollUiThread(new Criteria() {
|
| @Override
|
| public boolean isSatisfied() {
|
| - AppBannerManager manager = getActivity().getActivityTab().getAppBannerManager();
|
| + AppBannerManager manager =
|
| + mActivityTestRule.getActivity().getActivityTab().getAppBannerManager();
|
| return !manager.isActiveForTesting();
|
| }
|
| });
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
|
|
| // Add the animation listener in.
|
| - InfoBarContainer container = getActivity().getActivityTab().getInfoBarContainer();
|
| + InfoBarContainer container =
|
| + mActivityTestRule.getActivity().getActivityTab().getInfoBarContainer();
|
| final InfobarListener listener = new InfobarListener();
|
| container.addAnimationListener(listener);
|
|
|
| // Update engagement, then revisit the page to get the banner to appear.
|
| resetEngagementForUrl(url, 10);
|
| - new TabLoadObserver(getActivity().getActivityTab()).fullyLoadUrl(url, PageTransition.TYPED);
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| + .fullyLoadUrl(url, PageTransition.TYPED);
|
| CriteriaHelper.pollUiThread(new Criteria() {
|
| @Override
|
| public boolean isSatisfied() {
|
| - AppBannerManager manager = getActivity().getActivityTab().getAppBannerManager();
|
| + AppBannerManager manager =
|
| + mActivityTestRule.getActivity().getActivityTab().getAppBannerManager();
|
| return !manager.isActiveForTesting();
|
| }
|
| });
|
| @@ -357,12 +381,14 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| TouchCommon.singleClickView(button);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"AppBanners"})
|
| public void testFullNativeInstallPathwayFromId() throws Exception {
|
| runFullNativeInstallPathway(mNativeAppUrl, NATIVE_APP_BLANK_REFERRER);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"AppBanners"})
|
| public void testFullNativeInstallPathwayFromUrl() throws Exception {
|
| @@ -370,50 +396,52 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| mTestServer.getURL(NATIVE_APP_URL_WITH_MANIFEST_PATH), NATIVE_APP_REFERRER);
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"AppBanners"})
|
| public void testBannerAppearsThenDoesNotAppearAgainForWeeks() throws Exception {
|
| // Visit a site that requests a banner.
|
| resetEngagementForUrl(mNativeAppUrl, 0);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mNativeAppUrl, PageTransition.TYPED);
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
|
|
| // Update engagement, then revisit the page.
|
| resetEngagementForUrl(mNativeAppUrl, 10);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mNativeAppUrl, PageTransition.TYPED);
|
| waitUntilAppDetailsRetrieved(1);
|
| waitUntilAppBannerInfoBarAppears(NATIVE_APP_TITLE);
|
|
|
| // Revisit the page to make the banner go away, but don't explicitly dismiss it.
|
| // This hides the banner for two weeks.
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mNativeAppUrl, PageTransition.TYPED);
|
| waitUntilAppDetailsRetrieved(2);
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
|
|
| // Wait a week until revisiting the page.
|
| AppBannerManager.setTimeDeltaForTesting(7);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mNativeAppUrl, PageTransition.TYPED);
|
| waitUntilAppDetailsRetrieved(3);
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
|
|
| AppBannerManager.setTimeDeltaForTesting(8);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mNativeAppUrl, PageTransition.TYPED);
|
| waitUntilAppDetailsRetrieved(4);
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
|
|
| // Wait two weeks until revisiting the page, which should pop up the banner.
|
| AppBannerManager.setTimeDeltaForTesting(15);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mNativeAppUrl, PageTransition.TYPED);
|
| waitUntilAppDetailsRetrieved(5);
|
| waitUntilAppBannerInfoBarAppears(NATIVE_APP_TITLE);
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"AppBanners"})
|
| public void testBannerAppearsThenDoesNotAppearAgainForCustomTime() throws Exception {
|
| @@ -422,32 +450,34 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
|
|
| // Revisit the page to make the banner go away, but don't explicitly dismiss it.
|
| // This hides the banner for two weeks.
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mWebAppUrl, PageTransition.TYPED);
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
|
|
| // Wait a week until revisiting the page. This should allow the banner.
|
| AppBannerManager.setTimeDeltaForTesting(7);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mWebAppUrl, PageTransition.TYPED);
|
| waitUntilAppBannerInfoBarAppears(WEB_APP_TITLE);
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"AppBanners"})
|
| public void testBlockedBannerDoesNotAppearAgainForMonths() throws Exception {
|
| // Visit a site that requests a banner.
|
| resetEngagementForUrl(mNativeAppUrl, 0);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mNativeAppUrl, PageTransition.TYPED);
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
|
|
| // Update engagement, then revisit the page.
|
| resetEngagementForUrl(mNativeAppUrl, 10);
|
| - InfoBarContainer container = getActivity().getActivityTab().getInfoBarContainer();
|
| + InfoBarContainer container =
|
| + mActivityTestRule.getActivity().getActivityTab().getInfoBarContainer();
|
| final InfobarListener listener = new InfobarListener();
|
| container.addAnimationListener(listener);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mNativeAppUrl, PageTransition.TYPED);
|
| waitUntilAppDetailsRetrieved(1);
|
| waitUntilAppBannerInfoBarAppears(NATIVE_APP_TITLE);
|
| @@ -462,29 +492,30 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| ArrayList<InfoBar> infobars = container.getInfoBarsForTesting();
|
| View close = infobars.get(0).getView().findViewById(R.id.infobar_close_button);
|
| TouchCommon.singleClickView(close);
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
|
|
| // Waiting two months shouldn't be long enough.
|
| AppBannerManager.setTimeDeltaForTesting(61);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mNativeAppUrl, PageTransition.TYPED);
|
| waitUntilAppDetailsRetrieved(2);
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
|
|
| AppBannerManager.setTimeDeltaForTesting(62);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mNativeAppUrl, PageTransition.TYPED);
|
| waitUntilAppDetailsRetrieved(3);
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
|
|
| // Waiting three months should allow banners to reappear.
|
| AppBannerManager.setTimeDeltaForTesting(91);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mNativeAppUrl, PageTransition.TYPED);
|
| waitUntilAppDetailsRetrieved(4);
|
| waitUntilAppBannerInfoBarAppears(NATIVE_APP_TITLE);
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"AppBanners"})
|
| public void testBlockedBannerDoesNotAppearAgainForCustomTime() throws Exception {
|
| @@ -492,10 +523,11 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
|
|
| // Update engagement, then visit a page which triggers a banner.
|
| resetEngagementForUrl(mWebAppUrl, 10);
|
| - InfoBarContainer container = getActivity().getActivityTab().getInfoBarContainer();
|
| + InfoBarContainer container =
|
| + mActivityTestRule.getActivity().getActivityTab().getInfoBarContainer();
|
| final InfobarListener listener = new InfobarListener();
|
| container.addAnimationListener(listener);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mWebAppUrl, PageTransition.TYPED);
|
| waitUntilAppBannerInfoBarAppears(WEB_APP_TITLE);
|
|
|
| @@ -509,22 +541,23 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| ArrayList<InfoBar> infobars = container.getInfoBarsForTesting();
|
| View close = infobars.get(0).getView().findViewById(R.id.infobar_close_button);
|
| TouchCommon.singleClickView(close);
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
|
|
| // Waiting seven days should be long enough.
|
| AppBannerManager.setTimeDeltaForTesting(7);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mWebAppUrl, PageTransition.TYPED);
|
| waitUntilAppBannerInfoBarAppears(WEB_APP_TITLE);
|
| }
|
|
|
| + @Test
|
| @MediumTest
|
| @Feature({"AppBanners"})
|
| public void testBitmapFetchersCanOverlapWithoutCrashing() throws Exception {
|
| // Visit a site that requests a banner rapidly and repeatedly.
|
| resetEngagementForUrl(mNativeAppUrl, 10);
|
| for (int i = 1; i <= 10; i++) {
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mNativeAppUrl, PageTransition.TYPED);
|
|
|
| final Integer iteration = Integer.valueOf(i);
|
| @@ -537,6 +570,7 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| }
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"AppBanners"})
|
| public void testWebAppBannerAppears() throws Exception {
|
| @@ -546,20 +580,22 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| ThreadUtils.runOnUiThread(new Runnable() {
|
| @Override
|
| public void run() {
|
| - AppBannerManager manager = getActivity().getActivityTab().getAppBannerManager();
|
| + AppBannerManager manager =
|
| + mActivityTestRule.getActivity().getActivityTab().getAppBannerManager();
|
| manager.recordMenuItemAddToHomescreen();
|
| - assertEquals(1,
|
| + Assert.assertEquals(1,
|
| RecordHistogram.getHistogramValueCountForTesting(
|
| "Webapp.InstallabilityCheckStatus.MenuItemAddToHomescreen", 5));
|
|
|
| manager.recordMenuOpen();
|
| - assertEquals(1,
|
| + Assert.assertEquals(1,
|
| RecordHistogram.getHistogramValueCountForTesting(
|
| "Webapp.InstallabilityCheckStatus.MenuOpen", 5));
|
| }
|
| });
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"AppBanners"})
|
| public void testWebAppBannerDoesNotAppearAfterInstall() throws Exception {
|
| @@ -567,11 +603,12 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
|
|
| // The banner should not reshow after the site has been installed.
|
| AppBannerManager.setTimeDeltaForTesting(100);
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mWebAppUrl, PageTransition.TYPED);
|
| - InfoBarUtil.waitUntilNoInfoBarsExist(getInfoBars());
|
| + InfoBarUtil.waitUntilNoInfoBarsExist(mActivityTestRule.getInfoBars());
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"AppBanners"})
|
| public void testBannerFallsBackToShortName() throws Exception {
|
| @@ -580,56 +617,62 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| WEB_APP_SHORT_TITLE, false);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"AppBanners"})
|
| public void testAppInstalledEvent() throws Exception {
|
| triggerWebAppBanner(mWebAppUrl, WEB_APP_TITLE, true);
|
|
|
| // The appinstalled event should fire (and cause the title to change).
|
| - Tab tab = getActivity().getActivityTab();
|
| + Tab tab = mActivityTestRule.getActivity().getActivityTab();
|
| new TabTitleObserver(tab, "Got appinstalled").waitForTitleUpdate(3);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"AppBanners"})
|
| public void testBannerAppearsImmediatelyWithSufficientEngagement() throws Exception {
|
| // Visit the site in a new tab with sufficient engagement and verify it appears.
|
| resetEngagementForUrl(mWebAppUrl, 10);
|
| - loadUrlInNewTab("about:blank");
|
| + mActivityTestRule.loadUrlInNewTab("about:blank");
|
|
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mWebAppUrl, PageTransition.TYPED);
|
|
|
| CriteriaHelper.pollUiThread(new Criteria() {
|
| @Override
|
| public boolean isSatisfied() {
|
| - AppBannerManager manager = getActivity().getActivityTab().getAppBannerManager();
|
| + AppBannerManager manager =
|
| + mActivityTestRule.getActivity().getActivityTab().getAppBannerManager();
|
| return !manager.isActiveForTesting();
|
| }
|
| });
|
| waitUntilAppBannerInfoBarAppears(WEB_APP_TITLE);
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"AppBanners"})
|
| public void testBannerDoesNotAppearInIncognito() throws Exception {
|
| // Visit the site in an incognito tab and verify it doesn't appear.
|
| resetEngagementForUrl(mWebAppUrl, 10);
|
| - loadUrlInNewTab("about:blank", true);
|
| + mActivityTestRule.loadUrlInNewTab("about:blank", true);
|
|
|
| - new TabLoadObserver(getActivity().getActivityTab())
|
| + new TabLoadObserver(mActivityTestRule.getActivity().getActivityTab())
|
| .fullyLoadUrl(mWebAppUrl, PageTransition.TYPED);
|
|
|
| CriteriaHelper.pollUiThread(new Criteria() {
|
| @Override
|
| public boolean isSatisfied() {
|
| - AppBannerManager manager = getActivity().getActivityTab().getAppBannerManager();
|
| + AppBannerManager manager =
|
| + mActivityTestRule.getActivity().getActivityTab().getAppBannerManager();
|
| return !manager.isActiveForTesting();
|
| }
|
| });
|
| - assertTrue(getInfoBars().isEmpty());
|
| + Assert.assertTrue(mActivityTestRule.getInfoBars().isEmpty());
|
| }
|
|
|
| + @Test
|
| @SmallTest
|
| @Feature({"AppBanners"})
|
| public void testWebAppSplashscreenIsDownloaded() throws Exception {
|
| @@ -648,10 +691,10 @@ public class AppBannerManagerTest extends ChromeTabbedActivityTestBase {
|
| });
|
|
|
| // Test that bitmap sizes match expectations.
|
| - int idealSize = getActivity().getResources().getDimensionPixelSize(
|
| + int idealSize = mActivityTestRule.getActivity().getResources().getDimensionPixelSize(
|
| R.dimen.webapp_splash_image_size_ideal);
|
| Bitmap splashImage = ShortcutHelper.decodeBitmapFromString(dataStorageFactory.mSplashImage);
|
| - assertEquals(idealSize, splashImage.getWidth());
|
| - assertEquals(idealSize, splashImage.getHeight());
|
| + Assert.assertEquals(idealSize, splashImage.getWidth());
|
| + Assert.assertEquals(idealSize, splashImage.getHeight());
|
| }
|
| }
|
|
|