1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// found in the LICENSE file.
4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/power_monitor/power_monitor_device_source.h"
6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/time/time.h"
8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace base {
10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(ENABLE_BATTERY_MONITORING)
12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// The amount of time (in ms) to wait before running the initial
13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// battery check.
14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)static int kDelayedBatteryCheckMs = 10 * 1000;
15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif  // defined(ENABLE_BATTERY_MONITORING)
16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)PowerMonitorDeviceSource::PowerMonitorDeviceSource() {
18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  DCHECK(MessageLoop::current());
19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(ENABLE_BATTERY_MONITORING)
20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  delayed_battery_check_.Start(FROM_HERE,
21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      base::TimeDelta::FromMilliseconds(kDelayedBatteryCheckMs), this,
22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      &PowerMonitorDeviceSource::BatteryCheck);
23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif  // defined(ENABLE_BATTERY_MONITORING)
24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(OS_MACOSX)
25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  PlatformInit();
26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif
27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)PowerMonitorDeviceSource::~PowerMonitorDeviceSource() {
30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(OS_MACOSX)
31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  PlatformDestroy();
32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif
33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
35a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void PowerMonitorDeviceSource::BatteryCheck() {
36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  ProcessPowerEvent(PowerMonitorSource::POWER_STATE_EVENT);
37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}  // namespace base
40