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..419697519c7986bcb65d09c2a01f2cd82b7c8ac4 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; |
@@ -66,20 +74,50 @@ public class PrivacyPreferencesManagerTest extends InstrumentationTestCase { |
@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 +125,45 @@ 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_NEVER, CONNECTED, WIFI_ON, UPLOAD_NOT_PERMITTED); |
- runTest(WIFI_DEVICE, UPLOAD_NEVER, 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, 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); |
} |
private void runTest(boolean mobileCapable, UserUploadPreference userPreference, |
- boolean isConnected, boolean wifiOn, boolean uploadPermitted) { |
+ boolean isConnected, boolean wifiOn, boolean experimentEnabled, |
+ boolean isSetMetricsReporting, boolean isMetricsReportinEnabled, |
+ boolean uploadPermitted) { |
PermissionContext context = new PermissionContext(getInstrumentation().getTargetContext()); |
PrivacyPreferencesManager preferenceManager = |
new MockPrivacyPreferencesManager(context, mobileCapable, isConnected, wifiOn); |
+ preferenceManager.setCellularExperimentFortesting(experimentEnabled); |
+ PrefServiceBridge prefServiceBridge = |
+ new MockPrefServiceBridge(isSetMetricsReporting, 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); |
+ String state = |
+ String.format("[cellular = %b, preference = %b, connected = %b, wifi = %b]", |
+ mobileCapable, userPreference.toBooleanValue(), isConnected, wifiOn, |
+ experimentEnabled, isSetMetricsReporting, isMetricsReportinEnabled); |
boolean res = preferenceManager.isUploadPermitted(); |
if (uploadPermitted) { |
assertTrue("Upload should be permitted for " + state, res); |
@@ -167,4 +226,25 @@ public class PrivacyPreferencesManagerTest extends InstrumentationTestCase { |
return super.getSystemService(name); |
} |
} |
+ |
+ private static class MockPrefServiceBridge extends PrefServiceBridge { |
+ private final boolean mIsSetMetricsReporting; |
+ private final boolean mIsMetricsReportingEnabled; |
+ |
+ MockPrefServiceBridge(boolean isSetMetricsReporting, boolean isMetricsReportingEnabled) { |
+ super(true); |
+ mIsSetMetricsReporting = isSetMetricsReporting; |
+ mIsMetricsReportingEnabled = isMetricsReportingEnabled; |
+ } |
+ |
+ @Override |
+ public boolean isSetMetricsReporting() { |
+ return mIsSetMetricsReporting; |
+ } |
+ |
+ @Override |
+ public boolean isMetricsReportingEnabled() { |
+ return mIsMetricsReportingEnabled; |
+ } |
+ } |
} |