Index: chrome/android/javatests_shell/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java |
diff --git a/chrome/android/javatests_shell/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java b/chrome/android/javatests_shell/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java |
index 6107c0b6c2a7a771597f47cff6739b5742fa2905..46f531eb0a9a73e3ff0f151234543c6714b86be7 100644 |
--- a/chrome/android/javatests_shell/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java |
+++ b/chrome/android/javatests_shell/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java |
@@ -63,6 +63,9 @@ public class AppBannerManagerTest extends ChromeShellTestBase { |
private static final String INSTALL_ACTION = "INSTALL_ACTION"; |
+ private static final String WEB_APP_NO_META_VIEWPORT_URL = |
+ TestHttpServerClient.getUrl("chrome/test/data/banners/no_meta_viewport_test_page.html"); |
+ |
private static class MockAppDetailsDelegate extends AppDetailsDelegate { |
private Observer mObserver; |
private AppData mAppData; |
@@ -427,4 +430,64 @@ public class AppBannerManagerTest extends ChromeShellTestBase { |
})); |
assertTrue(waitUntilAppBannerInfoBarAppears(WEB_APP_TITLE)); |
} |
+ |
+ @SmallTest |
+ @Feature({"AppBanners"}) |
+ public void testWebAppBannerBlockedWithoutMetaViewport() throws Exception { |
+ AppBannerManager.setIsEnabledForTesting(false); |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ getActivity().createTab("about:blank"); |
+ } |
+ }); |
+ assertTrue(waitForActiveShellToBeDoneLoading()); |
+ |
+ // Visit a site that can have a banner, then wait until the service worker is activated. |
gone
2015/05/27 22:53:34
This should just be refactored instead of copied o
|
+ assertTrue(CriteriaHelper.pollForUIThreadCriteria( |
+ new TabLoadObserver(getActivity().getActiveTab(), WEB_APP_NO_META_VIEWPORT_URL))); |
+ assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() { |
+ @Override |
+ public boolean isSatisfied() { |
+ String url = getActivity().getActiveTab().getUrl(); |
+ Uri uri = Uri.parse(url); |
+ return TextUtils.equals(uri.getFragment(), "sw_activated"); |
+ } |
+ })); |
+ AppBannerManager.setIsEnabledForTesting(true); |
+ |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ getActivity().createTab("about:blank"); |
+ } |
+ }); |
+ assertTrue(waitForActiveShellToBeDoneLoading()); |
+ assertTrue(CriteriaHelper.pollForUIThreadCriteria( |
+ new TabLoadObserver(getActivity().getActiveTab(), WEB_APP_NO_META_VIEWPORT_URL))); |
+ |
+ assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() { |
+ @Override |
+ public boolean isSatisfied() { |
+ AppBannerManager manager = |
+ getActivity().getActiveTab().getAppBannerManagerForTesting(); |
+ return !manager.isFetcherActiveForTesting(); |
+ } |
+ })); |
+ assertTrue(waitUntilNoInfoBarsExist()); |
+ |
+ // Indicate a day has passed, then revisit the page to show the banner. |
+ AppBannerManager.setTimeDeltaForTesting(1); |
+ assertTrue(CriteriaHelper.pollForUIThreadCriteria( |
+ new TabLoadObserver(getActivity().getActiveTab(), WEB_APP_NO_META_VIEWPORT_URL))); |
+ assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() { |
+ @Override |
+ public boolean isSatisfied() { |
+ AppBannerManager manager = |
+ getActivity().getActiveTab().getAppBannerManagerForTesting(); |
+ return !manager.isFetcherActiveForTesting(); |
+ } |
+ })); |
+ assertTrue(waitUntilNoInfoBarsExist()); |
+ } |
} |