| Index: chrome/android/junit/src/org/chromium/chrome/browser/ChromeBackupAgentTest.java
|
| diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/ChromeBackupAgentTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/ChromeBackupAgentTest.java
|
| index 3ae9e03651a2ee685cbe14824d9ac70aa0b44ab5..3d95fdbe23ae0308cfc1abf9306ef1cdc14e9419 100644
|
| --- a/chrome/android/junit/src/org/chromium/chrome/browser/ChromeBackupAgentTest.java
|
| +++ b/chrome/android/junit/src/org/chromium/chrome/browser/ChromeBackupAgentTest.java
|
| @@ -4,379 +4,181 @@
|
|
|
| package org.chromium.chrome.browser;
|
|
|
| +import static org.hamcrest.CoreMatchers.containsString;
|
| import static org.hamcrest.CoreMatchers.equalTo;
|
| -import static org.hamcrest.CoreMatchers.hasItem;
|
| -import static org.junit.Assert.assertFalse;
|
| +import static org.hamcrest.CoreMatchers.not;
|
| +import static org.hamcrest.CoreMatchers.nullValue;
|
| +
|
| import static org.junit.Assert.assertThat;
|
| -import static org.junit.Assert.assertTrue;
|
| -import static org.mockito.ArgumentMatchers.any;
|
| -import static org.mockito.ArgumentMatchers.anyInt;
|
| -import static org.mockito.ArgumentMatchers.anyString;
|
| -import static org.mockito.Mockito.doNothing;
|
| -import static org.mockito.Mockito.doReturn;
|
| -import static org.mockito.Mockito.mock;
|
| -import static org.mockito.Mockito.never;
|
| -import static org.mockito.Mockito.spy;
|
| -import static org.mockito.Mockito.times;
|
| -import static org.mockito.Mockito.verify;
|
| -import static org.mockito.Mockito.verifyNoMoreInteractions;
|
| -import static org.mockito.Mockito.when;
|
|
|
| -import android.app.backup.BackupDataInput;
|
| -import android.app.backup.BackupDataOutput;
|
| +import android.accounts.Account;
|
| +import android.accounts.AccountManager;
|
| import android.content.Context;
|
| import android.content.SharedPreferences;
|
| -import android.os.ParcelFileDescriptor;
|
|
|
| +import org.chromium.base.ContextUtils;
|
| +import org.chromium.testing.local.LocalRobolectricTestRunner;
|
| import org.junit.Before;
|
| import org.junit.Test;
|
| import org.junit.runner.RunWith;
|
| -import org.mockito.invocation.InvocationOnMock;
|
| -import org.mockito.stubbing.Answer;
|
| import org.robolectric.RuntimeEnvironment;
|
| import org.robolectric.annotation.Config;
|
|
|
| -import org.chromium.base.BaseChromiumApplication;
|
| -import org.chromium.base.ContextUtils;
|
| -import org.chromium.base.library_loader.ProcessInitException;
|
| -import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor;
|
| -import org.chromium.chrome.browser.firstrun.FirstRunStatus;
|
| -import org.chromium.components.signin.ChromeSigninController;
|
| -import org.chromium.testing.local.LocalRobolectricTestRunner;
|
| -
|
| +import java.io.ByteArrayInputStream;
|
| +import java.io.ByteArrayOutputStream;
|
| import java.io.File;
|
| -import java.io.FileInputStream;
|
| import java.io.FileNotFoundException;
|
| -import java.io.IOException;
|
| -import java.io.ObjectInputStream;
|
| -import java.util.ArrayList;
|
| -import java.util.Arrays;
|
| +import java.io.InputStream;
|
| +import java.io.OutputStream;
|
| +import java.io.UnsupportedEncodingException;
|
|
|
| /**
|
| * Unit tests for {@link org.chromium.chrome.browser.ChromeBackupAgent}.
|
| */
|
| @RunWith(LocalRobolectricTestRunner.class)
|
| -@Config(manifest = Config.NONE, application = BaseChromiumApplication.class)
|
| +@Config(manifest = Config.NONE)
|
| public class ChromeBackupAgentTest {
|
| - private Context mContext;
|
| - private ChromeBackupAgent mAgent;
|
|
|
| - private void setUpTestPrefs(SharedPreferences prefs) {
|
| - SharedPreferences.Editor editor = prefs.edit();
|
| - editor.putBoolean(FirstRunStatus.FIRST_RUN_FLOW_COMPLETE, true);
|
| - editor.putBoolean(FirstRunSignInProcessor.FIRST_RUN_FLOW_SIGNIN_SETUP, false);
|
| - editor.putString(ChromeSigninController.SIGNED_IN_ACCOUNT_KEY, "user1");
|
| - editor.apply();
|
| + static class ChromeTestBackupAgent extends ChromeBackupAgent {
|
| +
|
| + private ByteArrayInputStream mInputStream;
|
| + private ByteArrayOutputStream mOutputStream;
|
| +
|
| + ChromeTestBackupAgent(byte[] mChromeInputPrefs) {
|
| + // This is protected in ContextWrapper, so can only be called within a derived
|
| + // class.
|
| + attachBaseContext(RuntimeEnvironment.application);
|
| + mInputStream = new ByteArrayInputStream(mChromeInputPrefs);
|
| + mOutputStream = new ByteArrayOutputStream();
|
| + }
|
| +
|
| + @Override
|
| + protected InputStream openInputStream(File prefsFile) throws FileNotFoundException {
|
| + return mInputStream;
|
| +
|
| + }
|
| +
|
| + @Override
|
| + protected OutputStream openOutputStream(File prefsFile) throws FileNotFoundException {
|
| + return mOutputStream;
|
| + }
|
| +
|
| + @Override
|
| + public File getDir(String name, int mode) {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + protected long getFileLength(File prefsFile) {
|
| + return mInputStream.available();
|
| + }
|
| +
|
| + byte[] getOutputData() {
|
| + return mOutputStream.toByteArray();
|
| + }
|
| }
|
|
|
| @Before
|
| - public void setUp() throws ProcessInitException {
|
| - // Set up the context.
|
| - mContext = RuntimeEnvironment.application.getApplicationContext();
|
| - ContextUtils.initApplicationContextForTests(mContext);
|
| -
|
| - // Override the native calls.
|
| - mAgent = spy(new ChromeBackupAgent());
|
| - doReturn(new String[] {"pref1"}).when(mAgent).nativeGetBoolBackupNames();
|
| - doReturn(new boolean[] {true}).when(mAgent).nativeGetBoolBackupValues();
|
| - doNothing().when(mAgent).nativeSetBoolBackupPrefs(
|
| - any(String[].class), any(boolean[].class));
|
| -
|
| - // Mock initializing the browser
|
| - doReturn(true).when(mAgent).initializeBrowser(any(Context.class));
|
| + public void setUp() throws Exception {
|
| + ContextUtils.initApplicationContextForTests(RuntimeEnvironment.application);
|
| + AccountManager manager = (AccountManager) RuntimeEnvironment.application.getSystemService(
|
| + Context.ACCOUNT_SERVICE);
|
| + manager.addAccountExplicitly(new Account("user1", "dummy"), null, null);
|
| + manager.addAccountExplicitly(new Account("user2", "dummy"), null, null);
|
| }
|
|
|
| - /**
|
| - * Test method for {@link ChromeBackupAgent#onBackup} testing first backup
|
| - *
|
| - * @throws ProcessInitException
|
| - */
|
| @Test
|
| - @SuppressWarnings("unchecked")
|
| - public void testOnBackup_firstBackup() throws FileNotFoundException, IOException,
|
| - ClassNotFoundException, ProcessInitException {
|
| - // Mock the backup data.
|
| - BackupDataOutput backupData = mock(BackupDataOutput.class);
|
| + public void testOnRestoreFinished() throws UnsupportedEncodingException {
|
| + SharedPreferences sharedPrefs = ContextUtils.getAppSharedPreferences();
|
| + SharedPreferences.Editor editor = sharedPrefs.edit();
|
| + editor.putBoolean("metrics_reporting", false);
|
| + editor.putString("google.services.username", "user1");
|
| + editor.putString("junk", "junk");
|
| + editor.apply();
|
|
|
| - // Create a state file.
|
| - File stateFile1 = File.createTempFile("Test", "");
|
| - ParcelFileDescriptor newState =
|
| - ParcelFileDescriptor.open(stateFile1, ParcelFileDescriptor.parseMode("w"));
|
| + String chromeInputPrefs =
|
| + "{\"junk1\":\"abc\", "
|
| + + "\"sync\":{ \"has_setup_completed\":\"true\", "
|
| + + " \"keep_everything_synced\":\"false\", "
|
| + + " \"junk2\":\"xxx\""
|
| + + " }}";
|
| + byte[] chromePrefsBuffer = chromeInputPrefs.getBytes("UTF-8");
|
| + ChromeTestBackupAgent chromeTestBackupAgent = new ChromeTestBackupAgent(chromePrefsBuffer);
|
| + chromeTestBackupAgent.onRestoreFinished();
|
|
|
| - // Set up some preferences to back up.
|
| - SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
|
| - setUpTestPrefs(prefs);
|
| + String chromeOutputPrefs = new String(chromeTestBackupAgent.getOutputData(), "UTF-8");
|
|
|
| - // Run the test function.
|
| - mAgent.onBackup(null, backupData, newState);
|
| + // Check that we have only restored the correct Chrome preferences
|
| + assertThat(chromeOutputPrefs, containsString("\"has_setup_completed\":\"true\""));
|
| + assertThat(chromeOutputPrefs, containsString("\"keep_everything_synced\":\"false\""));
|
| + assertThat(chromeOutputPrefs, not(containsString("junk")));
|
|
|
| - // Check that the right things were written to the backup
|
| - verify(backupData).writeEntityHeader("native.pref1", 1);
|
| - verify(backupData)
|
| - .writeEntityHeader("AndroidDefault." + FirstRunStatus.FIRST_RUN_FLOW_COMPLETE, 1);
|
| - verify(backupData, times(2)).writeEntityData(new byte[] {1}, 1);
|
| - verify(backupData)
|
| - .writeEntityHeader(
|
| - "AndroidDefault." + FirstRunSignInProcessor.FIRST_RUN_FLOW_SIGNIN_SETUP, 1);
|
| - verify(backupData).writeEntityData(new byte[] {0}, 1);
|
| - byte[] unameBytes = "user1".getBytes();
|
| - verify(backupData)
|
| - .writeEntityHeader("AndroidDefault." + ChromeSigninController.SIGNED_IN_ACCOUNT_KEY,
|
| - unameBytes.length);
|
| - verify(backupData).writeEntityData(unameBytes, unameBytes.length);
|
|
|
| - newState.close();
|
| + // Check that we have only restored the correct Android preferences
|
| + assertThat(sharedPrefs.getBoolean("metrics_reporting", true), equalTo(false));
|
| + assertThat(sharedPrefs.getString("google.services.username", null), nullValue());
|
| + assertThat(sharedPrefs.getString("junk", null), nullValue());
|
|
|
| - // Check that the state was saved correctly
|
| - ObjectInputStream newStateStream = new ObjectInputStream(new FileInputStream(stateFile1));
|
| - ArrayList<String> names = (ArrayList<String>) newStateStream.readObject();
|
| - assertThat(names.size(), equalTo(4));
|
| - assertThat(names, hasItem("native.pref1"));
|
| - assertThat(names, hasItem("AndroidDefault." + FirstRunStatus.FIRST_RUN_FLOW_COMPLETE));
|
| - assertThat(names,
|
| - hasItem("AndroidDefault." + FirstRunSignInProcessor.FIRST_RUN_FLOW_SIGNIN_SETUP));
|
| - assertThat(
|
| - names, hasItem("AndroidDefault." + ChromeSigninController.SIGNED_IN_ACCOUNT_KEY));
|
| - ArrayList<byte[]> values = (ArrayList<byte[]>) newStateStream.readObject();
|
| - assertThat(values.size(), equalTo(4));
|
| - assertThat(values, hasItem(unameBytes));
|
| - assertThat(values, hasItem(new byte[] {0}));
|
| - assertThat(values, hasItem(new byte[] {1}));
|
| - // Make sure that there are no extra objects.
|
| - assertThat(newStateStream.available(), equalTo(0));
|
| -
|
| - // Tidy up.
|
| - newStateStream.close();
|
| - stateFile1.delete();
|
| + // Check that the preferences for which there is special code are correct
|
| + assertThat(sharedPrefs.getString("first_run_signin_account_name", null), equalTo("user1"));
|
| }
|
|
|
| - /**
|
| - * Test method for {@link ChromeBackupAgent#onBackup} a second backup with the same data
|
| - */
|
| @Test
|
| - @SuppressWarnings("unchecked")
|
| - public void testOnBackup_duplicateBackup()
|
| - throws FileNotFoundException, IOException, ClassNotFoundException {
|
| - // Mock the backup data.
|
| - BackupDataOutput backupData = mock(BackupDataOutput.class);
|
| + public void testOnRestoreFinishedNoUser() throws UnsupportedEncodingException {
|
| + SharedPreferences sharedPrefs = ContextUtils.getAppSharedPreferences();
|
| + SharedPreferences.Editor editor = sharedPrefs.edit();
|
| + editor.putBoolean("metrics_reporting", false);
|
| + editor.putString("junk", "junk");
|
| + editor.apply();
|
|
|
| - // Create a state file.
|
| - File stateFile1 = File.createTempFile("Test", "");
|
| - ParcelFileDescriptor newState =
|
| - ParcelFileDescriptor.open(stateFile1, ParcelFileDescriptor.parseMode("w"));
|
| + String chromeInputPrefs =
|
| + "{\"junk1\":\"abc\", "
|
| + + "\"sync\":{ \"has_setup_completed\":\"true\", "
|
| + + " \"keep_everything_synced\":\"false\", "
|
| + + " \"junk2\":\"xxx\""
|
| + + " }}";
|
| + byte[] chromePrefsBuffer = chromeInputPrefs.getBytes("UTF-8");
|
| + ChromeTestBackupAgent chromeTestBackupAgent = new ChromeTestBackupAgent(chromePrefsBuffer);
|
| + chromeTestBackupAgent.onRestoreFinished();
|
|
|
| - // Set up some preferences to back up.
|
| - SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
|
| - setUpTestPrefs(prefs);
|
| + // Check that we haven't restored any Chrome preferences
|
| + String chromeOutputPrefs = new String(chromeTestBackupAgent.getOutputData(), "UTF-8");
|
| + assertThat(chromeOutputPrefs, equalTo(""));
|
|
|
| - // Do a first backup.
|
| - mAgent.onBackup(null, backupData, newState);
|
| -
|
| - // Minimal check on first backup, this isn't the test here.
|
| - verify(backupData, times(4)).writeEntityHeader(anyString(), anyInt());
|
| - verify(backupData, times(4)).writeEntityData(any(byte[].class), anyInt());
|
| -
|
| - newState.close();
|
| -
|
| - ParcelFileDescriptor oldState =
|
| - ParcelFileDescriptor.open(stateFile1, ParcelFileDescriptor.parseMode("r"));
|
| - File stateFile2 = File.createTempFile("Test", "");
|
| - newState = ParcelFileDescriptor.open(stateFile2, ParcelFileDescriptor.parseMode("w"));
|
| -
|
| - // Try a second backup without changing any data
|
| - mAgent.onBackup(oldState, backupData, newState);
|
| -
|
| - // Check that the second backup didn't write anything.
|
| - verifyNoMoreInteractions(backupData);
|
| -
|
| - oldState.close();
|
| - newState.close();
|
| -
|
| - // The two state files should contain identical data.
|
| - ObjectInputStream oldStateStream = new ObjectInputStream(new FileInputStream(stateFile1));
|
| - ArrayList<String> oldNames = (ArrayList<String>) oldStateStream.readObject();
|
| - ArrayList<byte[]> oldValues = (ArrayList<byte[]>) oldStateStream.readObject();
|
| - ObjectInputStream newStateStream = new ObjectInputStream(new FileInputStream(stateFile2));
|
| - ArrayList<String> newNames = (ArrayList<String>) newStateStream.readObject();
|
| - ArrayList<byte[]> newValues = (ArrayList<byte[]>) newStateStream.readObject();
|
| - assertThat(newNames, equalTo(oldNames));
|
| - assertTrue(Arrays.deepEquals(newValues.toArray(), oldValues.toArray()));
|
| - assertThat(newStateStream.available(), equalTo(0));
|
| -
|
| - // Tidy up.
|
| - oldStateStream.close();
|
| - newStateStream.close();
|
| - stateFile1.delete();
|
| - stateFile2.delete();
|
| + // Check that we haven't restored any Android preferences
|
| + assertThat(sharedPrefs.getBoolean("metrics_reporting", true), equalTo(true));
|
| + assertThat(sharedPrefs.getString("google.services.username", null), nullValue());
|
| + assertThat(sharedPrefs.getString("junk", null), nullValue());
|
| + assertThat(sharedPrefs.getString("first_run_signin_account_name", null), nullValue());
|
| }
|
|
|
| - /**
|
| - * Test method for {@link ChromeBackupAgent#onBackup} a second backup with different data
|
| - */
|
| @Test
|
| - @SuppressWarnings("unchecked")
|
| - public void testOnBackup_dataChanged()
|
| - throws FileNotFoundException, IOException, ClassNotFoundException {
|
| - // Mock the backup data.
|
| - BackupDataOutput backupData = mock(BackupDataOutput.class);
|
| -
|
| - // Create a state file.
|
| - File stateFile1 = File.createTempFile("Test", "");
|
| - ParcelFileDescriptor newState =
|
| - ParcelFileDescriptor.open(stateFile1, ParcelFileDescriptor.parseMode("w"));
|
| -
|
| - // Set up some preferences to back up.
|
| - SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
|
| - setUpTestPrefs(prefs);
|
| -
|
| - // Do a first backup.
|
| - mAgent.onBackup(null, backupData, newState);
|
| -
|
| - // Minimal check on first backup, this isn't the test here.
|
| - verify(backupData, times(4)).writeEntityHeader(anyString(), anyInt());
|
| - verify(backupData, times(4)).writeEntityData(any(byte[].class), anyInt());
|
| -
|
| - newState.close();
|
| -
|
| - ParcelFileDescriptor oldState =
|
| - ParcelFileDescriptor.open(stateFile1, ParcelFileDescriptor.parseMode("r"));
|
| - File stateFile2 = File.createTempFile("Test", "");
|
| - newState = ParcelFileDescriptor.open(stateFile2, ParcelFileDescriptor.parseMode("w"));
|
| -
|
| - // Change some data.
|
| - SharedPreferences.Editor editor = prefs.edit();
|
| - editor.putBoolean(FirstRunSignInProcessor.FIRST_RUN_FLOW_SIGNIN_SETUP, true);
|
| + public void testOnRestoreFinishedWrongUser() throws UnsupportedEncodingException {
|
| + SharedPreferences sharedPrefs = ContextUtils.getAppSharedPreferences();
|
| + SharedPreferences.Editor editor = sharedPrefs.edit();
|
| + editor.putBoolean("metrics_reporting", false);
|
| + editor.putString("google.services.username", "wrong_user");
|
| + editor.putString("junk", "junk");
|
| editor.apply();
|
|
|
| - // Do a second backup.
|
| - mAgent.onBackup(oldState, backupData, newState);
|
| + String chromeInputPrefs =
|
| + "{\"junk1\":\"abc\", "
|
| + + "\"sync\":{ \"has_setup_completed\":\"true\", "
|
| + + " \"keep_everything_synced\":\"false\", "
|
| + + " \"junk2\":\"xxx\""
|
| + + " }}";
|
| + byte[] chromePrefsBuffer = chromeInputPrefs.getBytes("UTF-8");
|
| + ChromeTestBackupAgent chromeTestBackupAgent = new ChromeTestBackupAgent(chromePrefsBuffer);
|
| + chromeTestBackupAgent.onRestoreFinished();
|
|
|
| - // Check that the second backup wrote something.
|
| - verify(backupData, times(8)).writeEntityHeader(anyString(), anyInt());
|
| - verify(backupData, times(8)).writeEntityData(any(byte[].class), anyInt());
|
| + // Check that we haven't restored any Chrome preferences
|
| + String chromeOutputPrefs = new String(chromeTestBackupAgent.getOutputData(), "UTF-8");
|
| + assertThat(chromeOutputPrefs, equalTo(""));
|
|
|
| - oldState.close();
|
| - newState.close();
|
| -
|
| - // the two state files should contain different data (although the names are unchanged).
|
| - ObjectInputStream oldStateStream = new ObjectInputStream(new FileInputStream(stateFile1));
|
| - ArrayList<String> oldNames = (ArrayList<String>) oldStateStream.readObject();
|
| - ArrayList<byte[]> oldValues = (ArrayList<byte[]>) oldStateStream.readObject();
|
| - ObjectInputStream newStateStream = new ObjectInputStream(new FileInputStream(stateFile2));
|
| - ArrayList<String> newNames = (ArrayList<String>) newStateStream.readObject();
|
| - ArrayList<byte[]> newValues = (ArrayList<byte[]>) newStateStream.readObject();
|
| - assertThat(newNames, equalTo(oldNames));
|
| - assertFalse(Arrays.deepEquals(newValues.toArray(), oldValues.toArray()));
|
| - assertThat(newStateStream.available(), equalTo(0));
|
| -
|
| - // Tidy up.
|
| - oldStateStream.close();
|
| - newStateStream.close();
|
| - stateFile1.delete();
|
| - stateFile2.delete();
|
| - }
|
| -
|
| - private BackupDataInput createMockBackupData() throws IOException {
|
| - // Mock the backup data
|
| - BackupDataInput backupData = mock(BackupDataInput.class);
|
| -
|
| - final String[] keys = {"native.pref1", "native.pref2",
|
| - "AndroidDefault." + FirstRunStatus.FIRST_RUN_FLOW_COMPLETE, "AndroidDefault.junk",
|
| - "AndroidDefault." + ChromeSigninController.SIGNED_IN_ACCOUNT_KEY};
|
| - byte[] unameBytes = "user1".getBytes();
|
| - final byte[][] values = {{0}, {1}, {1}, {23, 42}, unameBytes};
|
| - when(backupData.getKey()).thenAnswer(new Answer<String>() {
|
| - private int mPos = 0;
|
| -
|
| - @Override
|
| - public String answer(InvocationOnMock invocation) throws Throwable {
|
| - return keys[mPos++];
|
| - }
|
| - });
|
| -
|
| - when(backupData.getDataSize()).thenAnswer(new Answer<Integer>() {
|
| - private int mPos = 0;
|
| -
|
| - @Override
|
| - public Integer answer(InvocationOnMock invocation) throws Throwable {
|
| - return values[mPos++].length;
|
| - }
|
| - });
|
| -
|
| - when(backupData.readEntityData(any(byte[].class), anyInt(), anyInt()))
|
| - .thenAnswer(new Answer<Integer>() {
|
| - private int mPos = 0;
|
| -
|
| - @Override
|
| - public Integer answer(InvocationOnMock invocation) throws Throwable {
|
| - // TODO(aberent): Auto-generated method stub
|
| - byte[] buffer = invocation.getArgument(0);
|
| - for (int i = 0; i < values[mPos].length; i++) {
|
| - buffer[i] = values[mPos][i];
|
| - }
|
| - return values[mPos++].length;
|
| - }
|
| - });
|
| -
|
| - when(backupData.readNextHeader()).thenAnswer(new Answer<Boolean>() {
|
| - private int mPos = 0;
|
| -
|
| - @Override
|
| - public Boolean answer(InvocationOnMock invocation) throws Throwable {
|
| - return mPos++ < 5;
|
| - }
|
| - });
|
| - return backupData;
|
| - }
|
| -
|
| - /**
|
| - * Test method for {@link ChromeBackupAgent#onRestore}.
|
| - *
|
| - * @throws IOException
|
| - * @throws ClassNotFoundException
|
| - */
|
| - @Test
|
| - public void testOnRestore_normal() throws IOException, ClassNotFoundException {
|
| - BackupDataInput backupData = createMockBackupData();
|
| -
|
| - doReturn(true).when(mAgent).accountExistsOnDevice(any(String.class));
|
| -
|
| - // Create a state file.
|
| - File stateFile = File.createTempFile("Test", "");
|
| - ParcelFileDescriptor newState =
|
| - ParcelFileDescriptor.open(stateFile, ParcelFileDescriptor.parseMode("w"));
|
| -
|
| - // Do a restore.
|
| - mAgent.onRestore(backupData, 0, newState);
|
| - SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
|
| - assertTrue(prefs.getBoolean(FirstRunStatus.FIRST_RUN_FLOW_COMPLETE, false));
|
| - assertFalse(prefs.contains("junk"));
|
| - verify(mAgent).nativeSetBoolBackupPrefs(
|
| - new String[] {"pref1", "pref2"}, new boolean[] {false, true});
|
| - }
|
| -
|
| - /**
|
| - * Test method for {@link ChromeBackupAgent#onRestore} for a user that doesn't exist on the
|
| - * device
|
| - *
|
| - * @throws IOException
|
| - * @throws ClassNotFoundException
|
| - */
|
| - @Test
|
| - public void testOnRestore_badUser() throws IOException, ClassNotFoundException {
|
| - BackupDataInput backupData = createMockBackupData();
|
| -
|
| - doReturn(false).when(mAgent).accountExistsOnDevice(any(String.class));
|
| -
|
| - // Create a state file.
|
| - File stateFile = File.createTempFile("Test", "");
|
| - ParcelFileDescriptor newState =
|
| - ParcelFileDescriptor.open(stateFile, ParcelFileDescriptor.parseMode("w"));
|
| -
|
| - // Do a restore.
|
| - mAgent.onRestore(backupData, 0, newState);
|
| - SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
|
| - assertFalse(prefs.contains(FirstRunStatus.FIRST_RUN_FLOW_COMPLETE));
|
| - verify(mAgent, never()).nativeSetBoolBackupPrefs(any(String[].class), any(boolean[].class));
|
| + // Check that we haven't restored any Android preferences
|
| + assertThat(sharedPrefs.getBoolean("metrics_reporting", true), equalTo(true));
|
| + assertThat(sharedPrefs.getString("google.services.username", null), nullValue());
|
| + assertThat(sharedPrefs.getString("junk", null), nullValue());
|
| + assertThat(sharedPrefs.getString("first_run_signin_account_name", null), nullValue());
|
| }
|
| }
|
|
|