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

Unified Diff: components/autofill/content/browser/wallet/wallet_signin_helper.cc

Issue 16858016: Respect the new Online Wallet sign-in response. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addresses Dan's comments. Created 7 years, 6 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: components/autofill/content/browser/wallet/wallet_signin_helper.cc
diff --git a/components/autofill/content/browser/wallet/wallet_signin_helper.cc b/components/autofill/content/browser/wallet/wallet_signin_helper.cc
index 1474a93393c9f70c9e0fe37393d31217f4211792..9b083b1dba118bff0a961e9f86973da28c4f841a 100644
--- a/components/autofill/content/browser/wallet/wallet_signin_helper.cc
+++ b/components/autofill/content/browser/wallet/wallet_signin_helper.cc
@@ -8,6 +8,7 @@
#include "base/json/json_reader.h"
#include "base/logging.h"
#include "base/rand_util.h"
+#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/time.h"
#include "base/values.h"
@@ -214,15 +215,19 @@ void WalletSigninHelper::OnURLFetchComplete(
break;
case PASSIVE_EXECUTING_SIGNIN:
- url_fetcher_.reset();
- state_ = PASSIVE_FETCHING_USERINFO;
- StartFetchingUserNameFromSession();
+ if (ParseSignInResponse()) {
+ url_fetcher_.reset();
+ state_ = PASSIVE_FETCHING_USERINFO;
+ StartFetchingUserNameFromSession();
+ }
break;
case AUTOMATIC_EXECUTING_SIGNIN:
- state_ = IDLE;
- url_fetcher_.reset();
- delegate_->OnAutomaticSigninSuccess(username_);
+ if (ParseSignInResponse()) {
+ url_fetcher_.reset();
+ state_ = IDLE;
+ delegate_->OnAutomaticSigninSuccess(username_);
+ }
break;
default:
@@ -269,25 +274,47 @@ void WalletSigninHelper::ProcessGetAccountInfoResponseAndFinish() {
}
}
+bool WalletSigninHelper::ParseSignInResponse() {
+ if (!url_fetcher_) {
+ NOTREACHED();
+ return false;
+ }
+
+ std::string data;
+ if (!url_fetcher_->GetResponseAsString(&data)) {
+ DVLOG(1) << "failed to GetResponseAsString";
+ OnOtherError();
+ return false;
+ }
+
+ if (!LowerCaseEqualsASCII(data, "yes")) {
+ OnServiceError(
+ GoogleServiceAuthError(GoogleServiceAuthError::USER_NOT_SIGNED_UP));
+ return false;
+ }
+
+ return true;
+}
+
bool WalletSigninHelper::ParseGetAccountInfoResponse(
const net::URLFetcher* fetcher, std::string* email) {
DCHECK(email);
std::string data;
if (!fetcher->GetResponseAsString(&data)) {
- LOG(ERROR) << "failed to GetResponseAsString";
+ DVLOG(1) << "failed to GetResponseAsString";
return false;
}
scoped_ptr<base::Value> value(base::JSONReader::Read(data));
if (!value.get() || value->GetType() != base::Value::TYPE_DICTIONARY) {
- LOG(ERROR) << "failed to parse JSON response";
+ DVLOG(1) << "failed to parse JSON response";
return false;
}
DictionaryValue* dict = static_cast<DictionaryValue*>(value.get());
if (!dict->GetStringWithoutPathExpansion("email", email)) {
- LOG(ERROR) << "no email in JSON response";
+ DVLOG(1) << "no email in JSON response";
return false;
}

Powered by Google App Engine
This is Rietveld 408576698