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

Unified Diff: chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncCustomizationFragmentTest.java

Issue 1118833002: [Sync] Test SCF control states and a regression (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scf-test
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/sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncCustomizationFragmentTest.java
diff --git a/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncCustomizationFragmentTest.java b/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncCustomizationFragmentTest.java
index 5f90874dab7d3d3c72d1b2cbd0526f9b83c63c3c..a10a51d85754c66180aae940477705dddc589458 100644
--- a/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncCustomizationFragmentTest.java
+++ b/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncCustomizationFragmentTest.java
@@ -6,7 +6,10 @@ package org.chromium.chrome.browser.sync;
import android.app.Activity;
import android.app.FragmentTransaction;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
import android.preference.SwitchPreference;
+import android.preference.TwoStatePreference;
import android.test.suitebuilder.annotation.SmallTest;
import org.chromium.base.ThreadUtils;
@@ -36,23 +39,81 @@ public class SyncCustomizationFragmentTest extends SyncTestBase {
@Feature({"Sync"})
public void testSyncSwitch() throws Exception {
setupTestAccountAndSignInToSync(CLIENT_ID);
-
- // Make sure sync is actually enabled.
- mAndroidSyncSettings.enableChromeSync();
- getInstrumentation().waitForIdleSync();
+ startSync();
SyncCustomizationFragment fragment = startSyncCustomizationFragment();
final SwitchPreference syncSwitch = getSyncSwitch(fragment);
assertTrue(syncSwitch.isChecked());
assertTrue(mAndroidSyncSettings.isChromeSyncEnabled());
- toggleSwitch(syncSwitch);
+ togglePreference(syncSwitch);
assertFalse(syncSwitch.isChecked());
assertFalse(mAndroidSyncSettings.isChromeSyncEnabled());
- toggleSwitch(syncSwitch);
+ togglePreference(syncSwitch);
assertTrue(syncSwitch.isChecked());
assertTrue(mAndroidSyncSettings.isChromeSyncEnabled());
}
+ /**
+ * This is a regression test for http://crbug.com/454939.
+ */
+ @SmallTest
+ @Feature({"Sync"})
+ public void testOpeningSettingsDoesntEnableSync() throws Exception {
+ setupTestAccountAndSignInToSync(CLIENT_ID);
+ stopSync();
+ SyncCustomizationFragment fragment = startSyncCustomizationFragment();
+ closeFragment(fragment);
+ assertFalse(mAndroidSyncSettings.isChromeSyncEnabled());
+ }
+
+ @SmallTest
+ @Feature({"Sync"})
+ public void testDefaultControlStatesWithSyncOffThenOn() throws Exception {
+ setupTestAccountAndSignInToSync(CLIENT_ID);
+ stopSync();
+ SyncCustomizationFragment fragment = startSyncCustomizationFragment();
+ assertDefaultSyncOffState(fragment);
+ togglePreference(getSyncSwitch(fragment));
+ waitForSyncInitialized();
+ assertDefaultSyncOnState(fragment);
+ }
+
+ @SmallTest
+ @Feature({"Sync"})
+ public void testDefaultControlStatesWithSyncOnThenOff() throws Exception {
+ setupTestAccountAndSignInToSync(CLIENT_ID);
+ startSync();
+ SyncCustomizationFragment fragment = startSyncCustomizationFragment();
+ assertDefaultSyncOnState(fragment);
+ togglePreference(getSyncSwitch(fragment));
+ assertDefaultSyncOffState(fragment);
+ }
+
+ @SmallTest
+ @Feature({"Sync"})
+ public void testSyncEverythingAndDataTypes() throws Exception {
+ setupTestAccountAndSignInToSync(CLIENT_ID);
+ startSync();
+ SyncCustomizationFragment fragment = startSyncCustomizationFragment();
+ SwitchPreference syncEverything = getSyncEverything(fragment);
+ CheckBoxPreference[] dataTypes = getDataTypes(fragment);
+
+ assertDefaultSyncOnState(fragment);
+ togglePreference(syncEverything);
+ for (CheckBoxPreference dataType : dataTypes) {
+ assertTrue(dataType.isChecked());
+ assertTrue(dataType.isEnabled());
+ }
+
+ // If all data types are unchecked, sync should turn off.
+ for (CheckBoxPreference dataType : dataTypes) {
+ togglePreference(dataType);
+ }
+ getInstrumentation().waitForIdleSync();
+ assertDefaultSyncOffState(fragment);
+ assertFalse(mAndroidSyncSettings.isChromeSyncEnabled());
+ }
+
private SyncCustomizationFragment startSyncCustomizationFragment() {
FragmentTransaction transaction = mActivity.getFragmentManager().beginTransaction();
transaction.add(R.id.content_container, new SyncCustomizationFragment(), TAG);
@@ -61,6 +122,13 @@ public class SyncCustomizationFragmentTest extends SyncTestBase {
return (SyncCustomizationFragment) mActivity.getFragmentManager().findFragmentByTag(TAG);
}
+ private void closeFragment(SyncCustomizationFragment fragment) {
+ FragmentTransaction transaction = mActivity.getFragmentManager().beginTransaction();
+ transaction.remove(fragment);
+ transaction.commit();
+ getInstrumentation().waitForIdleSync();
+ }
+
private SwitchPreference getSyncSwitch(SyncCustomizationFragment fragment) {
return (SwitchPreference) fragment.findPreference(
SyncCustomizationFragment.PREF_SYNC_SWITCH);
@@ -71,7 +139,66 @@ public class SyncCustomizationFragmentTest extends SyncTestBase {
SyncCustomizationFragment.PREFERENCE_SYNC_EVERYTHING);
}
- private void toggleSwitch(final SwitchPreference pref) {
+ private CheckBoxPreference[] getDataTypes(SyncCustomizationFragment fragment) {
+ return new CheckBoxPreference[] {
+ (CheckBoxPreference) fragment.findPreference(
+ SyncCustomizationFragment.PREFERENCE_SYNC_AUTOFILL),
+ (CheckBoxPreference) fragment.findPreference(
+ SyncCustomizationFragment.PREFERENCE_SYNC_BOOKMARKS),
+ (CheckBoxPreference) fragment.findPreference(
+ SyncCustomizationFragment.PREFERENCE_SYNC_OMNIBOX),
+ (CheckBoxPreference) fragment.findPreference(
+ SyncCustomizationFragment.PREFERENCE_SYNC_PASSWORDS),
+ (CheckBoxPreference) fragment.findPreference(
+ SyncCustomizationFragment.PREFERENCE_SYNC_RECENT_TABS)
+ };
+ }
+
+ private Preference getEncryption(SyncCustomizationFragment fragment) {
+ return (Preference) fragment.findPreference(
+ SyncCustomizationFragment.PREFERENCE_ENCRYPTION);
+ }
+
+ private Preference getManageData(SyncCustomizationFragment fragment) {
+ return (Preference) fragment.findPreference(
+ SyncCustomizationFragment.PREFERENCE_SYNC_MANAGE_DATA);
+ }
+
+ private void assertDefaultSyncOnState(SyncCustomizationFragment fragment) {
+ assertTrue("The sync switch should be on.", getSyncSwitch(fragment).isChecked());
+ assertTrue("The sync switch should be enabled.", getSyncSwitch(fragment).isEnabled());
+ SwitchPreference syncEverything = getSyncEverything(fragment);
+ assertTrue("The sync everything switch should be on.", syncEverything.isChecked());
+ assertTrue("The sync everything switch should be enabled.", syncEverything.isEnabled());
+ for (CheckBoxPreference dataType : getDataTypes(fragment)) {
+ String key = dataType.getKey();
+ assertTrue("Data type " + key + " should be checked.", dataType.isChecked());
+ assertFalse("Data type " + key + " should be disabled.", dataType.isEnabled());
+ }
+ assertTrue("The encryption button should be enabled.",
+ getEncryption(fragment).isEnabled());
+ assertTrue("The manage sync data button should be always enabled.",
+ getManageData(fragment).isEnabled());
+ }
+
+ private void assertDefaultSyncOffState(SyncCustomizationFragment fragment) {
+ assertFalse("The sync switch should be off.", getSyncSwitch(fragment).isChecked());
+ assertTrue("The sync switch should be enabled.", getSyncSwitch(fragment).isEnabled());
+ SwitchPreference syncEverything = getSyncEverything(fragment);
+ assertTrue("The sync everything switch should be on.", syncEverything.isChecked());
+ assertFalse("The sync everything switch should be disabled.", syncEverything.isEnabled());
+ for (CheckBoxPreference dataType : getDataTypes(fragment)) {
+ String key = dataType.getKey();
+ assertTrue("Data type " + key + " should be checked.", dataType.isChecked());
+ assertFalse("Data type " + key + " should be disabled.", dataType.isEnabled());
+ }
+ assertFalse("The encryption button should be disabled.",
+ getEncryption(fragment).isEnabled());
+ assertTrue("The manage sync data button should be always enabled.",
+ getManageData(fragment).isEnabled());
+ }
+
+ private void togglePreference(final TwoStatePreference pref) {
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {

Powered by Google App Engine
This is Rietveld 408576698