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

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: Address review comments 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 be7628736db87cb8043c7407f86deca8c0a3dd84..3b792d0e2f3a151fade06c7849f37dccdba6c34d 100644
--- a/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java
+++ b/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java
@@ -25,8 +25,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;
@@ -39,6 +41,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();
@@ -122,13 +130,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;
}
}
« components/signin/core/browser/signin_manager_base.cc ('K') | « google_apis/drive/auth_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698