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)
5ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "base/test/power_monitor_test_base.h"
6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/message_loop/message_loop.h"
8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/power_monitor/power_monitor.h"
9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/power_monitor/power_monitor_source.h"
10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace base {
12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)PowerMonitorTestSource::PowerMonitorTestSource()
14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    : test_on_battery_power_(false) {
15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)PowerMonitorTestSource::~PowerMonitorTestSource() {
18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void PowerMonitorTestSource::GeneratePowerStateEvent(bool on_battery_power) {
21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  test_on_battery_power_ = on_battery_power;
22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  ProcessPowerEvent(POWER_STATE_EVENT);
23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  message_loop_.RunUntilIdle();
24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void PowerMonitorTestSource::GenerateSuspendEvent() {
27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  ProcessPowerEvent(SUSPEND_EVENT);
28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  message_loop_.RunUntilIdle();
29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void PowerMonitorTestSource::GenerateResumeEvent() {
32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  ProcessPowerEvent(RESUME_EVENT);
33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  message_loop_.RunUntilIdle();
34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
35a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)bool PowerMonitorTestSource::IsOnBatteryPowerImpl() {
37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  return test_on_battery_power_;
38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)};
39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)PowerMonitorTestObserver::PowerMonitorTestObserver()
41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    : last_power_state_(false),
42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      power_state_changes_(0),
43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      suspends_(0),
44a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      resumes_(0) {
45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)PowerMonitorTestObserver::~PowerMonitorTestObserver() {
48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
50a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// PowerObserver callbacks.
51a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void PowerMonitorTestObserver::OnPowerStateChange(bool on_battery_power) {
52a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  last_power_state_ = on_battery_power;
53a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  power_state_changes_++;
54a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
55a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
56a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void PowerMonitorTestObserver::OnSuspend() {
57a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  suspends_++;
58a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
59a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
60a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void PowerMonitorTestObserver::OnResume() {
61a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  resumes_++;
62a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
63a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
64a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}  // namespace base
65