| 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("");
|
|
|