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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelperTest.java

Issue 1505913003: Add update menu item and app menu icon badge (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add code create 1dp transparent border in LocatoinBarPhone Created 5 years 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/omaha/UpdateMenuItemHelperTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelperTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..0e5ff458e3a481be4a1fb5af0644c3e87c0a8cbe
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelperTest.java
@@ -0,0 +1,239 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
gone 2015/12/08 22:27:54 Guessing you'll delete the OmahaUpdateInfoBarTest
Theresa 2015/12/10 03:53:18 Yes.
+// 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.omaha;
+
+import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_PHONE;
+
+import android.content.Context;
+import android.test.suitebuilder.annotation.MediumTest;
+import android.view.View;
+
+import org.chromium.base.ThreadUtils;
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.Feature;
+import org.chromium.base.test.util.Restriction;
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.UrlConstants;
+import org.chromium.chrome.test.ChromeTabbedActivityTestBase;
+import org.chromium.chrome.test.util.OverviewModeBehaviorWatcher;
+import org.chromium.content.browser.test.util.Criteria;
+import org.chromium.content.browser.test.util.CriteriaHelper;
+
+
+/**
+ * Tests for the UpdateMenuItemHelper.
+ */
+@CommandLineFlags.Add("enable_update_menu_item")
+public class UpdateMenuItemHelperTest extends ChromeTabbedActivityTestBase {
+
+ private static final long MS_TIMEOUT = 2000;
+ private static final long MS_INTERVAL = 500;
+
+ /** Reports versions that we want back to OmahaClient. */
+ private static class MockVersionNumberGetter extends VersionNumberGetter {
+ // Both of these strings must be of the format "#.#.#.#".
+ private final String mCurrentVersion;
+ private final String mLatestVersion;
+
+ private boolean mAskedForCurrentVersion;
+ private boolean mAskedForLatestVersion;
+
+ public MockVersionNumberGetter(String currentVersion, String latestVersion) {
+ mCurrentVersion = currentVersion;
+ mLatestVersion = latestVersion;
+ }
+
+ @Override
+ public String getCurrentlyUsedVersion(Context applicationContext) {
+ assertNotNull("Never set the current version", mCurrentVersion);
+ mAskedForCurrentVersion = true;
+ return mCurrentVersion;
+ }
+
+ @Override
+ public String getLatestKnownVersion(
+ Context applicationContext, String prefPackage, String prefLatestVersion) {
+ assertNotNull("Never set the latest version", mLatestVersion);
+ mAskedForLatestVersion = true;
+ return mLatestVersion;
+ }
+
+ public boolean askedForCurrentVersion() {
+ return mAskedForCurrentVersion;
+ }
+
+ public boolean askedForLatestVersion() {
+ return mAskedForLatestVersion;
+ }
+ }
+
+ /** Reports a dummy market URL back to OmahaClient. */
+ private static class MockMarketURLGetter extends MarketURLGetter {
+ private final String mURL;
+
+ MockMarketURLGetter(String url) {
+ mURL = url;
+ }
+
+ @Override
+ public String getMarketURL(
+ Context applicationContext, String prefPackage, String prefMarketUrl) {
+ return mURL;
+ }
+ }
+
+ private MockVersionNumberGetter mMockVersionNumberGetter;
+ private MockMarketURLGetter mMockMarketURLGetter;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+
+ // This test explicitly tests for the menu item, so turn it on.
+ OmahaClient.setEnableUpdateDetection(true);
+ }
+
+ @Override
+ public void startMainActivity() {
+ // Don't start Main until we've had a chance to override everything.
+ }
+
+ /**
+ * Prepares Main before actually launching it. This is required since we don't have all of the
+ * info we need in setUp().
+ * @param currentVersion Version to report as the current version of Chrome
+ * @param latestVersion Version to report is available by Omaha
+ */
+ private void prepareAndStartMainActivity(String currentVersion, String latestVersion)
+ throws Exception {
+ // Report fake versions back to Main when it asks.
+ mMockVersionNumberGetter = new MockVersionNumberGetter(currentVersion, latestVersion);
+ OmahaClient.setVersionNumberGetterForTests(mMockVersionNumberGetter);
+
+ // Report a dummy URL to Omaha.
+ mMockMarketURLGetter = new MockMarketURLGetter(
+ "https://market.android.com/details?id=com.google.android.apps.chrome");
+ OmahaClient.setMarketURLGetterForTests(mMockMarketURLGetter);
+
+ // Start up main.
+ startMainActivityWithURL(UrlConstants.NTP_URL);
+
+ // Check to make sure that the version numbers get queried.
+ versionNumbersQueried();
+ }
+
+ private void versionNumbersQueried() throws Exception {
+ CriteriaHelper.pollForCriteria(
+ new Criteria() {
+ @Override
+ public boolean isSatisfied() {
+ return mMockVersionNumberGetter.askedForCurrentVersion()
+ && mMockVersionNumberGetter.askedForLatestVersion();
+ }
+ },
+ MS_TIMEOUT, MS_INTERVAL);
+ }
+
+ /**
+ * Checks that the menu item is shown when a new version is available.
+ */
+ private void checkUpdateMenuItemIsShowing(String currentVersion, String latestVersion)
+ throws Exception {
+ prepareAndStartMainActivity(currentVersion, latestVersion);
+ showAppMenuAndAssertMenuShown();
+ assertTrue("Update menu item is not showing.",
+ getActivity().getAppMenuHandler().getAppMenuForTest().getMenuForTest().findItem(
+ R.id.update_menu_id).isVisible());
+ }
+
+ /**
+ * Checks that the menu item is not shown when a new version is not available.
+ */
+ private void checkUpdateMenuItemIsNotShowing(String currentVersion, String latestVersion)
+ throws Exception {
+ prepareAndStartMainActivity(currentVersion, latestVersion);
+ showAppMenuAndAssertMenuShown();
+ assertFalse("Update menu item is showing.",
+ getActivity().getAppMenuHandler().getAppMenuForTest().getMenuForTest().findItem(
+ R.id.update_menu_id).isVisible());
+ }
+
+ @MediumTest
+ @Feature({"Omaha"})
+ public void testCurrentVersionIsOlder() throws Exception {
+ checkUpdateMenuItemIsShowing("0.0.0.0", "1.2.3.4");
+ }
+
+ @MediumTest
+ @Feature({"Omaha"})
+ public void testCurrentVersionIsSame() throws Exception {
+ checkUpdateMenuItemIsNotShowing("1.2.3.4", "1.2.3.4");
+ }
+
+ @MediumTest
+ @Feature({"Omaha"})
+ public void testCurrentVersionIsNewer() throws Exception {
+ checkUpdateMenuItemIsNotShowing("27.0.1453.42", "26.0.1410.49");
+ }
+
+ @MediumTest
+ @Feature({"Omaha"})
+ public void testNoVersionKnown() throws Exception {
+ checkUpdateMenuItemIsNotShowing("1.2.3.4", "0");
+ }
+
+ @MediumTest
+ @Feature({"Omaha"})
+ @Restriction(RESTRICTION_TYPE_PHONE)
+ public void testMenuItemNotShownInOverview() throws Exception {
+ checkUpdateMenuItemIsShowing("0.0.0.0", "1.2.3.4");
+
+ // checkUpdateMenuItemIsShowing() opens the menu; hide it and assert it's dismissed.
+ hideAppMenuAndAssertMenuShown();
+
+ // Ensure not shown in tab switcher app menu.
+ OverviewModeBehaviorWatcher overviewModeWatcher = new OverviewModeBehaviorWatcher(
+ getActivity().getLayoutManager(), true, false);
+ View tabSwitcherButton = getActivity().findViewById(R.id.tab_switcher_button);
+ assertNotNull("'tab_switcher_button' view is not found", tabSwitcherButton);
+ singleClickView(tabSwitcherButton);
+ overviewModeWatcher.waitForBehavior();
+ showAppMenuAndAssertMenuShown();
+ assertFalse("Update menu item is showing.",
+ getActivity().getAppMenuHandler().getAppMenuForTest().getMenuForTest().findItem(
+ R.id.update_menu_id).isVisible());
+ }
+
+ private void showAppMenuAndAssertMenuShown() throws InterruptedException {
+ ThreadUtils.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ getActivity().getAppMenuHandler().showAppMenu(null, false);
+ }
+ });
+ CriteriaHelper.pollForCriteria(new Criteria() {
+ @Override
+ public boolean isSatisfied() {
+ return getActivity().getAppMenuHandler().isAppMenuShowing();
+ }
+ });
+ }
+
+ private void hideAppMenuAndAssertMenuShown() throws InterruptedException {
+ ThreadUtils.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ getActivity().getAppMenuHandler().hideAppMenu();
+ }
+ });
+ CriteriaHelper.pollForCriteria(new Criteria() {
+ @Override
+ public boolean isSatisfied() {
+ return !getActivity().getAppMenuHandler().isAppMenuShowing();
+ }
+ });
+ }
+}
+

Powered by Google App Engine
This is Rietveld 408576698