Index: chrome/browser/extensions/api/identity/identity_api.cc |
diff --git a/chrome/browser/extensions/api/identity/identity_api.cc b/chrome/browser/extensions/api/identity/identity_api.cc |
index f0ee21958b983b0ce2fb58fa6c194f17f13423ab..4b74c3fe3091562a2cdfa3c8fab47451caee05a5 100644 |
--- a/chrome/browser/extensions/api/identity/identity_api.cc |
+++ b/chrome/browser/extensions/api/identity/identity_api.cc |
@@ -143,7 +143,8 @@ IdentityAPI::IdentityAPI(content::BrowserContext* context) |
LoginUIServiceFactory::GetShowLoginPopupCallbackForProfile( |
Profile::FromBrowserContext(context))), |
account_tracker_(&profile_identity_provider_, |
- g_browser_process->system_request_context()) { |
+ g_browser_process->system_request_context()), |
+ get_auth_token_function_(nullptr) { |
account_tracker_.AddObserver(this); |
} |
@@ -207,8 +208,8 @@ std::string IdentityAPI::FindAccountKeyByGaiaId(const std::string& gaia_id) { |
} |
void IdentityAPI::Shutdown() { |
- for (auto& observer : shutdown_observer_list_) |
- observer.OnShutdown(); |
+ if (get_auth_token_function_) |
+ get_auth_token_function_->Shutdown(); |
account_tracker_.RemoveObserver(this); |
account_tracker_.Shutdown(); |
} |
@@ -242,14 +243,6 @@ void IdentityAPI::OnAccountSignInChanged(const gaia::AccountIds& ids, |
EventRouter::Get(browser_context_)->BroadcastEvent(std::move(event)); |
} |
-void IdentityAPI::AddShutdownObserver(ShutdownObserver* observer) { |
- shutdown_observer_list_.AddObserver(observer); |
-} |
- |
-void IdentityAPI::RemoveShutdownObserver(ShutdownObserver* observer) { |
- shutdown_observer_list_.RemoveObserver(observer); |
-} |
- |
void IdentityAPI::SetAccountStateForTest(gaia::AccountIds ids, |
bool is_signed_in) { |
account_tracker_.SetAccountStateForTest(ids, is_signed_in); |
@@ -408,13 +401,13 @@ void IdentityGetAuthTokenFunction::StartAsyncRun() { |
AddRef(); |
extensions::IdentityAPI::GetFactoryInstance() |
->Get(GetProfile()) |
- ->AddShutdownObserver(this); |
+ ->set_get_auth_token_function(this); |
} |
void IdentityGetAuthTokenFunction::CompleteAsyncRun(bool success) { |
extensions::IdentityAPI::GetFactoryInstance() |
->Get(GetProfile()) |
- ->RemoveShutdownObserver(this); |
+ ->set_get_auth_token_function(nullptr); |
SendResponse(success); |
Release(); // Balanced in StartAsyncRun |
@@ -746,7 +739,7 @@ void IdentityGetAuthTokenFunction::OnGetTokenFailure( |
OnGaiaFlowFailure(GaiaWebAuthFlow::SERVICE_AUTH_ERROR, error, std::string()); |
} |
-void IdentityGetAuthTokenFunction::OnShutdown() { |
+void IdentityGetAuthTokenFunction::Shutdown() { |
gaia_web_auth_flow_.reset(); |
signin_flow_.reset(); |
login_token_request_.reset(); |