Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(562)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java

Issue 1139643006: Rename chrome/android/javatests to javatests_shell. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
deleted file mode 100644
index 538c34bd5c8b97d5eb334f83392e09b42c913353..0000000000000000000000000000000000000000
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/banners/AppBannerManagerTest.java
+++ /dev/null
@@ -1,347 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.chrome.browser.banners;
-
-import android.net.Uri;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.text.TextUtils;
-import android.view.View;
-import android.widget.TextView;
-
-import org.chromium.base.ThreadUtils;
-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.infobar.AnimationHelper;
-import org.chromium.chrome.browser.infobar.AppBannerInfoBar;
-import org.chromium.chrome.browser.infobar.InfoBar;
-import org.chromium.chrome.browser.infobar.InfoBarContainer;
-import org.chromium.chrome.shell.ChromeShellTestBase;
-import org.chromium.chrome.test.util.TestHttpServerClient;
-import org.chromium.chrome.test.util.browser.TabLoadObserver;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
-import org.chromium.content.browser.test.util.TouchCommon;
-
-import java.util.ArrayList;
-
-/**
- * Tests the app banners.
- */
-@CommandLineFlags.Add(ChromeSwitches.ENABLE_APP_INSTALL_ALERTS)
-public class AppBannerManagerTest extends ChromeShellTestBase {
- private static final String NATIVE_APP_URL =
- TestHttpServerClient.getUrl("chrome/test/data/banners/play_app_test_page.html");
-
- private static final String NATIVE_ICON_URL =
- TestHttpServerClient.getUrl("chrome/test/data/banners/launcher-icon-1x.png");
-
- private static final String NATIVE_APP_TITLE = "Mock app title";
-
- private static final String WEB_APP_URL =
- TestHttpServerClient.getUrl("chrome/test/data/banners/manifest_test_page.html");
-
- private static final String WEB_APP_TITLE = "Manifest test app";
-
- private static class MockAppDetailsDelegate extends AppDetailsDelegate {
- private Observer mObserver;
- private AppData mAppData;
- private int mNumRetrieved;
-
- @Override
- protected void getAppDetailsAsynchronously(
- Observer observer, String url, String packageName, int iconSize) {
- mNumRetrieved += 1;
- mObserver = observer;
- mAppData = new AppData(url, packageName);
- mAppData.setPackageInfo(
- NATIVE_APP_TITLE, NATIVE_ICON_URL, 4.5f, "Install this", null, null);
- ThreadUtils.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- mObserver.onAppDetailsRetrieved(mAppData);
- }
- });
- }
-
- @Override
- public void destroy() {
- }
- }
-
- private static class InfobarListener implements InfoBarContainer.InfoBarAnimationListener {
- private boolean mDoneAnimating;
-
- @Override
- public void notifyAnimationFinished(int animationType) {
- if (animationType == AnimationHelper.ANIMATION_TYPE_SHOW) mDoneAnimating = true;
- }
- }
-
- private MockAppDetailsDelegate mDetailsDelegate;
-
- @Override
- protected void setUp() throws Exception {
- mDetailsDelegate = new MockAppDetailsDelegate();
- AppBannerManager.setAppDetailsDelegate(mDetailsDelegate);
- AppBannerManager.setIsEnabledForTesting(true);
- clearAppData();
-
- super.setUp();
-
- launchChromeShellWithUrl("about:blank");
- assertTrue(waitForActiveShellToBeDoneLoading());
- AppBannerManager.disableSecureSchemeCheckForTesting();
- }
-
- private boolean waitUntilNoInfoBarsExist() throws Exception {
- return CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- InfoBarContainer container = getActivity().getActiveTab().getInfoBarContainer();
- return container.getInfoBars().size() == 0;
- }
- });
- }
-
- private boolean waitUntilAppDetailsRetrieved(final int numExpected) throws Exception {
- return CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- AppBannerManager manager =
- getActivity().getActiveTab().getAppBannerManagerForTesting();
- return mDetailsDelegate.mNumRetrieved == numExpected
- && !manager.isFetcherActiveForTesting();
- }
- });
- }
-
- private boolean waitUntilAppBannerInfoBarAppears(final String title) throws Exception {
- return CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- InfoBarContainer container = getActivity().getActiveTab().getInfoBarContainer();
- ArrayList<InfoBar> infobars = container.getInfoBars();
- if (infobars.size() != 1) return false;
- if (!(infobars.get(0) instanceof AppBannerInfoBar)) return false;
-
- TextView textView =
- (TextView) infobars.get(0).getContentWrapper().findViewById(R.id.app_name);
- if (textView == null) return false;
- return TextUtils.equals(textView.getText(), title);
- }
- });
- }
-
- @SmallTest
- @Feature({"AppBanners"})
- public void testBannerAppears() throws Exception {
- // Visit a site that requests a banner.
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(1));
- assertTrue(waitUntilNoInfoBarsExist());
-
- // Indicate a day has passed, then revisit the page.
- AppBannerManager.setTimeDeltaForTesting(1);
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(2));
- assertTrue(waitUntilAppBannerInfoBarAppears(NATIVE_APP_TITLE));
- }
-
- @MediumTest
- @Feature({"AppBanners"})
- public void testBannerAppearsThenDoesNotAppearAgainForMonths() throws Exception {
- // Visit a site that requests a banner.
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(1));
- assertTrue(waitUntilNoInfoBarsExist());
-
- // Indicate a day has passed, then revisit the page.
- AppBannerManager.setTimeDeltaForTesting(1);
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(2));
- assertTrue(waitUntilAppBannerInfoBarAppears(NATIVE_APP_TITLE));
-
- // Revisit the page to make the banner go away, but don't explicitly dismiss it.
- // This hides the banner for a few months.
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(3));
- assertTrue(waitUntilNoInfoBarsExist());
-
- // Wait a month until revisiting the page.
- AppBannerManager.setTimeDeltaForTesting(31);
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(4));
- assertTrue(waitUntilNoInfoBarsExist());
-
- AppBannerManager.setTimeDeltaForTesting(32);
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(5));
- assertTrue(waitUntilNoInfoBarsExist());
-
- // Wait two months until revisiting the page, which should pop up the banner.
- AppBannerManager.setTimeDeltaForTesting(61);
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(6));
- assertTrue(waitUntilNoInfoBarsExist());
-
- AppBannerManager.setTimeDeltaForTesting(62);
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(7));
- assertTrue(waitUntilAppBannerInfoBarAppears(NATIVE_APP_TITLE));
- }
-
- @MediumTest
- @Feature({"AppBanners"})
- public void testBlockedBannerDoesNotAppearAgainForMonths() throws Exception {
- // Visit a site that requests a banner.
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(1));
- assertTrue(waitUntilNoInfoBarsExist());
-
- // Indicate a day has passed, then revisit the page.
- InfoBarContainer container = getActivity().getActiveTab().getInfoBarContainer();
- final InfobarListener listener = new InfobarListener();
- container.setAnimationListener(listener);
- AppBannerManager.setTimeDeltaForTesting(1);
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(2));
- assertTrue(waitUntilAppBannerInfoBarAppears(NATIVE_APP_TITLE));
-
- // Explicitly dismiss the banner.
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- return listener.mDoneAnimating;
- }
- }));
- ArrayList<InfoBar> infobars = container.getInfoBars();
- View close = infobars.get(0).getContentWrapper().findViewById(R.id.infobar_close_button);
- TouchCommon.singleClickView(close);
- assertTrue(waitUntilNoInfoBarsExist());
-
- // Waiting two months shouldn't be long enough.
- AppBannerManager.setTimeDeltaForTesting(61);
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(3));
- assertTrue(waitUntilNoInfoBarsExist());
-
- AppBannerManager.setTimeDeltaForTesting(62);
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(4));
- assertTrue(waitUntilNoInfoBarsExist());
-
- // Waiting three months should allow banners to reappear.
- AppBannerManager.setTimeDeltaForTesting(91);
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(5));
- assertTrue(waitUntilNoInfoBarsExist());
-
- AppBannerManager.setTimeDeltaForTesting(92);
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
- assertTrue(waitUntilAppDetailsRetrieved(6));
- assertTrue(waitUntilAppBannerInfoBarAppears(NATIVE_APP_TITLE));
- }
-
- @MediumTest
- @Feature({"AppBanners"})
- public void testBitmapFetchersCanOverlapWithoutCrashing() throws Exception {
- // Visit a site that requests a banner rapidly and repeatedly.
- for (int i = 1; i <= 10; i++) {
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), NATIVE_APP_URL)));
-
- final Integer iteration = Integer.valueOf(i);
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- return mDetailsDelegate.mNumRetrieved == iteration;
- }
- }));
- }
- }
-
- @SmallTest
- @Feature({"AppBanners"})
- public void testWebAppBannerAppears() throws Exception {
- // Create a Tab that doesn't have the AppBannerManager enabled. This prevents race
- // conditions between service worker activation and AppBannerManager getting triggered.
- // This race condition is a known problem, which is why the specs include wiggle room for
- // how many times a site must be visited.
- 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.
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), WEB_APP_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);
-
- // Revisit the site in a new tab, which will have the AppBannerManager enabled.
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- getActivity().createTab("about:blank");
- }
- });
- assertTrue(waitForActiveShellToBeDoneLoading());
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(
- new TabLoadObserver(getActivity().getActiveTab(), WEB_APP_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_URL)));
- assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- AppBannerManager manager =
- getActivity().getActiveTab().getAppBannerManagerForTesting();
- return !manager.isFetcherActiveForTesting();
- }
- }));
- assertTrue(waitUntilAppBannerInfoBarAppears(WEB_APP_TITLE));
- }
-}

Powered by Google App Engine
This is Rietveld 408576698