// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/metrics/variations/variations_request_scheduler.h" namespace chrome_variations { VariationsRequestScheduler::VariationsRequestScheduler( const base::Closure& task) : task_(task) { } VariationsRequestScheduler::~VariationsRequestScheduler() { } void VariationsRequestScheduler::Start() { // Time between regular seed fetches, in hours. const int kFetchPeriodHours = 5; task_.Run(); timer_.Start(FROM_HERE, base::TimeDelta::FromHours(kFetchPeriodHours), task_); } void VariationsRequestScheduler::Reset() { if (timer_.IsRunning()) timer_.Reset(); one_shot_timer_.Stop(); } void VariationsRequestScheduler::ScheduleFetchShortly() { // Reset the regular timer to avoid it triggering soon after. Reset(); // The delay before attempting a fetch shortly, in minutes. const int kFetchShortlyDelayMinutes = 5; one_shot_timer_.Start(FROM_HERE, base::TimeDelta::FromMinutes(kFetchShortlyDelayMinutes), task_); } base::Closure VariationsRequestScheduler::task() const { return task_; } #if !defined(OS_ANDROID) && !defined(OS_IOS) // static VariationsRequestScheduler* VariationsRequestScheduler::Create( const base::Closure& task, PrefService* local_state) { return new VariationsRequestScheduler(task); } #endif // !defined(OS_ANDROID) && !defined(OS_IOS) } // namespace chrome_variations