Index: chrome/browser/metrics/variations/variations_request_scheduler_mobile.cc |
diff --git a/chrome/browser/metrics/variations/variations_request_scheduler_mobile.cc b/chrome/browser/metrics/variations/variations_request_scheduler_mobile.cc |
index 77148617bfcb9747711027767e5da2ae427bdca2..fcb9b2e0f5c6f71a17255be3763446e7d0fefb9b 100644 |
--- a/chrome/browser/metrics/variations/variations_request_scheduler_mobile.cc |
+++ b/chrome/browser/metrics/variations/variations_request_scheduler_mobile.cc |
@@ -11,6 +11,9 @@ namespace chrome_variations { |
namespace { |
+// Time before attempting a seed fetch after a ScheduleFetch(), in seconds. |
+const int kScheduleFetchDelaySeconds = 5; |
+ |
// Time between seed fetches, in hours. |
const int kSeedFetchPeriodHours = 5; |
@@ -34,6 +37,7 @@ void VariationsRequestSchedulerMobile::Start() { |
local_state_->GetInt64(prefs::kVariationsLastFetchTime)); |
if (base::Time::Now() > |
last_fetch_time + base::TimeDelta::FromHours(kSeedFetchPeriodHours)) { |
+ last_request_time_ = base::Time::Now(); |
task().Run(); |
} |
} |
@@ -41,6 +45,25 @@ void VariationsRequestSchedulerMobile::Start() { |
void VariationsRequestSchedulerMobile::Reset() { |
} |
+void VariationsRequestSchedulerMobile::OnAppEnterForeground() { |
+ // Verify we haven't just attempted a fetch (which has not completed). This |
+ // is mainly used to verify we don't trigger a second fetch for the |
+ // OnAppEnterForeground right after startup. |
+ if (base::Time::Now() < |
+ last_request_time_ + base::TimeDelta::FromHours(kSeedFetchPeriodHours)) { |
Alexei Svitkine (slow)
2014/02/14 19:11:51
Nit: Align.
rkaplow
2014/02/14 19:18:04
Done.
|
+ return; |
+ } |
+ |
+ // Since Start() launches a one-off execution, we can reuse it here. Also |
+ // note that since Start() verifies that the seed needs to be refreshed, we |
+ // do not verify here. |
+ schedule_fetch_timer_.Start( |
+ FROM_HERE, |
+ base::TimeDelta::FromSeconds(kScheduleFetchDelaySeconds), |
+ this, |
+ &VariationsRequestSchedulerMobile::Start); |
+} |
+ |
// static |
VariationsRequestScheduler* VariationsRequestScheduler::Create( |
const base::Closure& task, |