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 7 namespace chrome_variations { 8 9 VariationsRequestScheduler::VariationsRequestScheduler( 10 const base::Closure& task) : task_(task) { 11 } 12 13 VariationsRequestScheduler::~VariationsRequestScheduler() { 14 } 15 16 void 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 23 void VariationsRequestScheduler::Reset() { 24 if (timer_.IsRunning()) 25 timer_.Reset(); 26 one_shot_timer_.Stop(); 27 } 28 29 void 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 39 void VariationsRequestScheduler::OnAppEnterForeground() { 40 NOTREACHED() << "Attempted to OnAppEnterForeground on non-mobile device"; 41 } 42 43 base::Closure VariationsRequestScheduler::task() const { 44 return task_; 45 } 46 47 #if !defined(OS_ANDROID) && !defined(OS_IOS) 48 // static 49 VariationsRequestScheduler* 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