| Index: chrome/browser/signin/signin_manager.cc
|
| diff --git a/chrome/browser/signin/signin_manager.cc b/chrome/browser/signin/signin_manager.cc
|
| index a5047b1c67b08008e295a9f976357fa2fe1a686e..fb94eb1c3942f6f45af04b458eb937f439ec71f8 100644
|
| --- a/chrome/browser/signin/signin_manager.cc
|
| +++ b/chrome/browser/signin/signin_manager.cc
|
| @@ -194,6 +194,7 @@ bool SigninManager::IsAllowedUsername(const std::string& username,
|
|
|
| SigninManager::SigninManager()
|
| : profile_(NULL),
|
| + prohibit_signout_(false),
|
| had_two_factor_error_(false),
|
| type_(SIGNIN_TYPE_NONE),
|
| weak_pointer_factory_(this) {
|
| @@ -542,6 +543,10 @@ void SigninManager::HandleAuthError(const GoogleServiceAuthError& error,
|
|
|
| void SigninManager::SignOut() {
|
| DCHECK(IsInitialized());
|
| + if (prohibit_signout_) {
|
| + DVLOG(1) << "Ignoring attempt to sign out while signout is prohibited";
|
| + return;
|
| + }
|
| if (authenticated_username_.empty() && !client_login_.get()) {
|
| // Clean up our transient data and exit if we aren't signed in (or in the
|
| // process of signing in). This avoids a perf regression from clearing out
|
| @@ -889,6 +894,14 @@ void SigninManager::Shutdown() {
|
| }
|
| }
|
|
|
| +void SigninManager::ProhibitSignout() {
|
| + prohibit_signout_ = true;
|
| +}
|
| +
|
| +bool SigninManager::IsSignoutProhibited() const {
|
| + return prohibit_signout_;
|
| +}
|
| +
|
| void SigninManager::OnGoogleServicesUsernamePatternChanged() {
|
| if (!authenticated_username_.empty() &&
|
| !IsAllowedUsername(authenticated_username_)) {
|
|
|