| Index: chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
|
| index 995a0e5e7850767ae1a8428deac2087b5caa54db..86ca04257cea3b02fae2f8c5346b046ea88b9aa0 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
|
| @@ -77,6 +77,8 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
|
|
|
| private boolean mSigninAllowedByPolicy;
|
|
|
| + private boolean mSignOutInProgress;
|
| +
|
| /**
|
| * A SignInStateObserver is notified when the user signs in to or out of Chrome.
|
| */
|
| @@ -516,6 +518,7 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
|
| * @param wipeDataHooks Hooks to call during data wiping in case the account is managed.
|
| */
|
| public void signOut(Runnable callback, WipeDataHooks wipeDataHooks) {
|
| + mSignOutInProgress = true;
|
| mSignOutCallback = callback;
|
|
|
| boolean wipeData = getManagementDomain() != null;
|
| @@ -587,7 +590,15 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
|
| onSignOutDone();
|
| }
|
|
|
| + @CalledByNative
|
| + private void onNativeSignOut() {
|
| + if (!mSignOutInProgress) {
|
| + signOut();
|
| + }
|
| + }
|
| +
|
| private void onSignOutDone() {
|
| + mSignOutInProgress = false;
|
| if (mSignOutCallback != null) {
|
| new Handler().post(mSignOutCallback);
|
| mSignOutCallback = null;
|
|
|