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