summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/sync/engine/auth_watcher_unittest.cc5
-rw-r--r--chrome/browser/sync/engine/net/gaia_authenticator.cc19
-rw-r--r--chrome/browser/sync/engine/net/gaia_authenticator.h11
-rw-r--r--chrome/browser/sync/engine/net/gaia_authenticator_unittest.cc7
4 files changed, 30 insertions, 12 deletions
diff --git a/chrome/browser/sync/engine/auth_watcher_unittest.cc b/chrome/browser/sync/engine/auth_watcher_unittest.cc
index 436ab80..601d65f 100644
--- a/chrome/browser/sync/engine/auth_watcher_unittest.cc
+++ b/chrome/browser/sync/engine/auth_watcher_unittest.cc
@@ -41,6 +41,11 @@ class GaiaAuthMockForAuthWatcher : public browser_sync::GaiaAuthenticator {
use_bad_auth_token_(false) {}
virtual ~GaiaAuthMockForAuthWatcher() {}
+ virtual int GetBackoffDelaySeconds(
+ int current_backoff_delay) {
+ return AllStatus::GetRecommendedDelaySeconds(current_backoff_delay);
+ }
+
void SendBadAuthTokenForNextRequest() { use_bad_auth_token_ = true; }
std::string renewed_token() {
diff --git a/chrome/browser/sync/engine/net/gaia_authenticator.cc b/chrome/browser/sync/engine/net/gaia_authenticator.cc
index 661bf6d..2be47f8 100644
--- a/chrome/browser/sync/engine/net/gaia_authenticator.cc
+++ b/chrome/browser/sync/engine/net/gaia_authenticator.cc
@@ -11,11 +11,10 @@
#include "base/basictypes.h"
#include "base/port.h"
#include "base/string_split.h"
-#include "chrome/browser/sync/engine/all_status.h"
#include "chrome/browser/sync/engine/net/http_return.h"
-#include "chrome/browser/sync/engine/net/url_translator.h"
#include "chrome/common/deprecated/event_sys-inl.h"
#include "googleurl/src/gurl.h"
+#include "net/base/escape.h"
using std::pair;
using std::string;
@@ -146,7 +145,7 @@ bool GaiaAuthenticator::AuthenticateImpl(const AuthParams& params,
++early_auth_attempt_count_;
// Allow 3 attempts, but then limit.
if (early_auth_attempt_count_ > 3) {
- delay_ = AllStatus::GetRecommendedDelaySeconds(delay_);
+ delay_ = GetBackoffDelaySeconds(delay_);
next_allowed_auth_attempt_time_ = now + delay_;
return false;
}
@@ -161,13 +160,13 @@ bool GaiaAuthenticator::PerformGaiaRequest(const AuthParams& params,
GURL gaia_auth_url(gaia_url_);
string post_body;
- post_body += "Email=" + CgiEscapeString(params.email);
- post_body += "&Passwd=" + CgiEscapeString(params.password);
- post_body += "&source=" + CgiEscapeString(user_agent_);
+ post_body += "Email=" + EscapeUrlEncodedData(params.email);
+ post_body += "&Passwd=" + EscapeUrlEncodedData(params.password);
+ post_body += "&source=" + EscapeUrlEncodedData(user_agent_);
post_body += "&service=" + service_id_;
if (!params.captcha_token.empty() && !params.captcha_value.empty()) {
- post_body += "&logintoken=" + CgiEscapeString(params.captcha_token);
- post_body += "&logincaptcha=" + CgiEscapeString(params.captcha_value);
+ post_body += "&logintoken=" + EscapeUrlEncodedData(params.captcha_token);
+ post_body += "&logincaptcha=" + EscapeUrlEncodedData(params.captcha_value);
}
post_body += "&PersistentCookie=true";
// We set it to GOOGLE (and not HOSTED or HOSTED_OR_GOOGLE) because we only
@@ -215,7 +214,7 @@ bool GaiaAuthenticator::LookupEmail(AuthResults* results) {
string post_body;
post_body += "LSID=";
- post_body += CgiEscapeString(results->lsid);
+ post_body += EscapeUrlEncodedData(results->lsid);
unsigned long server_response_code;
string message_text;
@@ -262,7 +261,7 @@ bool GaiaAuthenticator::IssueAuthToken(AuthResults* results,
string post_body;
post_body += "LSID=";
- post_body += CgiEscapeString(results->lsid);
+ post_body += EscapeUrlEncodedData(results->lsid);
post_body += "&service=" + service_id;
if (long_lived) {
post_body += "&Session=true";
diff --git a/chrome/browser/sync/engine/net/gaia_authenticator.h b/chrome/browser/sync/engine/net/gaia_authenticator.h
index 949f9f8..a489cca 100644
--- a/chrome/browser/sync/engine/net/gaia_authenticator.h
+++ b/chrome/browser/sync/engine/net/gaia_authenticator.h
@@ -26,7 +26,6 @@
#include "base/basictypes.h"
#include "base/message_loop.h"
-#include "chrome/browser/sync/engine/net/http_return.h"
#include "chrome/browser/sync/util/signin.h"
#include "chrome/common/deprecated/event_sys.h"
#include "googleurl/src/gurl.h"
@@ -207,6 +206,16 @@ class GaiaAuthenticator {
// results->primary_email.
virtual bool LookupEmail(AuthResults* results);
+ // Subclasses must override to provide a backoff delay. It is virtual instead
+ // of pure virtual for testing purposes.
+ // TODO(sanjeevr): This should be made pure virtual. But this class is
+ // currently directly being used in sync/engine/authenticator.cc, which is
+ // wrong.
+ virtual int GetBackoffDelaySeconds(int current_backoff_delay) {
+ NOTREACHED();
+ return current_backoff_delay;
+ }
+
public:
// Retrieve email.
inline std::string email() const {
diff --git a/chrome/browser/sync/engine/net/gaia_authenticator_unittest.cc b/chrome/browser/sync/engine/net/gaia_authenticator_unittest.cc
index e4ef2df..6955a0a 100644
--- a/chrome/browser/sync/engine/net/gaia_authenticator_unittest.cc
+++ b/chrome/browser/sync/engine/net/gaia_authenticator_unittest.cc
@@ -7,7 +7,6 @@
#include <string>
#include "chrome/browser/sync/engine/net/http_return.h"
-#include "chrome/browser/sync/util/sync_types.h"
#include "googleurl/src/gurl.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -29,6 +28,12 @@ class GaiaAuthMockForGaiaAuthenticator : public GaiaAuthenticator {
response_body->assign("body\n");
return true;
}
+
+ int GetBackoffDelaySeconds(
+ int current_backoff_delay) {
+ // Dummy delay value.
+ return 5;
+ }
};
TEST(GaiaAuthenticatorTest, TestNewlineAtEndOfAuthTokenRemoved) {