Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / metrics / variations / variations_request_scheduler_mobile.cc
index 7714861..9e028c0 100644 (file)
@@ -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)) {
+    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,