diff options
author | derat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-21 19:33:42 +0000 |
---|---|---|
committer | derat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-21 19:33:42 +0000 |
commit | 23bf56f2d05f21fc3715ce4979e8e667bfd320de (patch) | |
tree | 7135f93865908b0683cb4dac6af927c2f91f86d8 /chromeos | |
parent | 84fdfacdb6d60486cec8fcf2c9194d7eff61573e (diff) | |
download | chromium_src-23bf56f2d05f21fc3715ce4979e8e667bfd320de.zip chromium_src-23bf56f2d05f21fc3715ce4979e8e667bfd320de.tar.gz chromium_src-23bf56f2d05f21fc3715ce4979e8e667bfd320de.tar.bz2 |
chromeos: Add RootPowerManagerClient.
This adds a RootPowerManagerClient class for communicating
over D-Bus with the powerm process. I'm also updating
Chrome to use the power button events from powerm instead of
the ones from powerd.
BUG=chromium-os:36380,chromium-os:36503
Review URL: https://chromiumcodereview.appspot.com/11421023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@169089 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r-- | chromeos/chromeos.gyp | 20 | ||||
-rw-r--r-- | chromeos/dbus/dbus_thread_manager.cc | 8 | ||||
-rw-r--r-- | chromeos/dbus/dbus_thread_manager.h | 2 | ||||
-rw-r--r-- | chromeos/dbus/mock_dbus_thread_manager.cc | 8 | ||||
-rw-r--r-- | chromeos/dbus/mock_dbus_thread_manager.h | 6 | ||||
-rw-r--r-- | chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc | 6 | ||||
-rw-r--r-- | chromeos/dbus/mock_dbus_thread_manager_without_gmock.h | 1 | ||||
-rw-r--r-- | chromeos/dbus/mock_root_power_manager_client.cc | 13 | ||||
-rw-r--r-- | chromeos/dbus/mock_root_power_manager_client.h | 25 | ||||
-rw-r--r-- | chromeos/dbus/root_power_manager_client.cc | 148 | ||||
-rw-r--r-- | chromeos/dbus/root_power_manager_client.h | 47 | ||||
-rw-r--r-- | chromeos/dbus/root_power_manager_observer.h | 28 |
12 files changed, 312 insertions, 0 deletions
diff --git a/chromeos/chromeos.gyp b/chromeos/chromeos.gyp index a3ecafb..7699342 100644 --- a/chromeos/chromeos.gyp +++ b/chromeos/chromeos.gyp @@ -16,6 +16,7 @@ '../dbus/dbus.gyp:dbus', '../net/net.gyp:net', '../third_party/libxml/libxml.gyp:libxml', + 'power_manager_proto', 'power_state_control_proto', 'power_supply_properties_proto', 'video_activity_update_proto', @@ -110,6 +111,9 @@ 'dbus/power_manager_client.h', 'dbus/power_supply_status.cc', 'dbus/power_supply_status.h', + 'dbus/root_power_manager_client.cc', + 'dbus/root_power_manager_client.h', + 'dbus/root_power_manager_observer.h', 'dbus/session_manager_client.cc', 'dbus/session_manager_client.h', 'dbus/speech_synthesizer_client.cc', @@ -210,6 +214,8 @@ 'dbus/mock_permission_broker_client.cc', 'dbus/mock_power_manager_client.cc', 'dbus/mock_power_manager_client.h', + 'dbus/mock_root_power_manager_client.cc', + 'dbus/mock_root_power_manager_client.h', 'dbus/mock_session_manager_client.cc', 'dbus/mock_session_manager_client.h', 'dbus/mock_sms_client.cc', @@ -310,6 +316,20 @@ ], }, { + # Protobuf compiler/generator for power-manager related protocol buffers. + # TODO(derat): Remove other protocol buffers in favor of these. + 'target_name': 'power_manager_proto', + 'type': 'static_library', + 'sources': [ + '../third_party/cros_system_api/dbus/power_manager/input_event.proto', + ], + 'variables': { + 'proto_in_dir': '../third_party/cros_system_api/dbus/power_manager', + 'proto_out_dir': 'chromeos/dbus/power_manager', + }, + 'includes': ['../build/protoc.gypi'], + }, + { # Protobuf compiler / generator for the PowerSupplyProperties protocol # buffer. 'target_name': 'power_state_control_proto', diff --git a/chromeos/dbus/dbus_thread_manager.cc b/chromeos/dbus/dbus_thread_manager.cc index 2fe96ce..cb15afd 100644 --- a/chromeos/dbus/dbus_thread_manager.cc +++ b/chromeos/dbus/dbus_thread_manager.cc @@ -40,6 +40,7 @@ #include "chromeos/dbus/modem_messaging_client.h" #include "chromeos/dbus/permission_broker_client.h" #include "chromeos/dbus/power_manager_client.h" +#include "chromeos/dbus/root_power_manager_client.h" #include "chromeos/dbus/session_manager_client.h" #include "chromeos/dbus/sms_client.h" #include "chromeos/dbus/speech_synthesizer_client.h" @@ -120,6 +121,8 @@ class DBusThreadManagerImpl : public DBusThreadManager { PermissionBrokerClient::Create(client_type, system_bus_.get())); power_manager_client_.reset( PowerManagerClient::Create(client_type_maybe_stub, system_bus_.get())); + root_power_manager_client_.reset(RootPowerManagerClient::Create( + client_type_maybe_stub, system_bus_.get())); session_manager_client_.reset( SessionManagerClient::Create(client_type, system_bus_.get())); sms_client_.reset( @@ -289,6 +292,10 @@ class DBusThreadManagerImpl : public DBusThreadManager { return power_manager_client_.get(); } + virtual RootPowerManagerClient* GetRootPowerManagerClient() OVERRIDE { + return root_power_manager_client_.get(); + } + virtual SessionManagerClient* GetSessionManagerClient() OVERRIDE { return session_manager_client_.get(); } @@ -371,6 +378,7 @@ class DBusThreadManagerImpl : public DBusThreadManager { scoped_ptr<ModemMessagingClient> modem_messaging_client_; scoped_ptr<PermissionBrokerClient> permission_broker_client_; scoped_ptr<PowerManagerClient> power_manager_client_; + scoped_ptr<RootPowerManagerClient> root_power_manager_client_; scoped_ptr<SessionManagerClient> session_manager_client_; scoped_ptr<SMSClient> sms_client_; scoped_ptr<SpeechSynthesizerClient> speech_synthesizer_client_; diff --git a/chromeos/dbus/dbus_thread_manager.h b/chromeos/dbus/dbus_thread_manager.h index d74952d..b60d2e0 100644 --- a/chromeos/dbus/dbus_thread_manager.h +++ b/chromeos/dbus/dbus_thread_manager.h @@ -45,6 +45,7 @@ class IntrospectableClient; class ModemMessagingClient; class PermissionBrokerClient; class PowerManagerClient; +class RootPowerManagerClient; class SMSClient; class SessionManagerClient; class ShillDeviceClient; @@ -142,6 +143,7 @@ class CHROMEOS_EXPORT DBusThreadManager { virtual ModemMessagingClient* GetModemMessagingClient() = 0; virtual PermissionBrokerClient* GetPermissionBrokerClient() = 0; virtual PowerManagerClient* GetPowerManagerClient() = 0; + virtual RootPowerManagerClient* GetRootPowerManagerClient() = 0; virtual SessionManagerClient* GetSessionManagerClient() = 0; virtual ShillDeviceClient* GetShillDeviceClient() = 0; virtual ShillIPConfigClient* GetShillIPConfigClient() = 0; diff --git a/chromeos/dbus/mock_dbus_thread_manager.cc b/chromeos/dbus/mock_dbus_thread_manager.cc index 302f40e..2f5f646 100644 --- a/chromeos/dbus/mock_dbus_thread_manager.cc +++ b/chromeos/dbus/mock_dbus_thread_manager.cc @@ -27,6 +27,7 @@ #include "chromeos/dbus/mock_modem_messaging_client.h" #include "chromeos/dbus/mock_permission_broker_client.h" #include "chromeos/dbus/mock_power_manager_client.h" +#include "chromeos/dbus/mock_root_power_manager_client.h" #include "chromeos/dbus/mock_session_manager_client.h" #include "chromeos/dbus/mock_sms_client.h" #include "chromeos/dbus/mock_speech_synthesizer_client.h" @@ -62,6 +63,7 @@ MockDBusThreadManager::MockDBusThreadManager() mock_modem_messaging_client_(new MockModemMessagingClient), mock_permission_broker_client_(new MockPermissionBrokerClient), mock_power_manager_client_(new MockPowerManagerClient), + mock_root_power_manager_client_(new MockRootPowerManagerClient), mock_session_manager_client_(new MockSessionManagerClient), mock_sms_client_(new MockSMSClient), mock_speech_synthesizer_client_(new MockSpeechSynthesizerClient), @@ -108,6 +110,8 @@ MockDBusThreadManager::MockDBusThreadManager() .WillRepeatedly(Return(mock_modem_messaging_client())); EXPECT_CALL(*this, GetPowerManagerClient()) .WillRepeatedly(Return(mock_power_manager_client_.get())); + EXPECT_CALL(*this, GetRootPowerManagerClient()) + .WillRepeatedly(Return(mock_root_power_manager_client_.get())); EXPECT_CALL(*this, GetSessionManagerClient()) .WillRepeatedly(Return(mock_session_manager_client_.get())); EXPECT_CALL(*this, GetSMSClient()) @@ -125,6 +129,10 @@ MockDBusThreadManager::MockDBusThreadManager() .Times(AnyNumber()); EXPECT_CALL(*mock_power_manager_client_.get(), RemoveObserver(_)) .Times(AnyNumber()); + EXPECT_CALL(*mock_root_power_manager_client_.get(), AddObserver(_)) + .Times(AnyNumber()); + EXPECT_CALL(*mock_root_power_manager_client_.get(), RemoveObserver(_)) + .Times(AnyNumber()); EXPECT_CALL(*mock_session_manager_client_.get(), AddObserver(_)) .Times(AnyNumber()); EXPECT_CALL(*mock_session_manager_client_.get(), RemoveObserver(_)) diff --git a/chromeos/dbus/mock_dbus_thread_manager.h b/chromeos/dbus/mock_dbus_thread_manager.h index 92fa127..0bace79 100644 --- a/chromeos/dbus/mock_dbus_thread_manager.h +++ b/chromeos/dbus/mock_dbus_thread_manager.h @@ -42,6 +42,7 @@ class MockIntrospectableClient; class MockModemMessagingClient; class MockPermissionBrokerClient; class MockPowerManagerClient; +class MockRootPowerManagerClient; class MockSessionManagerClient; class MockSMSClient; class MockSpeechSynthesizerClient; @@ -82,6 +83,7 @@ class MockDBusThreadManager : public DBusThreadManager { MOCK_METHOD0(GetModemMessagingClient, ModemMessagingClient*(void)); MOCK_METHOD0(GetPermissionBrokerClient, PermissionBrokerClient*(void)); MOCK_METHOD0(GetPowerManagerClient, PowerManagerClient*(void)); + MOCK_METHOD0(GetRootPowerManagerClient, RootPowerManagerClient*(void)); MOCK_METHOD0(GetSessionManagerClient, SessionManagerClient*(void)); MOCK_METHOD0(GetSMSClient, SMSClient*(void)); MOCK_METHOD0(GetSpeechSynthesizerClient, SpeechSynthesizerClient*(void)); @@ -161,6 +163,9 @@ class MockDBusThreadManager : public DBusThreadManager { MockPowerManagerClient* mock_power_manager_client() { return mock_power_manager_client_.get(); } + MockRootPowerManagerClient* mock_root_power_manager_client() { + return mock_root_power_manager_client_.get(); + } MockSessionManagerClient* mock_session_manager_client() { return mock_session_manager_client_.get(); } @@ -197,6 +202,7 @@ class MockDBusThreadManager : public DBusThreadManager { scoped_ptr<MockModemMessagingClient> mock_modem_messaging_client_; scoped_ptr<MockPermissionBrokerClient> mock_permission_broker_client_; scoped_ptr<MockPowerManagerClient> mock_power_manager_client_; + scoped_ptr<MockRootPowerManagerClient> mock_root_power_manager_client_; scoped_ptr<MockSessionManagerClient> mock_session_manager_client_; scoped_ptr<MockSMSClient> mock_sms_client_; scoped_ptr<MockSpeechSynthesizerClient> mock_speech_synthesizer_client_; diff --git a/chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc b/chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc index 3749a56..bf5d4a0 100644 --- a/chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc +++ b/chromeos/dbus/mock_dbus_thread_manager_without_gmock.cc @@ -169,6 +169,12 @@ PowerManagerClient* MockDBusThreadManagerWithoutGMock::GetPowerManagerClient() { return NULL; } +RootPowerManagerClient* +MockDBusThreadManagerWithoutGMock::GetRootPowerManagerClient() { + NOTIMPLEMENTED(); + return NULL; +} + SessionManagerClient* MockDBusThreadManagerWithoutGMock::GetSessionManagerClient() { NOTIMPLEMENTED(); diff --git a/chromeos/dbus/mock_dbus_thread_manager_without_gmock.h b/chromeos/dbus/mock_dbus_thread_manager_without_gmock.h index 631101f..2f6d605 100644 --- a/chromeos/dbus/mock_dbus_thread_manager_without_gmock.h +++ b/chromeos/dbus/mock_dbus_thread_manager_without_gmock.h @@ -60,6 +60,7 @@ class MockDBusThreadManagerWithoutGMock : public DBusThreadManager { virtual ModemMessagingClient* GetModemMessagingClient() OVERRIDE; virtual PermissionBrokerClient* GetPermissionBrokerClient() OVERRIDE; virtual PowerManagerClient* GetPowerManagerClient() OVERRIDE; + virtual RootPowerManagerClient* GetRootPowerManagerClient() OVERRIDE; virtual SessionManagerClient* GetSessionManagerClient() OVERRIDE; virtual SMSClient* GetSMSClient() OVERRIDE; virtual SpeechSynthesizerClient* GetSpeechSynthesizerClient() OVERRIDE; diff --git a/chromeos/dbus/mock_root_power_manager_client.cc b/chromeos/dbus/mock_root_power_manager_client.cc new file mode 100644 index 0000000..51977cc --- /dev/null +++ b/chromeos/dbus/mock_root_power_manager_client.cc @@ -0,0 +1,13 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/dbus/mock_root_power_manager_client.h" + +namespace chromeos { + +MockRootPowerManagerClient::MockRootPowerManagerClient() {} + +MockRootPowerManagerClient::~MockRootPowerManagerClient() {} + +} // namespace chromeos diff --git a/chromeos/dbus/mock_root_power_manager_client.h b/chromeos/dbus/mock_root_power_manager_client.h new file mode 100644 index 0000000..6b7cf0d8 --- /dev/null +++ b/chromeos/dbus/mock_root_power_manager_client.h @@ -0,0 +1,25 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_DBUS_MOCK_ROOT_POWER_MANAGER_CLIENT_H_ +#define CHROMEOS_DBUS_MOCK_ROOT_POWER_MANAGER_CLIENT_H_ + +#include "chromeos/dbus/root_power_manager_client.h" +#include "testing/gmock/include/gmock/gmock.h" + +namespace chromeos { + +class MockRootPowerManagerClient : public RootPowerManagerClient { + public: + MockRootPowerManagerClient(); + virtual ~MockRootPowerManagerClient(); + + MOCK_METHOD1(AddObserver, void(RootPowerManagerObserver*)); + MOCK_METHOD1(RemoveObserver, void(RootPowerManagerObserver*)); + MOCK_METHOD1(HasObserver, bool(RootPowerManagerObserver*)); +}; + +} // namespace chromeos + +#endif // CHROMEOS_DBUS_MOCK_ROOT_POWER_MANAGER_CLIENT_H_ diff --git a/chromeos/dbus/root_power_manager_client.cc b/chromeos/dbus/root_power_manager_client.cc new file mode 100644 index 0000000..d8c8b11 --- /dev/null +++ b/chromeos/dbus/root_power_manager_client.cc @@ -0,0 +1,148 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/dbus/root_power_manager_client.h" + +#include "base/bind.h" +#include "base/memory/weak_ptr.h" +#include "base/observer_list.h" +#include "base/time.h" +#include "chromeos/dbus/power_manager/input_event.pb.h" +#include "chromeos/dbus/root_power_manager_observer.h" +#include "dbus/bus.h" +#include "dbus/message.h" +#include "dbus/object_path.h" +#include "dbus/object_proxy.h" +#include "third_party/cros_system_api/dbus/service_constants.h" + +namespace chromeos { + +// The RootPowerManagerClient implementation used in production. +class RootPowerManagerClientImpl : public RootPowerManagerClient { + public: + explicit RootPowerManagerClientImpl(dbus::Bus* bus) + : proxy_(NULL), + weak_ptr_factory_(this) { + proxy_ = bus->GetObjectProxy( + power_manager::kRootPowerManagerServiceName, + dbus::ObjectPath(power_manager::kRootPowerManagerServicePath)); + + proxy_->ConnectToSignal( + power_manager::kRootPowerManagerInterface, + power_manager::kInputEventSignal, + base::Bind(&RootPowerManagerClientImpl::InputEventReceived, + weak_ptr_factory_.GetWeakPtr()), + base::Bind(&RootPowerManagerClientImpl::SignalConnected, + weak_ptr_factory_.GetWeakPtr())); + } + + virtual ~RootPowerManagerClientImpl() { + } + + // RootPowerManagerClient overrides: + virtual void AddObserver(RootPowerManagerObserver* observer) OVERRIDE { + observers_.AddObserver(observer); + } + + virtual void RemoveObserver(RootPowerManagerObserver* observer) OVERRIDE { + observers_.RemoveObserver(observer); + } + + virtual bool HasObserver(RootPowerManagerObserver* observer) OVERRIDE { + return observers_.HasObserver(observer); + } + + private: + // Called when a D-Bus signal is initially connected. + void SignalConnected(const std::string& interface_name, + const std::string& signal_name, + bool success) { + if (!success) + LOG(WARNING) << "Failed to connect to signal " << signal_name; + } + + void InputEventReceived(dbus::Signal* signal) { + dbus::MessageReader reader(signal); + power_manager::InputEvent proto; + if (!reader.PopArrayOfBytesAsProto(&proto)) { + LOG(ERROR) << "Unable to decode protocol buffer from " + << power_manager::kInputEventSignal << " signal"; + return; + } + + VLOG(1) << "Got " << power_manager::kInputEventSignal << " signal"; + base::TimeTicks timestamp = + base::TimeTicks::FromInternalValue(proto.timestamp()); + switch (proto.type()) { + case power_manager::InputEvent_Type_POWER_BUTTON_DOWN: + case power_manager::InputEvent_Type_POWER_BUTTON_UP: { + bool down = + (proto.type() == power_manager::InputEvent_Type_POWER_BUTTON_DOWN); + FOR_EACH_OBSERVER(RootPowerManagerObserver, observers_, + OnPowerButtonEvent(down, timestamp)); + break; + } + case power_manager::InputEvent_Type_LID_OPEN: + case power_manager::InputEvent_Type_LID_CLOSED: { + bool open = + (proto.type() == power_manager::InputEvent_Type_LID_OPEN); + FOR_EACH_OBSERVER(RootPowerManagerObserver, observers_, + OnLidEvent(open, timestamp)); + break; + } + } + } + + dbus::ObjectProxy* proxy_; + + ObserverList<RootPowerManagerObserver> observers_; + + // Note: This should remain the last member so it'll be destroyed and + // invalidate its weak pointers before any other members are destroyed. + base::WeakPtrFactory<RootPowerManagerClientImpl> weak_ptr_factory_; + + DISALLOW_COPY_AND_ASSIGN(RootPowerManagerClientImpl); +}; + +// A no-op RootPowerManagerClient implementation used on Linux desktops. +class RootPowerManagerClientStubImpl : public RootPowerManagerClient { + public: + RootPowerManagerClientStubImpl() {} + virtual ~RootPowerManagerClientStubImpl() {} + + // RootPowerManagerClient overrides: + virtual void AddObserver(RootPowerManagerObserver* observer) OVERRIDE { + observers_.AddObserver(observer); + } + + virtual void RemoveObserver(RootPowerManagerObserver* observer) OVERRIDE { + observers_.RemoveObserver(observer); + } + + virtual bool HasObserver(RootPowerManagerObserver* observer) OVERRIDE { + return observers_.HasObserver(observer); + } + + private: + ObserverList<RootPowerManagerObserver> observers_; + + DISALLOW_COPY_AND_ASSIGN(RootPowerManagerClientStubImpl); +}; + +RootPowerManagerClient::RootPowerManagerClient() { +} + +RootPowerManagerClient::~RootPowerManagerClient() { +} + +RootPowerManagerClient* RootPowerManagerClient::Create( + DBusClientImplementationType type, + dbus::Bus* bus) { + if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) + return new RootPowerManagerClientImpl(bus); + DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); + return new RootPowerManagerClientStubImpl(); +} + +} // namespace chromeos diff --git a/chromeos/dbus/root_power_manager_client.h b/chromeos/dbus/root_power_manager_client.h new file mode 100644 index 0000000..8bdb695 --- /dev/null +++ b/chromeos/dbus/root_power_manager_client.h @@ -0,0 +1,47 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_DBUS_ROOT_POWER_MANAGER_CLIENT_H_ +#define CHROMEOS_DBUS_ROOT_POWER_MANAGER_CLIENT_H_ + +#include <string> + +#include "base/basictypes.h" +#include "base/callback.h" +#include "chromeos/chromeos_export.h" +#include "chromeos/dbus/dbus_client_implementation_type.h" + +namespace dbus { +class Bus; +} + +namespace chromeos { + +class RootPowerManagerObserver; + +// RootPowerManagerClient is used to communicate with the powerm process. +class CHROMEOS_EXPORT RootPowerManagerClient { + public: + // Adds and removes observers. + virtual void AddObserver(RootPowerManagerObserver* observer) = 0; + virtual void RemoveObserver(RootPowerManagerObserver* observer) = 0; + virtual bool HasObserver(RootPowerManagerObserver* observer) = 0; + + // Creates the instance. + static RootPowerManagerClient* Create(DBusClientImplementationType type, + dbus::Bus* bus); + + virtual ~RootPowerManagerClient(); + + protected: + // Create() should be used instead. + RootPowerManagerClient(); + + private: + DISALLOW_COPY_AND_ASSIGN(RootPowerManagerClient); +}; + +} // namespace chromeos + +#endif // CHROMEOS_DBUS_ROOT_POWER_MANAGER_CLIENT_H_ diff --git a/chromeos/dbus/root_power_manager_observer.h b/chromeos/dbus/root_power_manager_observer.h new file mode 100644 index 0000000..93fb6ec --- /dev/null +++ b/chromeos/dbus/root_power_manager_observer.h @@ -0,0 +1,28 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_DBUS_ROOT_POWER_MANAGER_OBSERVER_H_ +#define CHROMEOS_DBUS_ROOT_POWER_MANAGER_OBSERVER_H_ + +#include "base/time.h" +#include "chromeos/chromeos_export.h" + +namespace chromeos { + +class CHROMEOS_EXPORT RootPowerManagerObserver { + public: + // Called when the power button is pressed or released. + virtual void OnPowerButtonEvent(bool down, + const base::TimeTicks& timestamp) {} + + // Called when the device's lid is opened or closed. + virtual void OnLidEvent(bool open, const base::TimeTicks& timestamp) {} + + protected: + virtual ~RootPowerManagerObserver() {} +}; + +} // namespace chromeos + +#endif // CHROMEOS_DBUS_ROOT_POWER_MANAGER_OBSERVER_H_ |