Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(645)

Unified Diff: chrome/browser/chromeos/dbus/power_manager_client.cc

Issue 8664014: chromeos: move screen lock handling to power manager client (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: rebased Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/dbus/power_manager_client.cc
diff --git a/chrome/browser/chromeos/dbus/power_manager_client.cc b/chrome/browser/chromeos/dbus/power_manager_client.cc
index 476a3019ca37ad56d8371e2dd8e4f00557d1c2e6..c73ff0a84e59b8cda1a4e76c13f4e11e89209256 100644
--- a/chrome/browser/chromeos/dbus/power_manager_client.cc
+++ b/chrome/browser/chromeos/dbus/power_manager_client.cc
@@ -92,6 +92,29 @@ class PowerManagerClientImpl : public PowerManagerClient {
weak_ptr_factory_.GetWeakPtr()),
base::Bind(&PowerManagerClientImpl::SignalConnected,
weak_ptr_factory_.GetWeakPtr()));
+
+ // Monitor the D-Bus signal for screen lock and unlock signals.
+ power_manager_proxy_->ConnectToSignal(
+ chromium::kChromiumInterface,
+ chromium::kLockScreenSignal,
+ base::Bind(&PowerManagerClientImpl::ScreenLockSignalReceived,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&PowerManagerClientImpl::SignalConnected,
+ weak_ptr_factory_.GetWeakPtr()));
+ power_manager_proxy_->ConnectToSignal(
+ chromium::kChromiumInterface,
+ chromium::kUnlockScreenSignal,
+ base::Bind(&PowerManagerClientImpl::ScreenUnlockSignalReceived,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&PowerManagerClientImpl::SignalConnected,
+ weak_ptr_factory_.GetWeakPtr()));
+ power_manager_proxy_->ConnectToSignal(
+ chromium::kChromiumInterface,
+ chromium::kUnlockScreenFailedSignal,
+ base::Bind(&PowerManagerClientImpl::ScreenUnlockFailedSignalReceived,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&PowerManagerClientImpl::SignalConnected,
+ weak_ptr_factory_.GetWeakPtr()));
}
virtual ~PowerManagerClientImpl() {
@@ -176,6 +199,22 @@ class PowerManagerClientImpl : public PowerManagerClient {
weak_ptr_factory_.GetWeakPtr(), callback));
}
+ virtual void NotifyScreenLockRequested() OVERRIDE {
+ SimpleMethodCallToPowerManager(power_manager::kRequestLockScreenMethod);
+ }
+
+ virtual void NotifyScreenLockCompleted() OVERRIDE {
+ SimpleMethodCallToPowerManager(power_manager::kScreenIsLockedMethod);
+ }
+
+ virtual void NotifyScreenUnlockRequested() OVERRIDE {
+ SimpleMethodCallToPowerManager(power_manager::kRequestUnlockScreenMethod);
+ }
+
+ virtual void NotifyScreenUnlockCompleted() OVERRIDE {
+ SimpleMethodCallToPowerManager(power_manager::kScreenIsUnlockedMethod);
+ }
+
private:
// Called when a dbus signal is initially connected.
void SignalConnected(const std::string& interface_name,
@@ -185,6 +224,16 @@ class PowerManagerClientImpl : public PowerManagerClient {
<< signal_name << ".";
}
+ // Make a method call to power manager with no arguments and no response.
+ void SimpleMethodCallToPowerManager(const std::string& method_name) {
+ dbus::MethodCall method_call(power_manager::kPowerManagerInterface,
+ method_name);
+ power_manager_proxy_->CallMethod(
+ &method_call,
+ dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
+ dbus::ObjectProxy::EmptyResponseCallback());
+ }
+
// Called when a brightness change signal is received.
void BrightnessChangedReceived(dbus::Signal* signal) {
dbus::MessageReader reader(signal);
@@ -292,6 +341,18 @@ class PowerManagerClientImpl : public PowerManagerClient {
callback.Run(idle_time_ms/1000);
}
+ void ScreenLockSignalReceived(dbus::Signal* signal) {
+ FOR_EACH_OBSERVER(Observer, observers_, LockScreen());
+ }
+
+ void ScreenUnlockSignalReceived(dbus::Signal* signal) {
+ FOR_EACH_OBSERVER(Observer, observers_, UnlockScreen());
+ }
+
+ void ScreenUnlockFailedSignalReceived(dbus::Signal* signal) {
+ FOR_EACH_OBSERVER(Observer, observers_, UnlockScreenFailed());
+ }
+
dbus::ObjectProxy* power_manager_proxy_;
ObserverList<Observer> observers_;
base::WeakPtrFactory<PowerManagerClientImpl> weak_ptr_factory_;
@@ -352,6 +413,14 @@ class PowerManagerClientStubImpl : public PowerManagerClient {
callback.Run(0);
}
+ virtual void NotifyScreenLockRequested() OVERRIDE {}
+
+ virtual void NotifyScreenLockCompleted() OVERRIDE {}
+
+ virtual void NotifyScreenUnlockRequested() OVERRIDE {}
+
+ virtual void NotifyScreenUnlockCompleted() OVERRIDE {}
+
private:
void Update() {
// We pause at 0 and 100% so that it's easier to check those conditions.
« no previous file with comments | « chrome/browser/chromeos/dbus/power_manager_client.h ('k') | chrome/browser/chromeos/login/login_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698