summaryrefslogtreecommitdiffstats
path: root/components/signin
diff options
context:
space:
mode:
authormahmadi <mahmadi@chromium.org>2015-11-25 12:09:58 -0800
committerCommit bot <commit-bot@chromium.org>2015-11-25 20:10:52 +0000
commitfb4743fb5567278542ac4f4b90d595a9e6c17148 (patch)
tree9d9c88ce8e30af4916520a5b11e9c11d9addd751 /components/signin
parent1466c8459a40da0077d6e62174c2fec808b9f50f (diff)
downloadchromium_src-fb4743fb5567278542ac4f4b90d595a9e6c17148.zip
chromium_src-fb4743fb5567278542ac4f4b90d595a9e6c17148.tar.gz
chromium_src-fb4743fb5567278542ac4f4b90d595a9e6c17148.tar.bz2
exposes the backoff information for gaia cookie manager and token service in signin-internals
BUG=405038 Review URL: https://codereview.chromium.org/1441163002 Cr-Commit-Position: refs/heads/master@{#361723}
Diffstat (limited to 'components/signin')
-rw-r--r--components/signin/core/browser/about_signin_internals.cc40
-rw-r--r--components/signin/core/browser/about_signin_internals.h1
-rw-r--r--components/signin/core/browser/gaia_cookie_manager_service.h5
-rw-r--r--components/signin/core/browser/gaia_cookie_manager_service_unittest.cc4
-rw-r--r--components/signin/core/browser/profile_oauth2_token_service.cc4
-rw-r--r--components/signin/core/browser/profile_oauth2_token_service.h5
6 files changed, 59 insertions, 0 deletions
diff --git a/components/signin/core/browser/about_signin_internals.cc b/components/signin/core/browser/about_signin_internals.cc
index 7f3a6a1..4bec52f 100644
--- a/components/signin/core/browser/about_signin_internals.cc
+++ b/components/signin/core/browser/about_signin_internals.cc
@@ -21,6 +21,7 @@
#include "components/signin/core/browser/signin_manager.h"
#include "components/signin/core/common/profile_management_switches.h"
#include "components/signin/core/common/signin_switches.h"
+#include "net/base/backoff_entry.h"
using base::Time;
using namespace signin_internals_util;
@@ -270,6 +271,7 @@ void AboutSigninInternals::NotifyObservers() {
signin_manager_,
signin_error_controller_,
token_service_,
+ cookie_manager_service_,
product_version);
// TODO(robliao): Remove ScopedTracker below once https://crbug.com/422460 is
@@ -288,6 +290,7 @@ scoped_ptr<base::DictionaryValue> AboutSigninInternals::GetSigninStatus() {
signin_manager_,
signin_error_controller_,
token_service_,
+ cookie_manager_service_,
client_->GetProductVersion()).Pass();
}
@@ -498,6 +501,7 @@ scoped_ptr<base::DictionaryValue> AboutSigninInternals::SigninStatus::ToValue(
SigninManagerBase* signin_manager,
SigninErrorController* signin_error_controller,
ProfileOAuth2TokenService* token_service,
+ GaiaCookieManagerService* cookie_manager_service_,
const std::string& product_version) {
// TODO(robliao): Remove ScopedTracker below once https://crbug.com/422460 is
// fixed.
@@ -574,6 +578,42 @@ scoped_ptr<base::DictionaryValue> AboutSigninInternals::SigninStatus::ToValue(
timed_signin_fields[i - TIMED_FIELDS_BEGIN].first,
timed_signin_fields[i - TIMED_FIELDS_BEGIN].second);
}
+
+ const net::BackoffEntry* cookie_manager_backoff_entry =
+ cookie_manager_service_->GetBackoffEntry();
+
+ if (cookie_manager_backoff_entry->ShouldRejectRequest()) {
+ Time next_retry_time = Time::NowFromSystemTime() +
+ cookie_manager_backoff_entry->GetTimeUntilRelease();
+
+ std::string next_retry_time_as_str =
+ base::UTF16ToUTF8(
+ base::TimeFormatShortDateAndTime(next_retry_time));
+
+ AddSectionEntry(detailed_info,
+ "Cookie Manager Next Retry",
+ next_retry_time_as_str,
+ "");
+ }
+
+ const net::BackoffEntry* token_service_backoff_entry = token_service->
+ GetDelegateBackoffEntry();
+
+ if (token_service_backoff_entry &&
+ token_service_backoff_entry->ShouldRejectRequest()) {
+ Time next_retry_time = Time::NowFromSystemTime() +
+ token_service_backoff_entry->GetTimeUntilRelease();
+
+ std::string next_retry_time_as_str =
+ base::UTF16ToUTF8(
+ base::TimeFormatShortDateAndTime(next_retry_time));
+
+ AddSectionEntry(detailed_info,
+ "Token Service Next Retry",
+ next_retry_time_as_str,
+ "");
+ }
+
#endif // !defined(OS_CHROMEOS)
// TODO(robliao): Remove ScopedTracker below once https://crbug.com/422460 is
diff --git a/components/signin/core/browser/about_signin_internals.h b/components/signin/core/browser/about_signin_internals.h
index 7e0dca5..10fb002 100644
--- a/components/signin/core/browser/about_signin_internals.h
+++ b/components/signin/core/browser/about_signin_internals.h
@@ -161,6 +161,7 @@ class AboutSigninInternals
SigninManagerBase* signin_manager,
SigninErrorController* signin_error_controller,
ProfileOAuth2TokenService* token_service,
+ GaiaCookieManagerService* cookie_manager_service_,
const std::string& product_version);
};
diff --git a/components/signin/core/browser/gaia_cookie_manager_service.h b/components/signin/core/browser/gaia_cookie_manager_service.h
index d3cf34e..c50fb1b 100644
--- a/components/signin/core/browser/gaia_cookie_manager_service.h
+++ b/components/signin/core/browser/gaia_cookie_manager_service.h
@@ -206,6 +206,11 @@ class GaiaCookieManagerService : public KeyedService,
list_accounts_stale_ = stale;
}
+ // Returns a non-NULL pointer to its instance of net::BackoffEntry
+ const net::BackoffEntry* GetBackoffEntry() {
+ return &fetcher_backoff_;
+ }
+
private:
net::URLRequestContextGetter* request_context() {
return signin_client_->GetURLRequestContext();
diff --git a/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc b/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc
index e2fa05d8..218dcb5 100644
--- a/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc
+++ b/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc
@@ -242,6 +242,8 @@ TEST_F(GaiaCookieManagerServiceTest, MergeSessionRetriedTwice) {
SimulateMergeSessionFailure(&helper, canceled());
DCHECK(helper.is_running());
// Transient error incurs a retry after 1 second.
+ EXPECT_LT(helper.GetBackoffEntry()->GetTimeUntilRelease(),
+ base::TimeDelta::FromMilliseconds(1100));
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
base::TimeDelta::FromMilliseconds(1100));
@@ -249,6 +251,8 @@ TEST_F(GaiaCookieManagerServiceTest, MergeSessionRetriedTwice) {
SimulateMergeSessionFailure(&helper, canceled());
DCHECK(helper.is_running());
// Next transient error incurs a retry after 3 seconds.
+ EXPECT_LT(helper.GetBackoffEntry()->GetTimeUntilRelease(),
+ base::TimeDelta::FromMilliseconds(3100));
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
base::TimeDelta::FromMilliseconds(3100));
diff --git a/components/signin/core/browser/profile_oauth2_token_service.cc b/components/signin/core/browser/profile_oauth2_token_service.cc
index e55c2cc..b7fd8d0 100644
--- a/components/signin/core/browser/profile_oauth2_token_service.cc
+++ b/components/signin/core/browser/profile_oauth2_token_service.cc
@@ -46,3 +46,7 @@ void ProfileOAuth2TokenService::RevokeCredentials(
const std::string& account_id) {
GetDelegate()->RevokeCredentials(account_id);
}
+
+const net::BackoffEntry* ProfileOAuth2TokenService::GetDelegateBackoffEntry() {
+ return GetDelegate()->BackoffEntry();
+}
diff --git a/components/signin/core/browser/profile_oauth2_token_service.h b/components/signin/core/browser/profile_oauth2_token_service.h
index ab290e3..6fb0004 100644
--- a/components/signin/core/browser/profile_oauth2_token_service.h
+++ b/components/signin/core/browser/profile_oauth2_token_service.h
@@ -11,6 +11,7 @@
#include "components/keyed_service/core/keyed_service.h"
#include "google_apis/gaia/oauth2_token_service.h"
#include "google_apis/gaia/oauth2_token_service_delegate.h"
+#include "net/base/backoff_entry.h"
// ProfileOAuth2TokenService is a KeyedService that retrieves
// OAuth2 access tokens for a given set of scopes using the OAuth2 login
@@ -54,6 +55,10 @@ class ProfileOAuth2TokenService : public OAuth2TokenService,
virtual void RevokeCredentials(const std::string& account_id);
+ // Returns a pointer to its instance of net::BackoffEntry or nullptr if there
+ // is no such instance.
+ const net::BackoffEntry* GetDelegateBackoffEntry();
+
private:
void OnRefreshTokenAvailable(const std::string& account_id) override;
void OnRefreshTokenRevoked(const std::string& account_id) override;