diff -r 000000000000 -r 6474c204b198 ipc/chromium/src/base/idle_timer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ipc/chromium/src/base/idle_timer.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,97 @@ +// Copyright (c) 2006-2008 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. + +// IdleTimer is a recurring Timer which runs only when the system is idle. +// System Idle time is defined as not having any user keyboard or mouse +// activity for some period of time. Because the timer is user dependant, it +// is possible for the timer to never fire. +// +// Usage should be for low-priority work, and may look like this: +// +// class MyIdleTimer : public IdleTimer { +// public: +// // This timer will run repeatedly after 5 seconds of idle time +// MyIdleTimer() : IdleTimer(TimeDelta::FromSeconds(5), true) {}; +// virtual void OnIdle() { do something }; +// } +// +// MyIdleTimer *timer = new MyIdleTimer(); +// timer->Start(); +// +// // As with all Timers, the caller must dispose the object. +// delete timer; // Will Stop the timer and cleanup. +// +// NOTE: An IdleTimer can only be used on a thread that processes UI events. +// Such a thread should be running a MessageLoopForUI. + +#ifndef BASE_IDLE_TIMER_H_ +#define BASE_IDLE_TIMER_H_ + +#if defined(OS_WIN) +#include +#endif + +#include "base/basictypes.h" +#include "base/task.h" +#include "base/timer.h" + +namespace base { + +// Function prototype - Get the number of milliseconds that the user has been +// idle. +typedef bool (*IdleTimeSource)(int32_t *milliseconds_interval_since_last_event); + +class IdleTimer { + public: + // Create an IdleTimer. + // idle_time: idle time required before this timer can run. + // repeat: true if the timer should fire multiple times per idle, + // false to fire once per idle. + IdleTimer(TimeDelta idle_time, bool repeat); + + // On destruction, the IdleTimer will Stop itself. + virtual ~IdleTimer(); + + // Start the IdleTimer. + void Start(); + + // Stop the IdleTimer. + void Stop(); + + // The method to run when the timer elapses. + virtual void OnIdle() = 0; + + protected: + // Override the IdleTimeSource. + void set_idle_time_source(IdleTimeSource idle_time_source) { + idle_time_source_ = idle_time_source; + } + + private: + // Called when timer_ expires. + void Run(); + + // Start the timer. + void StartTimer(); + + // Gets the number of milliseconds since the last input event. + TimeDelta CurrentIdleTime(); + + // Compute time until idle. Returns 0 if we are now idle. + TimeDelta TimeUntilIdle(); + + TimeDelta idle_interval_; + bool repeat_; + Time last_time_fired_; // The last time the idle timer fired. + // will be 0 until the timer fires the first time. + OneShotTimer timer_; + + IdleTimeSource idle_time_source_; + + DISALLOW_COPY_AND_ASSIGN(IdleTimer); +}; + +} // namespace base + +#endif // BASE_IDLE_TIMER_H_