| Index: chrome/android/javatests/src/org/chromium/chrome/browser/snackbar/DataReductionPromoSnackbarControllerTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/snackbar/DataReductionPromoSnackbarControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/snackbar/DataReductionPromoSnackbarControllerTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fcb6076f3e2a86675158861affc8e963da5b70a5
|
| --- /dev/null
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/snackbar/DataReductionPromoSnackbarControllerTest.java
|
| @@ -0,0 +1,149 @@
|
| +// Copyright 2016 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.snackbar;
|
| +
|
| +import android.test.UiThreadTest;
|
| +import android.test.suitebuilder.annotation.MediumTest;
|
| +
|
| +import org.chromium.base.ContextUtils;
|
| +import org.chromium.base.metrics.RecordHistogram;
|
| +import org.chromium.base.test.util.CommandLineFlags;
|
| +import org.chromium.chrome.browser.preferences.datareduction.DataReductionPromoUtils;
|
| +import org.chromium.chrome.browser.preferences.datareduction.DataReductionProxyUma;
|
| +import org.chromium.chrome.test.ChromeTabbedActivityTestBase;
|
| +
|
| +/**
|
| + * Tests the DataReductionPromoSnackbarController. Tests that the snackbar sizes are properly set
|
| + * from a field trial param and that the correct uma is recorded.
|
| + */
|
| +public class DataReductionPromoSnackbarControllerTest extends ChromeTabbedActivityTestBase {
|
| +
|
| + private static final int BYTES_IN_MB = 1024 * 1024;
|
| + private static final int FIRST_SNACKBAR_SIZE_MB = 100;
|
| + private static final int SECOND_SNACKBAR_SIZE_MB = 1024;
|
| + private static final String FIRST_SNACKBAR_SIZE_STRING = "100 MB";
|
| + private static final String SECOND_SNACKBAR_SIZE_STRING = "1 GB";
|
| +
|
| + private SnackbarManager mManager;
|
| + private DataReductionPromoSnackbarController mController;
|
| +
|
| + @Override
|
| + public void startMainActivity() throws InterruptedException {
|
| + ContextUtils.getAppSharedPreferences().edit().clear().apply();
|
| + SnackbarManager.setDurationForTesting(1000);
|
| + startMainActivityOnBlankPage();
|
| + mManager = getActivity().getSnackbarManager();
|
| + mController = new DataReductionPromoSnackbarController(getActivity(), mManager);
|
| + }
|
| +
|
| + @UiThreadTest
|
| + @MediumTest
|
| + @CommandLineFlags.Add({
|
| + "force-fieldtrials=" + DataReductionPromoSnackbarController.PROMO_FIELD_TRIAL_NAME
|
| + + "/Enabled",
|
| + "force-fieldtrial-params=" + DataReductionPromoSnackbarController.PROMO_FIELD_TRIAL_NAME
|
| + + ".Enabled:"
|
| + + DataReductionPromoSnackbarController.PROMO_PARAM_NAME + "/"
|
| + + FIRST_SNACKBAR_SIZE_MB + ";"
|
| + + SECOND_SNACKBAR_SIZE_MB })
|
| + public void testDataReductionPromoSnackbarController() {
|
| + assertFalse(DataReductionPromoUtils.hasSnackbarPromoBeenInitWithStartingSavedBytes());
|
| +
|
| + mController.maybeShowDataReductionPromoSnackbar(0);
|
| +
|
| + assertFalse(mManager.isShowing());
|
| + assertTrue(DataReductionPromoUtils.hasSnackbarPromoBeenInitWithStartingSavedBytes());
|
| + assertEquals(0, DataReductionPromoUtils.getDisplayedSnackbarPromoSavedBytes());
|
| +
|
| + mController.maybeShowDataReductionPromoSnackbar(FIRST_SNACKBAR_SIZE_MB * BYTES_IN_MB);
|
| +
|
| + assertTrue(mManager.isShowing());
|
| + assertTrue(mManager.getCurrentSnackbarForTesting().getText().toString()
|
| + .endsWith(FIRST_SNACKBAR_SIZE_STRING));
|
| + assertEquals(FIRST_SNACKBAR_SIZE_MB * BYTES_IN_MB,
|
| + DataReductionPromoUtils.getDisplayedSnackbarPromoSavedBytes());
|
| + mManager.dismissSnackbars(mController);
|
| +
|
| + mController.maybeShowDataReductionPromoSnackbar(SECOND_SNACKBAR_SIZE_MB * BYTES_IN_MB);
|
| +
|
| + assertTrue(mManager.isShowing());
|
| +
|
| + assertTrue(mManager.getCurrentSnackbarForTesting().getText().toString()
|
| + .endsWith(SECOND_SNACKBAR_SIZE_STRING));
|
| + assertEquals(SECOND_SNACKBAR_SIZE_MB * BYTES_IN_MB,
|
| + DataReductionPromoUtils.getDisplayedSnackbarPromoSavedBytes());
|
| + }
|
| +
|
| + @UiThreadTest
|
| + @MediumTest
|
| + @CommandLineFlags.Add({
|
| + "force-fieldtrials=" + DataReductionPromoSnackbarController.PROMO_FIELD_TRIAL_NAME
|
| + + "/Enabled",
|
| + "force-fieldtrial-params=" + DataReductionPromoSnackbarController.PROMO_FIELD_TRIAL_NAME
|
| + + ".Enabled:"
|
| + + DataReductionPromoSnackbarController.PROMO_PARAM_NAME + "/"
|
| + + FIRST_SNACKBAR_SIZE_MB + ";"
|
| + + SECOND_SNACKBAR_SIZE_MB })
|
| + public void testDataReductionPromoSnackbarControllerExistingUser() {
|
| + assertFalse(DataReductionPromoUtils.hasSnackbarPromoBeenInitWithStartingSavedBytes());
|
| +
|
| + mController.maybeShowDataReductionPromoSnackbar(SECOND_SNACKBAR_SIZE_MB * BYTES_IN_MB);
|
| +
|
| + assertFalse(mManager.isShowing());
|
| + assertTrue(DataReductionPromoUtils.hasSnackbarPromoBeenInitWithStartingSavedBytes());
|
| + assertEquals(SECOND_SNACKBAR_SIZE_MB * BYTES_IN_MB,
|
| + DataReductionPromoUtils.getDisplayedSnackbarPromoSavedBytes());
|
| +
|
| + mController.maybeShowDataReductionPromoSnackbar(SECOND_SNACKBAR_SIZE_MB * BYTES_IN_MB + 1);
|
| +
|
| + assertFalse(mManager.isShowing());
|
| + assertEquals(SECOND_SNACKBAR_SIZE_MB * BYTES_IN_MB,
|
| + DataReductionPromoUtils.getDisplayedSnackbarPromoSavedBytes());
|
| + }
|
| +
|
| + @UiThreadTest
|
| + @MediumTest
|
| + @CommandLineFlags.Add({
|
| + "force-fieldtrials=" + DataReductionPromoSnackbarController.PROMO_FIELD_TRIAL_NAME
|
| + + "/Enabled",
|
| + "force-fieldtrial-params=" + DataReductionPromoSnackbarController.PROMO_FIELD_TRIAL_NAME
|
| + + ".Enabled:"
|
| + + DataReductionPromoSnackbarController.PROMO_PARAM_NAME + "/"
|
| + + FIRST_SNACKBAR_SIZE_MB + ";"
|
| + + SECOND_SNACKBAR_SIZE_MB })
|
| + public void testDataReductionPromoSnackbarControllerHistograms() {
|
| + assertFalse(DataReductionPromoUtils.hasSnackbarPromoBeenInitWithStartingSavedBytes());
|
| +
|
| + mController.maybeShowDataReductionPromoSnackbar(0);
|
| +
|
| + assertTrue(DataReductionPromoUtils.hasSnackbarPromoBeenInitWithStartingSavedBytes());
|
| + assertEquals(0, RecordHistogram
|
| + .getHistogramValueCountForTesting(DataReductionProxyUma.SNACKBAR_HISTOGRAM_NAME,
|
| + 0));
|
| +
|
| + mController.maybeShowDataReductionPromoSnackbar(FIRST_SNACKBAR_SIZE_MB * BYTES_IN_MB);
|
| +
|
| + assertTrue(mManager.isShowing());
|
| + assertEquals(1, RecordHistogram
|
| + .getHistogramValueCountForTesting(DataReductionProxyUma.SNACKBAR_HISTOGRAM_NAME,
|
| + FIRST_SNACKBAR_SIZE_MB));
|
| + mManager.getCurrentSnackbarForTesting().getController().onDismissNoAction(null);
|
| + assertEquals(1, RecordHistogram
|
| + .getHistogramValueCountForTesting(DataReductionProxyUma.UI_ACTION_HISTOGRAM_NAME,
|
| + DataReductionProxyUma.ACTION_SNACKBAR_DISMISSED));
|
| +
|
| + mController.maybeShowDataReductionPromoSnackbar(SECOND_SNACKBAR_SIZE_MB * BYTES_IN_MB);
|
| +
|
| + assertTrue(mManager.isShowing());
|
| + assertEquals(1, RecordHistogram
|
| + .getHistogramValueCountForTesting(DataReductionProxyUma.SNACKBAR_HISTOGRAM_NAME,
|
| + SECOND_SNACKBAR_SIZE_MB));
|
| + mManager.getCurrentSnackbarForTesting().getController().onAction(null);
|
| + // The dismissed histogram should not have been incremented.
|
| + assertEquals(1, RecordHistogram
|
| + .getHistogramValueCountForTesting(DataReductionProxyUma.UI_ACTION_HISTOGRAM_NAME,
|
| + DataReductionProxyUma.ACTION_SNACKBAR_DISMISSED));
|
| + }
|
| +}
|
|
|