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

Unified Diff: chromeos/dbus/session_manager_client.cc

Issue 10693087: chromeos: Request screen lock directly from session manager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove locking-related metrics code Created 8 years, 5 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
« no previous file with comments | « chromeos/dbus/session_manager_client.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/dbus/session_manager_client.cc
diff --git a/chromeos/dbus/session_manager_client.cc b/chromeos/dbus/session_manager_client.cc
index 6c40353cbece0b57d9d3e6e5e37f09b2f0cbba8f..dd90b94d33b0861babe04edb24a5c3dd48d7da45 100644
--- a/chromeos/dbus/session_manager_client.cc
+++ b/chromeos/dbus/session_manager_client.cc
@@ -20,12 +20,12 @@ class SessionManagerClientImpl : public SessionManagerClient {
public:
explicit SessionManagerClientImpl(dbus::Bus* bus)
: session_manager_proxy_(NULL),
+ screen_locked_(false),
weak_ptr_factory_(this) {
session_manager_proxy_ = bus->GetObjectProxy(
login_manager::kSessionManagerServiceName,
dbus::ObjectPath(login_manager::kSessionManagerServicePath));
- // Monitor the D-Bus signal for owner key changes.
session_manager_proxy_->ConnectToSignal(
chromium::kChromiumInterface,
chromium::kOwnerKeySetSignal,
@@ -34,7 +34,6 @@ class SessionManagerClientImpl : public SessionManagerClient {
base::Bind(&SessionManagerClientImpl::SignalConnected,
weak_ptr_factory_.GetWeakPtr()));
- // Monitor the D-Bus signal for property changes.
session_manager_proxy_->ConnectToSignal(
chromium::kChromiumInterface,
chromium::kPropertyChangeCompleteSignal,
@@ -42,46 +41,50 @@ class SessionManagerClientImpl : public SessionManagerClient {
weak_ptr_factory_.GetWeakPtr()),
base::Bind(&SessionManagerClientImpl::SignalConnected,
weak_ptr_factory_.GetWeakPtr()));
+
+ session_manager_proxy_->ConnectToSignal(
+ chromium::kChromiumInterface,
+ chromium::kLockScreenSignal,
+ base::Bind(&SessionManagerClientImpl::ScreenLockReceived,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&SessionManagerClientImpl::SignalConnected,
+ weak_ptr_factory_.GetWeakPtr()));
+
+ session_manager_proxy_->ConnectToSignal(
+ chromium::kChromiumInterface,
+ chromium::kUnlockScreenSignal,
+ base::Bind(&SessionManagerClientImpl::ScreenUnlockReceived,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&SessionManagerClientImpl::SignalConnected,
+ weak_ptr_factory_.GetWeakPtr()));
}
virtual ~SessionManagerClientImpl() {
}
- // SessionManagerClient override.
+ // SessionManagerClient overrides:
virtual void AddObserver(Observer* observer) OVERRIDE {
observers_.AddObserver(observer);
}
- // SessionManagerClient override.
virtual void RemoveObserver(Observer* observer) OVERRIDE {
observers_.RemoveObserver(observer);
}
- // SessionManagerClient override.
+ virtual bool HasObserver(Observer* observer) OVERRIDE {
+ return observers_.HasObserver(observer);
+ }
+
virtual void EmitLoginPromptReady() OVERRIDE {
- dbus::MethodCall method_call(
- login_manager::kSessionManagerInterface,
+ SimpleMethodCallToSessionManager(
login_manager::kSessionManagerEmitLoginPromptReady);
- session_manager_proxy_->CallMethod(
- &method_call,
- dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
- base::Bind(&SessionManagerClientImpl::OnEmitLoginPromptReady,
- weak_ptr_factory_.GetWeakPtr()));
}
- // SessionManagerClient override.
virtual void EmitLoginPromptVisible() OVERRIDE {
- dbus::MethodCall method_call(
- login_manager::kSessionManagerInterface,
+ SimpleMethodCallToSessionManager(
login_manager::kSessionManagerEmitLoginPromptVisible);
- session_manager_proxy_->CallMethod(
- &method_call,
- dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
- base::Bind(&SessionManagerClientImpl::OnEmitLoginPromptVisible,
- weak_ptr_factory_.GetWeakPtr()));
}
- // SessionManagerClient override.
virtual void RestartJob(int pid, const std::string& command_line) OVERRIDE {
dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
login_manager::kSessionManagerRestartJob);
@@ -95,18 +98,10 @@ class SessionManagerClientImpl : public SessionManagerClient {
weak_ptr_factory_.GetWeakPtr()));
}
- // SessionManagerClient override.
virtual void RestartEntd() OVERRIDE {
- dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
- login_manager::kSessionManagerRestartEntd);
- session_manager_proxy_->CallMethod(
- &method_call,
- dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
- base::Bind(&SessionManagerClientImpl::OnRestartEntd,
- weak_ptr_factory_.GetWeakPtr()));
+ SimpleMethodCallToSessionManager(login_manager::kSessionManagerRestartEntd);
}
- // SessionManagerClient override.
virtual void StartSession(const std::string& user_email) OVERRIDE {
dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
login_manager::kSessionManagerStartSession);
@@ -120,7 +115,6 @@ class SessionManagerClientImpl : public SessionManagerClient {
weak_ptr_factory_.GetWeakPtr()));
}
- // SessionManagerClient override.
virtual void StopSession() OVERRIDE {
dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
login_manager::kSessionManagerStopSession);
@@ -133,28 +127,37 @@ class SessionManagerClientImpl : public SessionManagerClient {
weak_ptr_factory_.GetWeakPtr()));
}
- // SessionManagerClient override.
+ virtual void RequestLockScreen() OVERRIDE {
+ SimpleMethodCallToSessionManager(login_manager::kSessionManagerLockScreen);
+ }
+
+ virtual void RequestUnlockScreen() OVERRIDE {
+ SimpleMethodCallToSessionManager(
+ login_manager::kSessionManagerUnlockScreen);
+ }
+
+ virtual bool GetIsScreenLocked() OVERRIDE {
+ return screen_locked_;
+ }
+
virtual void RetrieveDevicePolicy(
const RetrievePolicyCallback& callback) OVERRIDE {
CallRetrievePolicy(login_manager::kSessionManagerRetrievePolicy,
callback);
}
- // SessionManagerClient override.
virtual void RetrieveUserPolicy(
const RetrievePolicyCallback& callback) OVERRIDE {
CallRetrievePolicy(login_manager::kSessionManagerRetrieveUserPolicy,
callback);
}
- // SessionManagerClient override.
virtual void StoreDevicePolicy(const std::string& policy_blob,
const StorePolicyCallback& callback) OVERRIDE {
CallStorePolicy(login_manager::kSessionManagerStorePolicy,
policy_blob, callback);
}
- // SessionManagerClient override.
virtual void StoreUserPolicy(const std::string& policy_blob,
const StorePolicyCallback& callback) OVERRIDE {
CallStorePolicy(login_manager::kSessionManagerStoreUserPolicy,
@@ -162,6 +165,17 @@ class SessionManagerClientImpl : public SessionManagerClient {
}
private:
+ // Makes a method call to the session manager with no arguments and no
+ // response.
+ void SimpleMethodCallToSessionManager(const std::string& method_name) {
+ dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
+ method_name);
+ session_manager_proxy_->CallMethod(
+ &method_call,
+ dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
+ dbus::ObjectProxy::EmptyResponseCallback());
+ }
+
// Helper for Retrieve{User,Device}Policy.
virtual void CallRetrievePolicy(const std::string& method_name,
const RetrievePolicyCallback& callback) {
@@ -195,20 +209,6 @@ class SessionManagerClientImpl : public SessionManagerClient {
callback));
}
- // Called when kSessionManagerEmitLoginPromptReady method is complete.
- void OnEmitLoginPromptReady(dbus::Response* response) {
- LOG_IF(ERROR, !response)
- << "Failed to call "
- << login_manager::kSessionManagerEmitLoginPromptReady;
- }
-
- // Called when kSessionManagerEmitLoginPromptVisible method is complete.
- void OnEmitLoginPromptVisible(dbus::Response* response) {
- LOG_IF(ERROR, !response)
- << "Failed to call "
- << login_manager::kSessionManagerEmitLoginPromptVisible;
- }
-
// Called when kSessionManagerRestartJob method is complete.
void OnRestartJob(dbus::Response* response) {
LOG_IF(ERROR, !response)
@@ -216,13 +216,6 @@ class SessionManagerClientImpl : public SessionManagerClient {
<< login_manager::kSessionManagerRestartJob;
}
- // Called when kSessionManagerRestartEntd method is complete.
- void OnRestartEntd(dbus::Response* response) {
- LOG_IF(ERROR, !response)
- << "Failed to call "
- << login_manager::kSessionManagerRestartEntd;
- }
-
// Called when kSessionManagerStartSession method is complete.
void OnStartSession(dbus::Response* response) {
LOG_IF(ERROR, !response)
@@ -300,6 +293,16 @@ class SessionManagerClientImpl : public SessionManagerClient {
FOR_EACH_OBSERVER(Observer, observers_, PropertyChangeComplete(success));
}
+ void ScreenLockReceived(dbus::Signal* signal) {
+ screen_locked_ = true;
+ FOR_EACH_OBSERVER(Observer, observers_, LockScreen());
+ }
+
+ void ScreenUnlockReceived(dbus::Signal* signal) {
+ screen_locked_ = false;
+ FOR_EACH_OBSERVER(Observer, observers_, UnlockScreen());
+ }
+
// Called when the object is connected to the signal.
void SignalConnected(const std::string& interface_name,
const std::string& signal_name,
@@ -309,6 +312,7 @@ class SessionManagerClientImpl : public SessionManagerClient {
dbus::ObjectProxy* session_manager_proxy_;
ObserverList<Observer> observers_;
+ bool screen_locked_;
base::WeakPtrFactory<SessionManagerClientImpl> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(SessionManagerClientImpl);
@@ -320,12 +324,16 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
// SessionManagerClient overrides.
virtual void AddObserver(Observer* observer) OVERRIDE {}
virtual void RemoveObserver(Observer* observer) OVERRIDE {}
+ virtual bool HasObserver(Observer* observer) OVERRIDE { return false; }
virtual void EmitLoginPromptReady() OVERRIDE {}
virtual void EmitLoginPromptVisible() OVERRIDE {}
virtual void RestartJob(int pid, const std::string& command_line) OVERRIDE {}
virtual void RestartEntd() OVERRIDE {}
virtual void StartSession(const std::string& user_email) OVERRIDE {}
virtual void StopSession() OVERRIDE {}
+ virtual void RequestLockScreen() OVERRIDE {}
+ virtual void RequestUnlockScreen() OVERRIDE {}
+ virtual bool GetIsScreenLocked() OVERRIDE { return false; }
virtual void RetrieveDevicePolicy(
const RetrievePolicyCallback& callback) OVERRIDE {
callback.Run("");
« no previous file with comments | « chromeos/dbus/session_manager_client.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698