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/memory/ref_counted.h"
10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/power_monitor/power_observer.h"
11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "content/common/content_export.h"
12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "content/public/browser/browser_thread.h"
13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace IPC {
15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  class Sender;
16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace content {
19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// A class used to monitor the power state change and communicate it to child
21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// processes via IPC.
22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class CONTENT_EXPORT PowerMonitorMessageBroadcaster
23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    : public base::PowerObserver {
24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public:
25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  explicit PowerMonitorMessageBroadcaster(IPC::Sender* sender);
26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual ~PowerMonitorMessageBroadcaster();
27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // Implement PowerObserver.
29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual void OnPowerStateChange(bool on_battery_power) OVERRIDE;
30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual void OnSuspend() OVERRIDE;
31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual void OnResume() OVERRIDE;
32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (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)
39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}  // namespace base
40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#endif  // CONTENT_BROWSER_POWER_MONITOR_MESSAGE_BROADCASTER_H_
42