1// Copyright 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#ifndef BASE_TEST_POWER_MONITOR_TEST_BASE_H_
6#define BASE_TEST_POWER_MONITOR_TEST_BASE_H_
7
8#include "base/message_loop/message_loop.h"
9#include "base/power_monitor/power_monitor.h"
10#include "base/power_monitor/power_monitor_source.h"
11
12namespace base {
13
14class PowerMonitorTestSource : public PowerMonitorSource {
15 public:
16  PowerMonitorTestSource();
17  virtual ~PowerMonitorTestSource();
18
19  void GeneratePowerStateEvent(bool on_battery_power);
20  void GenerateSuspendEvent();
21  void GenerateResumeEvent();
22
23 protected:
24  virtual bool IsOnBatteryPowerImpl() OVERRIDE;
25
26  bool test_on_battery_power_;
27  MessageLoop message_loop_;
28};
29
30class PowerMonitorTestObserver : public PowerObserver {
31 public:
32  PowerMonitorTestObserver();
33  virtual ~PowerMonitorTestObserver();
34
35  // PowerObserver callbacks.
36  virtual void OnPowerStateChange(bool on_battery_power) OVERRIDE;
37  virtual void OnSuspend() OVERRIDE;
38  virtual void OnResume() OVERRIDE;
39
40  // Test status counts.
41  bool last_power_state() { return last_power_state_; }
42  int power_state_changes() { return power_state_changes_; }
43  int suspends() { return suspends_; }
44  int resumes() { return resumes_; }
45
46 private:
47  bool last_power_state_; // Last power state we were notified of.
48  int power_state_changes_;  // Count of OnPowerStateChange notifications.
49  int suspends_;  // Count of OnSuspend notifications.
50  int resumes_;  // Count of OnResume notifications.
51};
52
53}  // namespace base
54
55#endif  // BASE_TEST_POWER_MONITOR_TEST_BASE_H_
56