| 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..410abadf275aa39c4f1240350a99f38e0a3c3235 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
|
| @@ -587,6 +587,19 @@ public class SigninManager implements AccountTrackerService.OnSystemAccountsSeed
|
| onSignOutDone();
|
| }
|
|
|
| + // Sign out can be initiated in native code, outside this SigninManager.
|
| + // onNativeSignOut() notifies us of this so we can clean up android specific
|
| + // state.
|
| + @CalledByNative
|
| + private void onNativeSignOut() {
|
| + // If mSignOutCallback != null, two things are true:
|
| + // 1) signOut() is in progress, so we don't need to invoke it again.
|
| + // 2) If we did invoke it again, doing so would not be idempotent.
|
| + if (ChromeSigninController.get(mContext).isSignedIn() && mSignOutCallback == null) {
|
| + signOut();
|
| + }
|
| + }
|
| +
|
| private void onSignOutDone() {
|
| if (mSignOutCallback != null) {
|
| new Handler().post(mSignOutCallback);
|
|
|