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

Unified Diff: chrome/common/net/gaia/oauth2_mint_token_flow.cc

Issue 10928017: Moving google_apis and GaiaClient to src/google_apis. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to head Created 8 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/common/net/gaia/oauth2_mint_token_flow.cc
diff --git a/chrome/common/net/gaia/oauth2_mint_token_flow.cc b/chrome/common/net/gaia/oauth2_mint_token_flow.cc
deleted file mode 100644
index 80091f5f8ae24e3f3b204765a8a4584f0af513ef..0000000000000000000000000000000000000000
--- a/chrome/common/net/gaia/oauth2_mint_token_flow.cc
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/common/net/gaia/oauth2_mint_token_flow.h"
-
-#include <string>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/json/json_reader.h"
-#include "base/message_loop.h"
-#include "base/string_util.h"
-#include "base/stringprintf.h"
-#include "base/utf_string_conversions.h"
-#include "base/values.h"
-#include "chrome/common/net/gaia/gaia_urls.h"
-#include "chrome/common/net/gaia/google_service_auth_error.h"
-#include "net/base/escape.h"
-#include "net/url_request/url_fetcher.h"
-#include "net/url_request/url_request_context_getter.h"
-#include "net/url_request/url_request_status.h"
-
-using net::URLFetcher;
-using net::URLRequestContextGetter;
-using net::URLRequestStatus;
-
-namespace {
-
-static const char kForceValueFalse[] = "false";
-static const char kForceValueTrue[] = "true";
-static const char kResponseTypeValueNone[] = "none";
-static const char kResponseTypeValueToken[] = "token";
-
-static const char kOAuth2IssueTokenBodyFormat[] =
- "force=%s"
- "&response_type=%s"
- "&scope=%s"
- "&client_id=%s"
- "&origin=%s";
-static const char kIssueAdviceKey[] = "issueAdvice";
-static const char kIssueAdviceValueAuto[] = "auto";
-static const char kIssueAdviceValueConsent[] = "consent";
-static const char kAccessTokenKey[] = "token";
-static const char kConsentKey[] = "consent";
-static const char kScopesKey[] = "scopes";
-static const char kDescriptionKey[] = "description";
-static const char kDetailKey[] = "detail";
-static const char kDetailSeparators[] = "\n";
-
-static GoogleServiceAuthError CreateAuthError(URLRequestStatus status) {
- if (status.status() == URLRequestStatus::CANCELED) {
- return GoogleServiceAuthError(GoogleServiceAuthError::REQUEST_CANCELED);
- } else {
- // TODO(munjal): Improve error handling. Currently we return connection
- // error for even application level errors. We need to either expand the
- // GoogleServiceAuthError enum or create a new one to report better
- // errors.
- DLOG(WARNING) << "Server returned error: errno " << status.error();
- return GoogleServiceAuthError::FromConnectionError(status.error());
- }
-}
-
-} // namespace
-
-IssueAdviceInfoEntry::IssueAdviceInfoEntry() {}
-IssueAdviceInfoEntry::~IssueAdviceInfoEntry() {}
-
-bool IssueAdviceInfoEntry::operator ==(const IssueAdviceInfoEntry& rhs) const {
- return description == rhs.description && details == rhs.details;
-}
-
-OAuth2MintTokenFlow::Parameters::Parameters() : mode(MODE_ISSUE_ADVICE) {}
-
-OAuth2MintTokenFlow::Parameters::Parameters(
- const std::string& rt,
- const std::string& eid,
- const std::string& cid,
- const std::vector<std::string>& scopes_arg,
- Mode mode_arg)
- : login_refresh_token(rt),
- extension_id(eid),
- client_id(cid),
- scopes(scopes_arg),
- mode(mode_arg) {
-}
-
-OAuth2MintTokenFlow::Parameters::~Parameters() {}
-
-OAuth2MintTokenFlow::OAuth2MintTokenFlow(
- URLRequestContextGetter* context,
- Delegate* delegate,
- const Parameters& parameters)
- : OAuth2ApiCallFlow(
- context, parameters.login_refresh_token,
- "", std::vector<std::string>()),
- context_(context),
- delegate_(delegate),
- parameters_(parameters),
- delete_when_done_(false),
- ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
-}
-
-OAuth2MintTokenFlow::~OAuth2MintTokenFlow() { }
-
-void OAuth2MintTokenFlow::FireAndForget() {
- delete_when_done_ = true;
- Start();
-}
-
-void OAuth2MintTokenFlow::ReportSuccess(const std::string& access_token) {
- scoped_ptr<OAuth2MintTokenFlow> will_delete(delete_when_done_ ? this : NULL);
-
- if (delegate_)
- delegate_->OnMintTokenSuccess(access_token);
-
- // |this| may already be deleted.
-}
-
-void OAuth2MintTokenFlow::ReportIssueAdviceSuccess(
- const IssueAdviceInfo& issue_advice) {
- scoped_ptr<OAuth2MintTokenFlow> will_delete(delete_when_done_ ? this : NULL);
-
- if (delegate_)
- delegate_->OnIssueAdviceSuccess(issue_advice);
-
- // |this| may already be deleted.
-}
-
-void OAuth2MintTokenFlow::ReportFailure(
- const GoogleServiceAuthError& error) {
- scoped_ptr<OAuth2MintTokenFlow> will_delete(delete_when_done_ ? this : NULL);
-
- if (delegate_)
- delegate_->OnMintTokenFailure(error);
-
- // |this| may already be deleted.
-}
-
-GURL OAuth2MintTokenFlow::CreateApiCallUrl() {
- return GURL(GaiaUrls::GetInstance()->oauth2_issue_token_url());
-}
-
-std::string OAuth2MintTokenFlow::CreateApiCallBody() {
- const char* force_value =
- (parameters_.mode == MODE_MINT_TOKEN_FORCE ||
- parameters_.mode == MODE_RECORD_GRANT)
- ? kForceValueTrue : kForceValueFalse;
- const char* response_type_value =
- (parameters_.mode == MODE_MINT_TOKEN_NO_FORCE ||
- parameters_.mode == MODE_MINT_TOKEN_FORCE)
- ? kResponseTypeValueToken : kResponseTypeValueNone;
- return StringPrintf(
- kOAuth2IssueTokenBodyFormat,
- net::EscapeUrlEncodedData(force_value, true).c_str(),
- net::EscapeUrlEncodedData(response_type_value, true).c_str(),
- net::EscapeUrlEncodedData(
- JoinString(parameters_.scopes, ' '), true).c_str(),
- net::EscapeUrlEncodedData(parameters_.client_id, true).c_str(),
- net::EscapeUrlEncodedData(parameters_.extension_id, true).c_str());
-}
-
-void OAuth2MintTokenFlow::ProcessApiCallSuccess(
- const net::URLFetcher* source) {
- // TODO(munjal): Change error code paths in this method to report an
- // internal error.
- std::string response_body;
- source->GetResponseAsString(&response_body);
- scoped_ptr<base::Value> value(base::JSONReader::Read(response_body));
- DictionaryValue* dict = NULL;
- if (!value.get() || !value->GetAsDictionary(&dict)) {
- ReportFailure(GoogleServiceAuthError::FromConnectionError(101));
- return;
- }
-
- std::string issue_advice;
- if (!dict->GetString(kIssueAdviceKey, &issue_advice)) {
- ReportFailure(GoogleServiceAuthError::FromConnectionError(101));
- return;
- }
- if (issue_advice == kIssueAdviceValueConsent) {
- IssueAdviceInfo issue_advice;
- if (ParseIssueAdviceResponse(dict, &issue_advice))
- ReportIssueAdviceSuccess(issue_advice);
- else
- ReportFailure(GoogleServiceAuthError::FromConnectionError(101));
- } else {
- std::string access_token;
- if (ParseMintTokenResponse(dict, &access_token))
- ReportSuccess(access_token);
- else
- ReportFailure(GoogleServiceAuthError::FromConnectionError(101));
- }
-
- // |this| may be deleted!
-}
-
-void OAuth2MintTokenFlow::ProcessApiCallFailure(
- const net::URLFetcher* source) {
- ReportFailure(CreateAuthError(source->GetStatus()));
-}
-void OAuth2MintTokenFlow::ProcessNewAccessToken(
- const std::string& access_token) {
- // We don't currently store new access tokens. We generate one every time.
- // So we have nothing to do here.
- return;
-}
-void OAuth2MintTokenFlow::ProcessMintAccessTokenFailure(
- const GoogleServiceAuthError& error) {
- ReportFailure(error);
-}
-
-// static
-bool OAuth2MintTokenFlow::ParseMintTokenResponse(
- const base::DictionaryValue* dict, std::string* access_token) {
- CHECK(dict);
- CHECK(access_token);
- return dict->GetString(kAccessTokenKey, access_token);
-}
-
-// static
-bool OAuth2MintTokenFlow::ParseIssueAdviceResponse(
- const base::DictionaryValue* dict, IssueAdviceInfo* issue_advice) {
- CHECK(dict);
- CHECK(issue_advice);
-
- const base::DictionaryValue* consent_dict = NULL;
- if (!dict->GetDictionary(kConsentKey, &consent_dict))
- return false;
-
- const base::ListValue* scopes_list = NULL;
- if (!consent_dict->GetList(kScopesKey, &scopes_list))
- return false;
-
- bool success = true;
- for (size_t index = 0; index < scopes_list->GetSize(); ++index) {
- const base::DictionaryValue* scopes_entry = NULL;
- IssueAdviceInfoEntry entry;
- string16 detail;
- if (!scopes_list->GetDictionary(index, &scopes_entry) ||
- !scopes_entry->GetString(kDescriptionKey, &entry.description) ||
- !scopes_entry->GetString(kDetailKey, &detail)) {
- success = false;
- break;
- }
-
- TrimWhitespace(entry.description, TRIM_ALL, &entry.description);
- static const string16 detail_separators = ASCIIToUTF16(kDetailSeparators);
- Tokenize(detail, detail_separators, &entry.details);
- for (size_t i = 0; i < entry.details.size(); i++)
- TrimWhitespace(entry.details[i], TRIM_ALL, &entry.details[i]);
- issue_advice->push_back(entry);
- }
-
- if (!success)
- issue_advice->clear();
-
- return success;
-}
« no previous file with comments | « chrome/common/net/gaia/oauth2_mint_token_flow.h ('k') | chrome/common/net/gaia/oauth2_mint_token_flow_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698