| Index: chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java
|
| index 8bdaf3b1cf52e55e2e6ce7e0be0579c6233ae2c8..e8cdad79ddefe71b2633c98b4aeffea88a58f22d 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java
|
| @@ -15,6 +15,7 @@ import org.chromium.base.CommandLine;
|
| import org.chromium.base.test.util.AdvancedMockContext;
|
| import org.chromium.base.test.util.Feature;
|
| import org.chromium.chrome.R;
|
| +import org.chromium.chrome.browser.preferences.PrefServiceBridge;
|
|
|
| public class PrivacyPreferencesManagerTest extends InstrumentationTestCase {
|
|
|
| @@ -34,6 +35,13 @@ public class PrivacyPreferencesManagerTest extends InstrumentationTestCase {
|
| private static final UserUploadPreference UPLOAD_WIFI_ONLY = UserUploadPreference.WIFI_ONLY;
|
| private static final UserUploadPreference UPLOAD_NEVER = UserUploadPreference.NEVER;
|
|
|
| + private static final boolean EXPERIMENT_ENABLED = true;
|
| + private static final boolean EXPERIMENT_DISABLED = false;
|
| + private static final boolean METRIC_REPORTING_SET = true;
|
| + private static final boolean METRIC_REPORTING_NOT_SET = false;
|
| + private static final boolean METRIC_REPORTING_ENABLED = true;
|
| + private static final boolean METRIC_REPORTING_DISABLED = false;
|
| +
|
| // Perform the same test a few times to make sure any sort of
|
| // caching still works.
|
| private static final int REPS = 3;
|
| @@ -61,25 +69,60 @@ public class PrivacyPreferencesManagerTest extends InstrumentationTestCase {
|
| }
|
| }
|
|
|
| + // Instance of PermissionContext used for creating PrivacyPreferencesManager.
|
| + private PermissionContext mContext;
|
| + // Singleton value of PrefServiceBridge restored after test run.
|
| + private PrefServiceBridge mPrevInstance;
|
| +
|
| @SmallTest
|
| @Feature({"Android-AppBase"})
|
| @UiThreadTest
|
| public void testAllowCrashDumpUploadNowCellDev() {
|
| CommandLine.init(null);
|
| - runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_ON, UPLOAD_OK);
|
| - runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, DISCONNECTED, WIFI_ON, UPLOAD_NOT_PERMITTED);
|
| - runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_OFF, UPLOAD_OK);
|
| - runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, DISCONNECTED, WIFI_OFF, UPLOAD_NOT_PERMITTED);
|
| -
|
| - runTest(CELLULAR_DEVICE, UPLOAD_WIFI_ONLY, CONNECTED, WIFI_ON, UPLOAD_OK);
|
| - runTest(CELLULAR_DEVICE, UPLOAD_WIFI_ONLY, DISCONNECTED, WIFI_ON, UPLOAD_NOT_PERMITTED);
|
| - runTest(CELLULAR_DEVICE, UPLOAD_WIFI_ONLY, CONNECTED, WIFI_OFF, UPLOAD_NOT_PERMITTED);
|
| - runTest(CELLULAR_DEVICE, UPLOAD_WIFI_ONLY, DISCONNECTED, WIFI_OFF, UPLOAD_NOT_PERMITTED);
|
| -
|
| - runTest(CELLULAR_DEVICE, UPLOAD_NEVER, CONNECTED, WIFI_ON, UPLOAD_NOT_PERMITTED);
|
| - runTest(CELLULAR_DEVICE, UPLOAD_NEVER, DISCONNECTED, WIFI_ON, UPLOAD_NOT_PERMITTED);
|
| - runTest(CELLULAR_DEVICE, UPLOAD_NEVER, CONNECTED, WIFI_OFF, UPLOAD_NOT_PERMITTED);
|
| - runTest(CELLULAR_DEVICE, UPLOAD_NEVER, DISCONNECTED, WIFI_OFF, UPLOAD_NOT_PERMITTED);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_ON, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_OK);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, DISCONNECTED, WIFI_ON, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_OFF, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_OK);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, DISCONNECTED, WIFI_OFF, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| +
|
| + runTest(CELLULAR_DEVICE, UPLOAD_WIFI_ONLY, CONNECTED, WIFI_ON, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_OK);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_WIFI_ONLY, DISCONNECTED, WIFI_ON, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_WIFI_ONLY, CONNECTED, WIFI_OFF, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_WIFI_ONLY, DISCONNECTED, WIFI_OFF, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| +
|
| + runTest(CELLULAR_DEVICE, UPLOAD_NEVER, CONNECTED, WIFI_ON, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_NEVER, DISCONNECTED, WIFI_ON, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_NEVER, CONNECTED, WIFI_OFF, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_NEVER, DISCONNECTED, WIFI_OFF, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| +
|
| + runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_ON, EXPERIMENT_ENABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_DISABLED, UPLOAD_OK);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, DISCONNECTED, WIFI_ON, EXPERIMENT_ENABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_DISABLED, UPLOAD_NOT_PERMITTED);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_WIFI_ONLY, CONNECTED, WIFI_ON, EXPERIMENT_ENABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_DISABLED, UPLOAD_OK);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_NEVER, CONNECTED, WIFI_ON, EXPERIMENT_ENABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| +
|
| + runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_ON, EXPERIMENT_ENABLED,
|
| + METRIC_REPORTING_SET, METRIC_REPORTING_ENABLED, UPLOAD_OK);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_OFF, EXPERIMENT_ENABLED,
|
| + METRIC_REPORTING_SET, METRIC_REPORTING_ENABLED, UPLOAD_OK);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_ON, EXPERIMENT_ENABLED,
|
| + METRIC_REPORTING_SET, METRIC_REPORTING_DISABLED, UPLOAD_NOT_PERMITTED);
|
| + runTest(CELLULAR_DEVICE, UPLOAD_ALWAYS, DISCONNECTED, WIFI_ON, EXPERIMENT_ENABLED,
|
| + METRIC_REPORTING_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| }
|
|
|
| @SmallTest
|
| @@ -87,24 +130,52 @@ public class PrivacyPreferencesManagerTest extends InstrumentationTestCase {
|
| @UiThreadTest
|
| public void testAllowCrashDumpUploadNowWifiDev() {
|
| CommandLine.init(null);
|
| - runTest(WIFI_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_ON, UPLOAD_OK);
|
| - runTest(WIFI_DEVICE, UPLOAD_ALWAYS, DISCONNECTED, WIFI_OFF, UPLOAD_NOT_PERMITTED);
|
| + runTest(WIFI_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_ON, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_OK);
|
| + runTest(WIFI_DEVICE, UPLOAD_ALWAYS, DISCONNECTED, WIFI_OFF, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
|
|
| - runTest(WIFI_DEVICE, UPLOAD_NEVER, CONNECTED, WIFI_ON, UPLOAD_NOT_PERMITTED);
|
| - runTest(WIFI_DEVICE, UPLOAD_NEVER, DISCONNECTED, WIFI_OFF, UPLOAD_NOT_PERMITTED);
|
| + runTest(WIFI_DEVICE, UPLOAD_NEVER, CONNECTED, WIFI_ON, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| + runTest(WIFI_DEVICE, UPLOAD_NEVER, DISCONNECTED, WIFI_OFF, EXPERIMENT_DISABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| +
|
| + runTest(WIFI_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_ON, EXPERIMENT_ENABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_OK);
|
| + runTest(WIFI_DEVICE, UPLOAD_NEVER, CONNECTED, WIFI_ON, EXPERIMENT_ENABLED,
|
| + METRIC_REPORTING_NOT_SET, METRIC_REPORTING_ENABLED, UPLOAD_NOT_PERMITTED);
|
| +
|
| + runTest(WIFI_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_ON, EXPERIMENT_ENABLED,
|
| + METRIC_REPORTING_SET, METRIC_REPORTING_ENABLED, UPLOAD_OK);
|
| + runTest(WIFI_DEVICE, UPLOAD_ALWAYS, CONNECTED, WIFI_ON, EXPERIMENT_ENABLED,
|
| + METRIC_REPORTING_SET, METRIC_REPORTING_DISABLED, UPLOAD_NOT_PERMITTED);
|
| + }
|
| +
|
| + @Override
|
| + protected void setUp() throws Exception {
|
| + super.setUp();
|
| + mPrevInstance = PrefServiceBridge.getInstanceForTesting();
|
| + mContext = new PermissionContext(getInstrumentation().getTargetContext());
|
| }
|
|
|
| private void runTest(boolean mobileCapable, UserUploadPreference userPreference,
|
| - boolean isConnected, boolean wifiOn, boolean uploadPermitted) {
|
| - PermissionContext context = new PermissionContext(getInstrumentation().getTargetContext());
|
| + boolean isConnected, boolean wifiOn, boolean experimentEnabled,
|
| + boolean hasSetMetricsReporting, boolean isMetricsReportinEnabled,
|
| + boolean uploadPermitted) {
|
| PrivacyPreferencesManager preferenceManager =
|
| - new MockPrivacyPreferencesManager(context, mobileCapable, isConnected, wifiOn);
|
| + new MockPrivacyPreferencesManager(mContext, mobileCapable, isConnected, wifiOn);
|
| + preferenceManager.setCellularExperimentForTesting(experimentEnabled);
|
| + PrefServiceBridge prefServiceBridge =
|
| + new MockPrefServiceBridge(hasSetMetricsReporting, isMetricsReportinEnabled);
|
| + PrefServiceBridge.setInstanceForTesting(prefServiceBridge);
|
|
|
| for (int i = 0; i < REPS; i++) {
|
| - setUpUserPreferences(context, userPreference);
|
| - String state = String.format(
|
| - "[cellular = %b, preference = %b, connected = %b, wifi = %b]",
|
| - mobileCapable, userPreference.toBooleanValue(), isConnected, wifiOn);
|
| + setUpUserPreferences(mContext, userPreference);
|
| + String state =
|
| + String.format("[cellular = %b, preference = %b, connected = %b, wifi = %b,"
|
| + + "experiment = %b, reporting_set = %b, reporting = %b]",
|
| + mobileCapable, userPreference.toBooleanValue(), isConnected, wifiOn,
|
| + experimentEnabled, hasSetMetricsReporting, isMetricsReportinEnabled);
|
| boolean res = preferenceManager.isUploadPermitted();
|
| if (uploadPermitted) {
|
| assertTrue("Upload should be permitted for " + state, res);
|
| @@ -114,6 +185,12 @@ public class PrivacyPreferencesManagerTest extends InstrumentationTestCase {
|
| }
|
| }
|
|
|
| + @Override
|
| + protected void tearDown() throws Exception {
|
| + PrefServiceBridge.setInstanceForTesting(mPrevInstance);
|
| + super.tearDown();
|
| + }
|
| +
|
| private void setUpUserPreferences(Context context, UserUploadPreference userPreference) {
|
| SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
|
| SharedPreferences.Editor ed = pref.edit()
|
| @@ -167,4 +244,25 @@ public class PrivacyPreferencesManagerTest extends InstrumentationTestCase {
|
| return super.getSystemService(name);
|
| }
|
| }
|
| +
|
| + private static class MockPrefServiceBridge extends PrefServiceBridge {
|
| + private final boolean mHasSetMetricsReporting;
|
| + private final boolean mIsMetricsReportingEnabled;
|
| +
|
| + MockPrefServiceBridge(boolean hasSetMetricsReporting, boolean isMetricsReportingEnabled) {
|
| + super(false);
|
| + mHasSetMetricsReporting = hasSetMetricsReporting;
|
| + mIsMetricsReportingEnabled = isMetricsReportingEnabled;
|
| + }
|
| +
|
| + @Override
|
| + public boolean hasSetMetricsReporting() {
|
| + return mHasSetMetricsReporting;
|
| + }
|
| +
|
| + @Override
|
| + public boolean isMetricsReportingEnabled() {
|
| + return mIsMetricsReportingEnabled;
|
| + }
|
| + }
|
| }
|
|
|