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

Unified Diff: sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java

Issue 617183003: Make sure GetAuthenticatedAccountId() returns a canonicalized id. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 6 years, 2 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: sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java
diff --git a/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java b/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java
index 03df234224d92eee9326a186433c6a714cb12936..aa4c39406ae00fcf4f18cfb4162338c115208b75 100644
--- a/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java
+++ b/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java
@@ -24,8 +24,10 @@ import org.chromium.net.NetworkChangeNotifier;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.regex.Pattern;
import javax.annotation.Nullable;
@@ -38,6 +40,12 @@ public class AccountManagerHelper {
private static final String TAG = "AccountManagerHelper";
+ private static final Pattern AT_SYMBOL = Pattern.compile("@");
+
+ private static final String GMAIL_COM = "gmail.com";
+
+ private static final String GOOGLEMAIL_COM = "googlemail.com";
+
public static final String GOOGLE_ACCOUNT_TYPE = "com.google";
private static final Object sLock = new Object();
@@ -124,13 +132,27 @@ public class AccountManagerHelper {
return getGoogleAccounts().length > 0;
}
+ private String canonicalizeName(String name) {
+ String[] parts = AT_SYMBOL.split(name);
+ if (parts.length != 2) return name;
+
+ if (GOOGLEMAIL_COM.equalsIgnoreCase(parts[1])) {
+ parts[1] = GMAIL_COM;
+ }
+ if (GMAIL_COM.equalsIgnoreCase(parts[1])) {
+ parts[0] = parts[0].replace(".", "");
+ }
+ return (parts[0] + "@" + parts[1]).toLowerCase(Locale.US);
+ }
+
/**
* Returns the account if it exists, null otherwise.
*/
public Account getAccountFromName(String accountName) {
- Account[] accounts = mAccountManager.getAccountsByType(GOOGLE_ACCOUNT_TYPE);
+ String canonicalName = canonicalizeName(accountName);
+ Account[] accounts = getGoogleAccounts();
for (Account account : accounts) {
- if (account.name.equals(accountName)) {
+ if (canonicalizeName(account.name).equals(canonicalName)) {
return account;
}
}

Powered by Google App Engine
This is Rietveld 408576698