diff options
author | mahmadi <mahmadi@chromium.org> | 2015-11-25 12:09:58 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-25 20:10:52 +0000 |
commit | fb4743fb5567278542ac4f4b90d595a9e6c17148 (patch) | |
tree | 9d9c88ce8e30af4916520a5b11e9c11d9addd751 /components/signin | |
parent | 1466c8459a40da0077d6e62174c2fec808b9f50f (diff) | |
download | chromium_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')
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; |