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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninHelperTest.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? 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/javatests/src/org/chromium/chrome/browser/signin/SigninHelperTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninHelperTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninHelperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..7664a38553af36e393b92b3e310e465a22384cd4
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninHelperTest.java
@@ -0,0 +1,146 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.signin;
+
+import android.content.Context;
+import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import org.chromium.base.test.util.AdvancedMockContext;
+import org.chromium.sync.signin.ChromeSigninController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Instrumentation tests for {@link SigninHelper}.
+ */
+public class SigninHelperTest extends InstrumentationTestCase {
+ private AdvancedMockContext mContext;
+ private MockChangeEventChecker mEventChecker;
+
+ @Override
+ public void setUp() {
+ mContext = new AdvancedMockContext(getInstrumentation().getTargetContext());
+ mEventChecker = new MockChangeEventChecker();
+ }
+
+ @SmallTest
+ public void testAccountsChangedPref() {
+ assertEquals("Should never return true before the pref has ever been set.",
+ false, SigninHelper.checkAndClearAccountsChangedPref(mContext));
+ assertEquals("Should never return true before the pref has ever been set.",
+ false, SigninHelper.checkAndClearAccountsChangedPref(mContext));
+
+ // Mark the pref as set.
+ SigninHelper.markAccountsChangedPref(mContext);
+
+ assertEquals("Should return true first time after marking accounts changed",
+ true, SigninHelper.checkAndClearAccountsChangedPref(mContext));
+ assertEquals("Should only return true first time after marking accounts changed",
+ false, SigninHelper.checkAndClearAccountsChangedPref(mContext));
+ assertEquals("Should only return true first time after marking accounts changed",
+ false, SigninHelper.checkAndClearAccountsChangedPref(mContext));
+
+ // Mark the pref as set again.
+ SigninHelper.markAccountsChangedPref(mContext);
+
+ assertEquals("Should return true first time after marking accounts changed",
+ true, SigninHelper.checkAndClearAccountsChangedPref(mContext));
+ assertEquals("Should only return true first time after marking accounts changed",
+ false, SigninHelper.checkAndClearAccountsChangedPref(mContext));
+ assertEquals("Should only return true first time after marking accounts changed",
+ false, SigninHelper.checkAndClearAccountsChangedPref(mContext));
+ }
+
+ @SmallTest
+ public void testSimpleAccountRename() {
+ setSignedInAccountName("A");
+ mEventChecker.insertRenameEvent("A", "B");
+ SigninHelper.updateAccountRenameData(mContext, mEventChecker);
+ assertEquals("B", getNewSignedInAccountName());
+ }
+
+ @SmallTest
+ public void testNotSignedInAccountRename() {
+ setSignedInAccountName("A");
+ mEventChecker.insertRenameEvent("B", "C");
+ SigninHelper.updateAccountRenameData(mContext, mEventChecker);
+ assertEquals(null, getNewSignedInAccountName());
+ }
+
+ @SmallTest
+ public void testSimpleAccountRenameTwice() {
+ setSignedInAccountName("A");
+ mEventChecker.insertRenameEvent("A", "B");
+ SigninHelper.updateAccountRenameData(mContext, mEventChecker);
+ assertEquals("B", getNewSignedInAccountName());
+ mEventChecker.insertRenameEvent("B", "C");
+ SigninHelper.updateAccountRenameData(mContext, mEventChecker);
+ assertEquals("C", getNewSignedInAccountName());
+ }
+
+ @SmallTest
+ public void testNotSignedInAccountRename2() {
+ setSignedInAccountName("A");
+ mEventChecker.insertRenameEvent("B", "C");
+ mEventChecker.insertRenameEvent("C", "D");
+ SigninHelper.updateAccountRenameData(mContext, mEventChecker);
+ assertEquals(null, getNewSignedInAccountName());
+ }
+
+ @SmallTest
+ public void testChainedAccountRename2() {
+ setSignedInAccountName("A");
+ mEventChecker.insertRenameEvent("Z", "Y"); // Unrelated.
+ mEventChecker.insertRenameEvent("A", "B");
+ mEventChecker.insertRenameEvent("Y", "X"); // Unrelated.
+ mEventChecker.insertRenameEvent("B", "C");
+ mEventChecker.insertRenameEvent("C", "D");
+ SigninHelper.updateAccountRenameData(mContext, mEventChecker);
+ assertEquals("D", getNewSignedInAccountName());
+ }
+
+ private void setSignedInAccountName(String account) {
+ ChromeSigninController.get(mContext).setSignedInAccountName(account);
+ }
+
+ private String getSignedInAccountName() {
+ return ChromeSigninController.get(mContext).getSignedInAccountName();
+ }
+
+ private String getNewSignedInAccountName() {
+ return SigninHelper.getNewSignedInAccountName(mContext);
+ }
+
+ private static final class MockChangeEventChecker
+ implements SigninHelper.AccountChangeEventChecker {
+ private Map<String, List<String>> mEvents =
+ new HashMap<String, List<String>>();
+
+ @Override
+ public List<String> getAccountChangeEvents(
+ Context context, int index, String accountName) {
+ List<String> eventsList = getEventList(accountName);
+ return eventsList.subList(index, eventsList.size());
+ }
+
+ private void insertRenameEvent(String from, String to) {
+ List<String> eventsList = getEventList(from);
+ eventsList.add(to);
+ }
+
+ private List<String> getEventList(String account) {
+ List<String> eventsList = mEvents.get(account);
+ if (eventsList == null) {
+ eventsList = new ArrayList<String>();
+ mEvents.put(account, eventsList);
+ }
+ return eventsList;
+ }
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698