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

Side by Side Diff: chrome/browser/extensions/api/identity/identity_api.cc

Issue 2673443002: Remove IdentityGetAuthTokenFunction interface dep on IdentityAPI (Closed)
Patch Set: Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/identity/identity_api.h" 5 #include "chrome/browser/extensions/api/identity/identity_api.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <set> 10 #include <set>
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 IdentityAPI::IdentityAPI(content::BrowserContext* context) 136 IdentityAPI::IdentityAPI(content::BrowserContext* context)
137 : browser_context_(context), 137 : browser_context_(context),
138 profile_identity_provider_( 138 profile_identity_provider_(
139 SigninManagerFactory::GetForProfile( 139 SigninManagerFactory::GetForProfile(
140 Profile::FromBrowserContext(context)), 140 Profile::FromBrowserContext(context)),
141 ProfileOAuth2TokenServiceFactory::GetForProfile( 141 ProfileOAuth2TokenServiceFactory::GetForProfile(
142 Profile::FromBrowserContext(context)), 142 Profile::FromBrowserContext(context)),
143 LoginUIServiceFactory::GetShowLoginPopupCallbackForProfile( 143 LoginUIServiceFactory::GetShowLoginPopupCallbackForProfile(
144 Profile::FromBrowserContext(context))), 144 Profile::FromBrowserContext(context))),
145 account_tracker_(&profile_identity_provider_, 145 account_tracker_(&profile_identity_provider_,
146 g_browser_process->system_request_context()) { 146 g_browser_process->system_request_context()),
147 get_auth_token_function_(nullptr) {
147 account_tracker_.AddObserver(this); 148 account_tracker_.AddObserver(this);
148 } 149 }
149 150
150 IdentityAPI::~IdentityAPI() {} 151 IdentityAPI::~IdentityAPI() {}
151 152
152 IdentityMintRequestQueue* IdentityAPI::mint_queue() { return &mint_queue_; } 153 IdentityMintRequestQueue* IdentityAPI::mint_queue() { return &mint_queue_; }
153 154
154 void IdentityAPI::SetCachedToken(const ExtensionTokenKey& key, 155 void IdentityAPI::SetCachedToken(const ExtensionTokenKey& key,
155 const IdentityTokenCacheValue& token_data) { 156 const IdentityTokenCacheValue& token_data) {
156 CachedTokens::iterator it = token_cache_.find(key); 157 CachedTokens::iterator it = token_cache_.find(key);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 } 201 }
201 202
202 return gaia_ids; 203 return gaia_ids;
203 } 204 }
204 205
205 std::string IdentityAPI::FindAccountKeyByGaiaId(const std::string& gaia_id) { 206 std::string IdentityAPI::FindAccountKeyByGaiaId(const std::string& gaia_id) {
206 return account_tracker_.FindAccountIdsByGaiaId(gaia_id).account_key; 207 return account_tracker_.FindAccountIdsByGaiaId(gaia_id).account_key;
207 } 208 }
208 209
209 void IdentityAPI::Shutdown() { 210 void IdentityAPI::Shutdown() {
210 for (auto& observer : shutdown_observer_list_) 211 if (get_auth_token_function_)
211 observer.OnShutdown(); 212 get_auth_token_function_->Shutdown();
212 account_tracker_.RemoveObserver(this); 213 account_tracker_.RemoveObserver(this);
213 account_tracker_.Shutdown(); 214 account_tracker_.Shutdown();
214 } 215 }
215 216
216 static base::LazyInstance<BrowserContextKeyedAPIFactory<IdentityAPI> > 217 static base::LazyInstance<BrowserContextKeyedAPIFactory<IdentityAPI> >
217 g_factory = LAZY_INSTANCE_INITIALIZER; 218 g_factory = LAZY_INSTANCE_INITIALIZER;
218 219
219 // static 220 // static
220 BrowserContextKeyedAPIFactory<IdentityAPI>* IdentityAPI::GetFactoryInstance() { 221 BrowserContextKeyedAPIFactory<IdentityAPI>* IdentityAPI::GetFactoryInstance() {
221 return g_factory.Pointer(); 222 return g_factory.Pointer();
(...skipping 13 matching lines...) Expand all
235 std::unique_ptr<base::ListValue> args = 236 std::unique_ptr<base::ListValue> args =
236 api::identity::OnSignInChanged::Create(account_info, is_signed_in); 237 api::identity::OnSignInChanged::Create(account_info, is_signed_in);
237 std::unique_ptr<Event> event( 238 std::unique_ptr<Event> event(
238 new Event(events::IDENTITY_ON_SIGN_IN_CHANGED, 239 new Event(events::IDENTITY_ON_SIGN_IN_CHANGED,
239 api::identity::OnSignInChanged::kEventName, std::move(args), 240 api::identity::OnSignInChanged::kEventName, std::move(args),
240 browser_context_)); 241 browser_context_));
241 242
242 EventRouter::Get(browser_context_)->BroadcastEvent(std::move(event)); 243 EventRouter::Get(browser_context_)->BroadcastEvent(std::move(event));
243 } 244 }
244 245
245 void IdentityAPI::AddShutdownObserver(ShutdownObserver* observer) {
246 shutdown_observer_list_.AddObserver(observer);
247 }
248
249 void IdentityAPI::RemoveShutdownObserver(ShutdownObserver* observer) {
250 shutdown_observer_list_.RemoveObserver(observer);
251 }
252
253 void IdentityAPI::SetAccountStateForTest(gaia::AccountIds ids, 246 void IdentityAPI::SetAccountStateForTest(gaia::AccountIds ids,
254 bool is_signed_in) { 247 bool is_signed_in) {
255 account_tracker_.SetAccountStateForTest(ids, is_signed_in); 248 account_tracker_.SetAccountStateForTest(ids, is_signed_in);
256 } 249 }
257 250
258 template <> 251 template <>
259 void BrowserContextKeyedAPIFactory<IdentityAPI>::DeclareFactoryDependencies() { 252 void BrowserContextKeyedAPIFactory<IdentityAPI>::DeclareFactoryDependencies() {
260 DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory()); 253 DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory());
261 DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance()); 254 DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance());
262 } 255 }
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 } 394 }
402 395
403 return true; 396 return true;
404 } 397 }
405 398
406 void IdentityGetAuthTokenFunction::StartAsyncRun() { 399 void IdentityGetAuthTokenFunction::StartAsyncRun() {
407 // Balanced in CompleteAsyncRun 400 // Balanced in CompleteAsyncRun
408 AddRef(); 401 AddRef();
409 extensions::IdentityAPI::GetFactoryInstance() 402 extensions::IdentityAPI::GetFactoryInstance()
410 ->Get(GetProfile()) 403 ->Get(GetProfile())
411 ->AddShutdownObserver(this); 404 ->set_get_auth_token_function(this);
412 } 405 }
413 406
414 void IdentityGetAuthTokenFunction::CompleteAsyncRun(bool success) { 407 void IdentityGetAuthTokenFunction::CompleteAsyncRun(bool success) {
415 extensions::IdentityAPI::GetFactoryInstance() 408 extensions::IdentityAPI::GetFactoryInstance()
416 ->Get(GetProfile()) 409 ->Get(GetProfile())
417 ->RemoveShutdownObserver(this); 410 ->set_get_auth_token_function(nullptr);
418 411
419 SendResponse(success); 412 SendResponse(success);
420 Release(); // Balanced in StartAsyncRun 413 Release(); // Balanced in StartAsyncRun
421 } 414 }
422 415
423 void IdentityGetAuthTokenFunction::CompleteFunctionWithResult( 416 void IdentityGetAuthTokenFunction::CompleteFunctionWithResult(
424 const std::string& access_token) { 417 const std::string& access_token) {
425 SetResult(base::MakeUnique<base::StringValue>(access_token)); 418 SetResult(base::MakeUnique<base::StringValue>(access_token));
426 CompleteAsyncRun(true); 419 CompleteAsyncRun(true);
427 } 420 }
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 TRACE_EVENT_ASYNC_STEP_PAST1("identity", 732 TRACE_EVENT_ASYNC_STEP_PAST1("identity",
740 "IdentityGetAuthTokenFunction", 733 "IdentityGetAuthTokenFunction",
741 this, 734 this,
742 "OnGetTokenFailure", 735 "OnGetTokenFailure",
743 "error", 736 "error",
744 error.ToString()); 737 error.ToString());
745 login_token_request_.reset(); 738 login_token_request_.reset();
746 OnGaiaFlowFailure(GaiaWebAuthFlow::SERVICE_AUTH_ERROR, error, std::string()); 739 OnGaiaFlowFailure(GaiaWebAuthFlow::SERVICE_AUTH_ERROR, error, std::string());
747 } 740 }
748 741
749 void IdentityGetAuthTokenFunction::OnShutdown() { 742 void IdentityGetAuthTokenFunction::Shutdown() {
750 gaia_web_auth_flow_.reset(); 743 gaia_web_auth_flow_.reset();
751 signin_flow_.reset(); 744 signin_flow_.reset();
752 login_token_request_.reset(); 745 login_token_request_.reset();
753 extensions::IdentityAPI::GetFactoryInstance() 746 extensions::IdentityAPI::GetFactoryInstance()
754 ->Get(GetProfile()) 747 ->Get(GetProfile())
755 ->mint_queue() 748 ->mint_queue()
756 ->RequestCancel(*token_key_, this); 749 ->RequestCancel(*token_key_, this);
757 CompleteFunctionWithError(identity_constants::kCanceled); 750 CompleteFunctionWithError(identity_constants::kCanceled);
758 } 751 }
759 752
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 // Component apps using auto_approve may use Chrome's client ID by 867 // Component apps using auto_approve may use Chrome's client ID by
875 // omitting the field. 868 // omitting the field.
876 if (client_id.empty() && extension()->location() == Manifest::COMPONENT && 869 if (client_id.empty() && extension()->location() == Manifest::COMPONENT &&
877 oauth2_info.auto_approve) { 870 oauth2_info.auto_approve) {
878 client_id = GaiaUrls::GetInstance()->oauth2_chrome_client_id(); 871 client_id = GaiaUrls::GetInstance()->oauth2_chrome_client_id();
879 } 872 }
880 return client_id; 873 return client_id;
881 } 874 }
882 875
883 } // namespace extensions 876 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/identity/identity_api.h ('k') | chrome/browser/extensions/api/identity/identity_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698