1 // Copyright (c) 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 CONTENT_CHILD_POWER_MONITOR_BROADCAST_SOURCE_H_ 6 #define CONTENT_CHILD_POWER_MONITOR_BROADCAST_SOURCE_H_ 7 8 #include "base/power_monitor/power_monitor_source.h" 9 #include "content/common/content_export.h" 10 #include "ipc/ipc_channel.h" 11 #include "ipc/ipc_channel_proxy.h" 12 13 namespace content { 14 15 class PowerMessageFilter; 16 17 // Receives Power Monitor IPC messages sent from the browser process and relays 18 // them to the PowerMonitor of the current process. 19 class CONTENT_EXPORT PowerMonitorBroadcastSource : 20 public base::PowerMonitorSource { 21 public: 22 explicit PowerMonitorBroadcastSource(); 23 virtual ~PowerMonitorBroadcastSource(); 24 25 IPC::ChannelProxy::MessageFilter* GetMessageFilter(); 26 27 private: 28 friend class PowerMessageFilter; 29 30 virtual bool IsOnBatteryPowerImpl() OVERRIDE; 31 32 void OnPowerStateChange(bool on_battery_power); 33 void OnSuspend(); 34 void OnResume(); 35 36 bool last_reported_battery_power_state_; 37 scoped_refptr<PowerMessageFilter> message_filter_; 38 39 DISALLOW_COPY_AND_ASSIGN(PowerMonitorBroadcastSource); 40 }; 41 42 } // namespace content 43 44 #endif // CONTENT_CHILD_POWER_MONITOR_MESSAGE_FILTER_H_ 45