| Index: chrome/browser/policy/cloud_policy_refresh_scheduler.cc
|
| diff --git a/chrome/browser/policy/cloud_policy_refresh_scheduler.cc b/chrome/browser/policy/cloud_policy_refresh_scheduler.cc
|
| index 8132be5dae4cdcacf51f94614836707678e08a51..ff891281088d258cc9ee8594febc0b4a62ec74fb 100644
|
| --- a/chrome/browser/policy/cloud_policy_refresh_scheduler.cc
|
| +++ b/chrome/browser/policy/cloud_policy_refresh_scheduler.cc
|
| @@ -8,12 +8,13 @@
|
|
|
| #include "base/task_runner.h"
|
| #include "chrome/browser/policy/cloud_policy_constants.h"
|
| -#include "chrome/browser/prefs/pref_service.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| #include "content/public/browser/notification_details.h"
|
|
|
| namespace policy {
|
|
|
| +const int64 CloudPolicyRefreshScheduler::kDefaultRefreshDelayMs =
|
| + 3 * 60 * 60 * 1000; // 3 hours.
|
| const int64 CloudPolicyRefreshScheduler::kUnmanagedRefreshDelayMs =
|
| 24 * 60 * 60 * 1000; // 1 day.
|
| const int64 CloudPolicyRefreshScheduler::kInitialErrorRetryDelayMs =
|
| @@ -26,22 +27,16 @@ const int64 CloudPolicyRefreshScheduler::kRefreshDelayMaxMs =
|
| CloudPolicyRefreshScheduler::CloudPolicyRefreshScheduler(
|
| CloudPolicyClient* client,
|
| CloudPolicyStore* store,
|
| - PrefService* prefs,
|
| - const std::string& refresh_pref,
|
| const scoped_refptr<base::TaskRunner>& task_runner)
|
| : client_(client),
|
| store_(store),
|
| task_runner_(task_runner),
|
| - error_retry_delay_ms_(kInitialErrorRetryDelayMs) {
|
| + error_retry_delay_ms_(kInitialErrorRetryDelayMs),
|
| + refresh_delay_ms_(kDefaultRefreshDelayMs) {
|
| client_->AddObserver(this);
|
| store_->AddObserver(this);
|
| net::NetworkChangeNotifier::AddIPAddressObserver(this);
|
|
|
| - refresh_delay_.Init(
|
| - refresh_pref.c_str(), prefs,
|
| - base::Bind(&CloudPolicyRefreshScheduler::ScheduleRefresh,
|
| - base::Unretained(this)));
|
| -
|
| UpdateLastRefreshFromPolicy();
|
| ScheduleRefresh();
|
| }
|
| @@ -52,6 +47,12 @@ CloudPolicyRefreshScheduler::~CloudPolicyRefreshScheduler() {
|
| net::NetworkChangeNotifier::RemoveIPAddressObserver(this);
|
| }
|
|
|
| +void CloudPolicyRefreshScheduler::SetRefreshDelay(int64 refresh_delay) {
|
| + refresh_delay_ms_ = std::min(std::max(refresh_delay, kRefreshDelayMinMs),
|
| + kRefreshDelayMaxMs);
|
| + ScheduleRefresh();
|
| +}
|
| +
|
| void CloudPolicyRefreshScheduler::OnPolicyFetched(CloudPolicyClient* client) {
|
| error_retry_delay_ms_ = kInitialErrorRetryDelayMs;
|
|
|
| @@ -82,7 +83,7 @@ void CloudPolicyRefreshScheduler::OnClientError(CloudPolicyClient* client) {
|
| (status == DM_STATUS_REQUEST_FAILED ||
|
| status == DM_STATUS_TEMPORARY_UNAVAILABLE)) {
|
| error_retry_delay_ms_ = std::min(error_retry_delay_ms_ * 2,
|
| - GetRefreshDelay());
|
| + refresh_delay_ms_);
|
| } else {
|
| error_retry_delay_ms_ = kInitialErrorRetryDelayMs;
|
| }
|
| @@ -141,13 +142,13 @@ void CloudPolicyRefreshScheduler::ScheduleRefresh() {
|
| switch (client_->status()) {
|
| case DM_STATUS_SUCCESS:
|
| if (store_->is_managed())
|
| - RefreshAfter(GetRefreshDelay());
|
| + RefreshAfter(refresh_delay_ms_);
|
| else
|
| RefreshAfter(kUnmanagedRefreshDelayMs);
|
| return;
|
| case DM_STATUS_SERVICE_ACTIVATION_PENDING:
|
| case DM_STATUS_SERVICE_POLICY_NOT_FOUND:
|
| - RefreshAfter(GetRefreshDelay());
|
| + RefreshAfter(refresh_delay_ms_);
|
| return;
|
| case DM_STATUS_REQUEST_FAILED:
|
| case DM_STATUS_TEMPORARY_UNAVAILABLE:
|
| @@ -202,10 +203,4 @@ void CloudPolicyRefreshScheduler::RefreshAfter(int delta_ms) {
|
| task_runner_->PostDelayedTask(FROM_HERE, refresh_callback_.callback(), delay);
|
| }
|
|
|
| -int64 CloudPolicyRefreshScheduler::GetRefreshDelay() {
|
| - return std::min(std::max<int64>(refresh_delay_.GetValue(),
|
| - kRefreshDelayMinMs),
|
| - kRefreshDelayMaxMs);
|
| -}
|
| -
|
| } // namespace policy
|
|
|