12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/idle.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/bind.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace {
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void CalculateIdleStateCallback(int idle_threshold,
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                IdleCallback notify,
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                int idle_time) {
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (idle_time >= idle_threshold)
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    notify.Run(IDLE_STATE_IDLE);
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  else
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    notify.Run(IDLE_STATE_ACTIVE);
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void CalculateIdleState(int idle_threshold, IdleCallback notify) {
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (CheckIdleStateIsLocked()) {
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    notify.Run(IDLE_STATE_LOCKED);
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return;
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CalculateIdleTime(base::Bind(&CalculateIdleStateCallback,
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                               idle_threshold,
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                               notify));
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
32