| Index: chrome/android/javatests/src/org/chromium/chrome/browser/ChromeBackupIntegrationTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ChromeBackupIntegrationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ChromeBackupIntegrationTest.java
|
| index b2f9b69b566b821bce1dd50f6ff3420b60300acb..0dad887e2033a16fd7d49ae365693ccd9c49882a 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ChromeBackupIntegrationTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ChromeBackupIntegrationTest.java
|
| @@ -12,16 +12,25 @@ import android.os.Build;
|
| import android.test.suitebuilder.annotation.SmallTest;
|
|
|
| import org.chromium.base.ContextUtils;
|
| +import org.chromium.base.StreamUtil;
|
| import org.chromium.base.test.util.CommandLineFlags;
|
| import org.chromium.base.test.util.MinAndroidSdkLevel;
|
| import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor;
|
| import org.chromium.chrome.browser.firstrun.FirstRunStatus;
|
| +import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
|
| import org.chromium.chrome.browser.signin.AccountIdProvider;
|
| import org.chromium.chrome.test.ChromeTabbedActivityTestBase;
|
| import org.chromium.sync.signin.AccountManagerHelper;
|
| import org.chromium.sync.signin.ChromeSigninController;
|
| import org.chromium.sync.test.util.MockAccountManager;
|
|
|
| +import java.io.File;
|
| +import java.io.FileInputStream;
|
| +import java.io.FileNotFoundException;
|
| +import java.io.FileOutputStream;
|
| +import java.io.IOException;
|
| +import java.io.UnsupportedEncodingException;
|
| +
|
| /**
|
| * Android backup tests.
|
| */
|
| @@ -63,7 +72,7 @@ public class ChromeBackupIntegrationTest extends ChromeTabbedActivityTestBase {
|
| protected Account[] getAccounts() {
|
| // ChromeBackupAgent can't use Chrome's account manager, so we override this to mock
|
| // the existence of the account.
|
| - return new Account[]{new Account(TEST_ACCOUNT_1, GOOGLE_ACCOUNT_TYPE)};
|
| + return new Account[] {new Account(TEST_ACCOUNT_1, GOOGLE_ACCOUNT_TYPE)};
|
| }
|
|
|
| }
|
| @@ -87,7 +96,7 @@ public class ChromeBackupIntegrationTest extends ChromeTabbedActivityTestBase {
|
|
|
| @SmallTest
|
| @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
|
| - public void testSimpleRestore() throws InterruptedException {
|
| + public void testSimpleRestore() throws InterruptedException, IOException {
|
|
|
| // Fake having previously gone through FRE and signed in.
|
| SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
|
| @@ -95,6 +104,16 @@ public class ChromeBackupIntegrationTest extends ChromeTabbedActivityTestBase {
|
| preferenceEditor.putBoolean(FirstRunStatus.FIRST_RUN_FLOW_COMPLETE, true);
|
| preferenceEditor.putBoolean(FirstRunSignInProcessor.FIRST_RUN_FLOW_SIGNIN_SETUP, true);
|
|
|
| + String chromeInputPrefs =
|
| + "{\"junk1\":\"abc\", "
|
| + + "\"sync\":{ \"has_setup_completed\":\"true\", "
|
| + + " \"keep_everything_synced\":\"false\", "
|
| + + " \"passwords\":\"true\", "
|
| + + " \"junk2\":\"xxx\""
|
| + + " }}";
|
| +
|
| + writeTestChromePrefs(chromeInputPrefs);
|
| +
|
| // Set up the mocked account as the signed in account.
|
| preferenceEditor.putString(ChromeSigninController.SIGNED_IN_ACCOUNT_KEY, TEST_ACCOUNT_1);
|
| preferenceEditor.commit();
|
| @@ -108,11 +127,19 @@ public class ChromeBackupIntegrationTest extends ChromeTabbedActivityTestBase {
|
| assertTrue(ChromeSigninController.get(mTargetContext).isSignedIn());
|
| assertEquals(TEST_ACCOUNT_1,
|
| ChromeSigninController.get(mTargetContext).getSignedInAccountName());
|
| +
|
| + String chromeOutputPrefs = readChromePrefs();
|
| +
|
| + assertTrue(chromeOutputPrefs.contains("\"keep_everything_synced\":\"false\""));
|
| + assertTrue(chromeOutputPrefs.contains("\"passwords\":\"true\""));
|
| + assertFalse(chromeOutputPrefs.contains("junk"));
|
| +
|
| }
|
|
|
| +
|
| @SmallTest
|
| @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP)
|
| - public void testRestoreAccountMissing() throws InterruptedException {
|
| + public void testRestoreAccountMissing() throws InterruptedException, IOException {
|
| // Fake having previously gone through FRE and signed in.
|
| SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
|
| SharedPreferences.Editor preferenceEditor = prefs.edit();
|
| @@ -123,6 +150,9 @@ public class ChromeBackupIntegrationTest extends ChromeTabbedActivityTestBase {
|
| preferenceEditor.putString(ChromeSigninController.SIGNED_IN_ACCOUNT_KEY, TEST_ACCOUNT_2);
|
| preferenceEditor.commit();
|
|
|
| + String chromeInputPrefs = "{}";
|
| +
|
| + writeTestChromePrefs(chromeInputPrefs);
|
| // Run Chrome's restore code.
|
| new ChromeTestBackupAgent(mTargetContext).onRestoreFinished();
|
|
|
| @@ -133,4 +163,40 @@ public class ChromeBackupIntegrationTest extends ChromeTabbedActivityTestBase {
|
| assertFalse(ChromeSigninController.get(mTargetContext).isSignedIn());
|
| }
|
|
|
| + private void writeTestChromePrefs(String chromeInputPrefs)
|
| + throws FileNotFoundException, UnsupportedEncodingException, IOException {
|
| + FileOutputStream prefsFileWriter = null;
|
| + try {
|
| + File prefsDir =
|
| + mTargetContext.getDir(ChromeBrowserInitializer.PRIVATE_DATA_DIRECTORY_SUFFIX,
|
| + Context.MODE_PRIVATE);
|
| + prefsDir = new File(prefsDir, "Default");
|
| + assertTrue(prefsDir.mkdirs());
|
| + File prefsFile = new File(prefsDir, "Preferences");
|
| + prefsFileWriter = new FileOutputStream(prefsFile);
|
| + prefsFileWriter.write(chromeInputPrefs.getBytes("UTF-8"));
|
| + } finally {
|
| + StreamUtil.closeQuietly(prefsFileWriter);
|
| + }
|
| + }
|
| +
|
| + private String readChromePrefs()
|
| + throws FileNotFoundException, IOException, UnsupportedEncodingException {
|
| + FileInputStream prefsFileReader = null;
|
| + try {
|
| + File prefsDir =
|
| + mTargetContext.getDir(ChromeBrowserInitializer.PRIVATE_DATA_DIRECTORY_SUFFIX,
|
| + Context.MODE_PRIVATE);
|
| + prefsDir = new File(prefsDir, "Default");
|
| + File prefsFile = new File(prefsDir, "Preferences");
|
| + prefsFileReader = new FileInputStream(prefsFile);
|
| + int fileLength = (int) prefsFile.length();
|
| + byte[] inputBuffer = new byte[fileLength];
|
| + assertEquals(fileLength, prefsFileReader.read(inputBuffer));
|
| + return new String(inputBuffer, "UTF-8");
|
| + } finally {
|
| + StreamUtil.closeQuietly(prefsFileReader);
|
| + }
|
| + }
|
| +
|
| }
|
|
|