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

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

Issue 11882025: Move "oauth2" manifest key parsing out of Extension class. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 7 years, 11 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 | Annotate | Revision Log
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 "base/lazy_instance.h"
7 #include "base/values.h" 8 #include "base/values.h"
8 #include "chrome/common/extensions/api/experimental_identity.h" 9 #include "chrome/common/extensions/api/experimental_identity.h"
9 #include "chrome/browser/extensions/extension_install_prompt.h" 10 #include "chrome/browser/extensions/extension_install_prompt.h"
10 #include "chrome/browser/extensions/extension_function_dispatcher.h" 11 #include "chrome/browser/extensions/extension_function_dispatcher.h"
11 #include "chrome/browser/extensions/extension_service.h" 12 #include "chrome/browser/extensions/extension_service.h"
12 #include "chrome/browser/extensions/permissions_updater.h" 13 #include "chrome/browser/extensions/permissions_updater.h"
13 #include "chrome/browser/signin/token_service.h" 14 #include "chrome/browser/signin/token_service.h"
14 #include "chrome/browser/signin/token_service_factory.h" 15 #include "chrome/browser/signin/token_service_factory.h"
15 #include "chrome/browser/ui/browser.h" 16 #include "chrome/browser/ui/browser.h"
16 #include "chrome/browser/ui/browser_navigator.h" 17 #include "chrome/browser/ui/browser_navigator.h"
17 #include "chrome/browser/ui/webui/signin/login_ui_service.h" 18 #include "chrome/browser/ui/webui/signin/login_ui_service.h"
18 #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" 19 #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h"
19 #include "chrome/browser/ui/webui/sync_promo/sync_promo_ui.h" 20 #include "chrome/browser/ui/webui/sync_promo/sync_promo_ui.h"
21 #include "chrome/common/extensions/api/identity/oauth2_manifest_handler.h"
20 #include "chrome/common/extensions/extension.h" 22 #include "chrome/common/extensions/extension.h"
23 #include "chrome/common/extensions/extension_manifest_constants.h"
21 #include "chrome/common/url_constants.h" 24 #include "chrome/common/url_constants.h"
22 #include "content/public/common/page_transition_types.h" 25 #include "content/public/common/page_transition_types.h"
23 #include "googleurl/src/gurl.h" 26 #include "googleurl/src/gurl.h"
24 #include "webkit/glue/window_open_disposition.h" 27 #include "webkit/glue/window_open_disposition.h"
25 28
26 namespace extensions { 29 namespace extensions {
27 30
28 namespace identity_constants { 31 namespace identity_constants {
29 const char kInvalidClientId[] = "Invalid OAuth2 Client ID."; 32 const char kInvalidClientId[] = "Invalid OAuth2 Client ID.";
30 const char kInvalidScopes[] = "Invalid OAuth2 scopes."; 33 const char kInvalidScopes[] = "Invalid OAuth2 scopes.";
31 const char kAuthFailure[] = "OAuth2 request failed: "; 34 const char kAuthFailure[] = "OAuth2 request failed: ";
32 const char kNoGrant[] = "OAuth2 not granted or revoked."; 35 const char kNoGrant[] = "OAuth2 not granted or revoked.";
33 const char kUserRejected[] = "The user did not approve access."; 36 const char kUserRejected[] = "The user did not approve access.";
34 const char kUserNotSignedIn[] = "The user is not signed in."; 37 const char kUserNotSignedIn[] = "The user is not signed in.";
35 const char kInvalidRedirect[] = "Did not redirect to the right URL."; 38 const char kInvalidRedirect[] = "Did not redirect to the right URL.";
36 } 39 }
Devlin 2013/01/14 20:18:34 since you're in the file, please add a "// namespa
SanjoyPal 2013/01/16 19:10:52 Done.
37 40
38 namespace GetAuthToken = extensions::api::experimental_identity::GetAuthToken; 41 namespace GetAuthToken = extensions::api::experimental_identity::GetAuthToken;
39 namespace LaunchWebAuthFlow = 42 namespace LaunchWebAuthFlow =
40 extensions::api::experimental_identity::LaunchWebAuthFlow; 43 extensions::api::experimental_identity::LaunchWebAuthFlow;
41 namespace identity = extensions::api::experimental_identity; 44 namespace identity = extensions::api::experimental_identity;
42 45
43 IdentityGetAuthTokenFunction::IdentityGetAuthTokenFunction() 46 IdentityGetAuthTokenFunction::IdentityGetAuthTokenFunction()
44 : interactive_(false) {} 47 : interactive_(false) {}
45 IdentityGetAuthTokenFunction::~IdentityGetAuthTokenFunction() {} 48 IdentityGetAuthTokenFunction::~IdentityGetAuthTokenFunction() {}
46 49
47 bool IdentityGetAuthTokenFunction::RunImpl() { 50 bool IdentityGetAuthTokenFunction::RunImpl() {
48 scoped_ptr<GetAuthToken::Params> params(GetAuthToken::Params::Create(*args_)); 51 scoped_ptr<GetAuthToken::Params> params(GetAuthToken::Params::Create(*args_));
49 EXTENSION_FUNCTION_VALIDATE(params.get()); 52 EXTENSION_FUNCTION_VALIDATE(params.get());
50 if (params->details.get() && params->details->interactive.get()) 53 if (params->details.get() && params->details->interactive.get())
51 interactive_ = *params->details->interactive; 54 interactive_ = *params->details->interactive;
52 55
53 const Extension::OAuth2Info& oauth2_info = GetExtension()->oauth2_info(); 56 const extensions::OAuth2Info* oauth2_info =
Devlin 2013/01/14 20:18:34 You're in the extensions namespace - you don't nee
SanjoyPal 2013/01/16 19:10:52 Done.
57 OAuth2Info::GetOAuth2Info(GetExtension());
54 58
55 // Check that the necessary information is present in the manfist. 59 // Check that the necessary information is present in the manfist.
56 if (oauth2_info.client_id.empty()) { 60 if (oauth2_info->client_id.empty()) {
57 error_ = identity_constants::kInvalidClientId; 61 error_ = identity_constants::kInvalidClientId;
58 return false; 62 return false;
59 } 63 }
60 64
61 if (oauth2_info.scopes.size() == 0) { 65 if (oauth2_info->scopes.size() == 0) {
62 error_ = identity_constants::kInvalidScopes; 66 error_ = identity_constants::kInvalidScopes;
63 return false; 67 return false;
64 } 68 }
65 69
66 // Balanced in OnIssueAdviceSuccess|OnMintTokenSuccess|OnMintTokenFailure| 70 // Balanced in OnIssueAdviceSuccess|OnMintTokenSuccess|OnMintTokenFailure|
67 // InstallUIAbort|OnLoginUIClosed. 71 // InstallUIAbort|OnLoginUIClosed.
68 AddRef(); 72 AddRef();
69 73
70 if (!HasLoginToken()) { 74 if (!HasLoginToken()) {
71 if (StartLogin()) { 75 if (StartLogin()) {
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 login_ui_service->ShowLoginPopup(); 180 login_ui_service->ShowLoginPopup();
177 } 181 }
178 182
179 void IdentityGetAuthTokenFunction::ShowOAuthApprovalDialog( 183 void IdentityGetAuthTokenFunction::ShowOAuthApprovalDialog(
180 const IssueAdviceInfo& issue_advice) { 184 const IssueAdviceInfo& issue_advice) {
181 install_ui_->ConfirmIssueAdvice(this, GetExtension(), issue_advice); 185 install_ui_->ConfirmIssueAdvice(this, GetExtension(), issue_advice);
182 } 186 }
183 187
184 OAuth2MintTokenFlow* IdentityGetAuthTokenFunction::CreateMintTokenFlow( 188 OAuth2MintTokenFlow* IdentityGetAuthTokenFunction::CreateMintTokenFlow(
185 OAuth2MintTokenFlow::Mode mode) { 189 OAuth2MintTokenFlow::Mode mode) {
186 const Extension::OAuth2Info& oauth2_info = GetExtension()->oauth2_info(); 190 const extensions::OAuth2Info* oauth2_info =
191 OAuth2Info::GetOAuth2Info(GetExtension());
187 TokenService* token_service = TokenServiceFactory::GetForProfile(profile()); 192 TokenService* token_service = TokenServiceFactory::GetForProfile(profile());
188 return new OAuth2MintTokenFlow( 193 return new OAuth2MintTokenFlow(
189 profile()->GetRequestContext(), 194 profile()->GetRequestContext(),
190 this, 195 this,
191 OAuth2MintTokenFlow::Parameters( 196 OAuth2MintTokenFlow::Parameters(
192 token_service->GetOAuth2LoginRefreshToken(), 197 token_service->GetOAuth2LoginRefreshToken(),
193 GetExtension()->id(), 198 GetExtension()->id(),
194 oauth2_info.client_id, 199 oauth2_info->client_id,
195 oauth2_info.scopes, 200 oauth2_info->scopes,
196 mode)); 201 mode));
197 } 202 }
198 203
199 bool IdentityGetAuthTokenFunction::HasLoginToken() const { 204 bool IdentityGetAuthTokenFunction::HasLoginToken() const {
200 TokenService* token_service = TokenServiceFactory::GetForProfile(profile()); 205 TokenService* token_service = TokenServiceFactory::GetForProfile(profile());
201 return token_service->HasOAuthLoginToken(); 206 return token_service->HasOAuthLoginToken();
202 } 207 }
203 208
204 IdentityLaunchWebAuthFlowFunction::IdentityLaunchWebAuthFlowFunction() {} 209 IdentityLaunchWebAuthFlowFunction::IdentityLaunchWebAuthFlowFunction() {}
205 IdentityLaunchWebAuthFlowFunction::~IdentityLaunchWebAuthFlowFunction() {} 210 IdentityLaunchWebAuthFlowFunction::~IdentityLaunchWebAuthFlowFunction() {}
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 SendResponse(true); 250 SendResponse(true);
246 Release(); // Balanced in RunImpl. 251 Release(); // Balanced in RunImpl.
247 } 252 }
248 253
249 void IdentityLaunchWebAuthFlowFunction::OnAuthFlowFailure() { 254 void IdentityLaunchWebAuthFlowFunction::OnAuthFlowFailure() {
250 error_ = identity_constants::kInvalidRedirect; 255 error_ = identity_constants::kInvalidRedirect;
251 SendResponse(false); 256 SendResponse(false);
252 Release(); // Balanced in RunImpl. 257 Release(); // Balanced in RunImpl.
253 } 258 }
254 259
260 IdentityAPI::IdentityAPI(Profile* profile) {
261 ManifestHandler::Register(extension_manifest_keys::kOAuth2,
Devlin 2013/01/14 20:18:34 Include what you use - c/c/e/manifest_handler.h.
SanjoyPal 2013/01/16 19:10:52 Done.
262 new OAuth2ManifestHandler);
263 }
264
265 IdentityAPI::~IdentityAPI() {
266 }
267
268 static base::LazyInstance<ProfileKeyedAPIFactory<IdentityAPI> >
269 g_factory = LAZY_INSTANCE_INITIALIZER;
Devlin 2013/01/14 20:18:34 Indentation.
SanjoyPal 2013/01/16 19:10:52 Done.
270
271 // static
272 ProfileKeyedAPIFactory<IdentityAPI>* IdentityAPI::GetFactoryInstance() {
273 return &g_factory.Get();
274 }
275
255 } // namespace extensions 276 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698