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)#ifndef CONTENT_BROWSER_POWER_MONITOR_MESSAGE_BROADCASTER_H_
6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#define CONTENT_BROWSER_POWER_MONITOR_MESSAGE_BROADCASTER_H_
7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/basictypes.h"
9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/power_monitor/power_observer.h"
10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "content/common/content_export.h"
11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace IPC {
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class Sender;
14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace content {
17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// A class used to monitor the power state change and communicate it to child
19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// processes via IPC.
20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class CONTENT_EXPORT PowerMonitorMessageBroadcaster
21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    : public base::PowerObserver {
22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public:
23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  explicit PowerMonitorMessageBroadcaster(IPC::Sender* sender);
24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual ~PowerMonitorMessageBroadcaster();
25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // Implement PowerObserver.
27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual void OnPowerStateChange(bool on_battery_power) OVERRIDE;
28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual void OnSuspend() OVERRIDE;
29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual void OnResume() OVERRIDE;
30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void Init();
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) private:
34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  IPC::Sender* sender_;
35a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(PowerMonitorMessageBroadcaster);
37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)};
38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}  // namespace content
40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#endif  // CONTENT_BROWSER_POWER_MONITOR_MESSAGE_BROADCASTER_H_
42