1// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/metrics/variations/variations_request_scheduler.h" 6 7namespace chrome_variations { 8 9VariationsRequestScheduler::VariationsRequestScheduler( 10 const base::Closure& task) : task_(task) { 11} 12 13VariationsRequestScheduler::~VariationsRequestScheduler() { 14} 15 16void VariationsRequestScheduler::Start() { 17 // Time between regular seed fetches, in hours. 18 const int kFetchPeriodHours = 5; 19 task_.Run(); 20 timer_.Start(FROM_HERE, base::TimeDelta::FromHours(kFetchPeriodHours), task_); 21} 22 23void VariationsRequestScheduler::Reset() { 24 if (timer_.IsRunning()) 25 timer_.Reset(); 26 one_shot_timer_.Stop(); 27} 28 29void VariationsRequestScheduler::ScheduleFetchShortly() { 30 // Reset the regular timer to avoid it triggering soon after. 31 Reset(); 32 // The delay before attempting a fetch shortly, in minutes. 33 const int kFetchShortlyDelayMinutes = 5; 34 one_shot_timer_.Start(FROM_HERE, 35 base::TimeDelta::FromMinutes(kFetchShortlyDelayMinutes), 36 task_); 37} 38 39void VariationsRequestScheduler::OnAppEnterForeground() { 40 NOTREACHED() << "Attempted to OnAppEnterForeground on non-mobile device"; 41} 42 43base::Closure VariationsRequestScheduler::task() const { 44 return task_; 45} 46 47#if !defined(OS_ANDROID) && !defined(OS_IOS) 48// static 49VariationsRequestScheduler* VariationsRequestScheduler::Create( 50 const base::Closure& task, 51 PrefService* local_state) { 52 return new VariationsRequestScheduler(task); 53} 54#endif // !defined(OS_ANDROID) && !defined(OS_IOS) 55 56} // namespace chrome_variations 57