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

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

Issue 9265026: Implement restart on Idle for Kiosk Mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review comments. Created 8 years, 10 months 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 c3cae3f1d7b8c240f2a45cae2df7bb517121ceec..079241775c04e18c71aa0071412c273a3298c4f4 100644
--- a/chrome/browser/chromeos/dbus/power_manager_client.cc
+++ b/chrome/browser/chromeos/dbus/power_manager_client.cc
@@ -122,6 +122,22 @@ class PowerManagerClientImpl : public PowerManagerClient {
weak_ptr_factory_.GetWeakPtr()),
base::Bind(&PowerManagerClientImpl::SignalConnected,
weak_ptr_factory_.GetWeakPtr()));
+
+ power_manager_proxy_->ConnectToSignal(
+ power_manager::kPowerManagerInterface,
+ power_manager::kIdleNotifySignal,
+ base::Bind(&PowerManagerClientImpl::IdleNotifySignalReceived,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&PowerManagerClientImpl::SignalConnected,
+ weak_ptr_factory_.GetWeakPtr()));
+
+ power_manager_proxy_->ConnectToSignal(
+ power_manager::kPowerManagerInterface,
+ power_manager::kActiveNotifySignal,
+ base::Bind(&PowerManagerClientImpl::IdleNotifySignalReceived,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&PowerManagerClientImpl::SignalConnected,
+ weak_ptr_factory_.GetWeakPtr()));
}
virtual ~PowerManagerClientImpl() {
@@ -207,6 +223,23 @@ class PowerManagerClientImpl : public PowerManagerClient {
weak_ptr_factory_.GetWeakPtr(), callback));
}
+ virtual void RequestIdleNotification(int64 threshold) OVERRIDE {
+ dbus::MethodCall method_call(power_manager::kPowerManagerInterface,
+ power_manager::kRequestIdleNotification);
+ dbus::MessageWriter writer(&method_call);
+ writer.AppendInt64(threshold);
+
+ power_manager_proxy_->CallMethod(
+ &method_call,
+ dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
+ dbus::ObjectProxy::EmptyResponseCallback());
+ }
+
+ virtual void RequestActiveNotification() OVERRIDE {
+ RequestIdleNotification(0);
+ }
+
+
virtual void NotifyScreenLockRequested() OVERRIDE {
SimpleMethodCallToPowerManager(power_manager::kRequestLockScreenMethod);
}
@@ -378,6 +411,24 @@ class PowerManagerClientImpl : public PowerManagerClient {
FOR_EACH_OBSERVER(Observer, observers_, UnlockScreenFailed());
}
+
+ void IdleNotifySignalReceived(dbus::Signal* signal) {
+ dbus::MessageReader reader(signal);
+ int64 threshold = 0;
+ if (!reader.PopInt64(&threshold)) {
+ LOG(ERROR) << "Idle Notify signal had incorrect parameters: "
+ << signal->ToString();
+ return;
+ }
+
+ VLOG(1) << "Idle Notify: " << threshold;
+ if (threshold)
+ FOR_EACH_OBSERVER(Observer, observers_, IdleNotify(threshold));
+ else
+ FOR_EACH_OBSERVER(Observer, observers_, ActiveNotify());
+ }
+
+
dbus::ObjectProxy* power_manager_proxy_;
ObserverList<Observer> observers_;
base::WeakPtrFactory<PowerManagerClientImpl> weak_ptr_factory_;
@@ -439,12 +490,13 @@ class PowerManagerClientStubImpl : public PowerManagerClient {
callback.Run(0);
}
+ virtual void RequestIdleNotification(int64 threshold) OVERRIDE {}
+ virtual void RequestActiveNotification() OVERRIDE {}
+
virtual void NotifyScreenLockRequested() OVERRIDE {
ScreenLocker::Show();
}
-
virtual void NotifyScreenLockCompleted() OVERRIDE {}
-
virtual void NotifyScreenUnlockRequested() OVERRIDE {
ScreenLocker::Hide();
}

Powered by Google App Engine
This is Rietveld 408576698