diff options
author | derat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-16 21:49:17 +0000 |
---|---|---|
committer | derat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-16 21:49:17 +0000 |
commit | 68e9f17110c25bc948746c9263ff6882ef6e2522 (patch) | |
tree | f62c6e5b8ed89c77b38527e6429f42a4b94da953 /chromeos | |
parent | b741e8f6ccf1c6bdc5f4e98bd6751b085b7f7bbc (diff) | |
download | chromium_src-68e9f17110c25bc948746c9263ff6882ef6e2522.zip chromium_src-68e9f17110c25bc948746c9263ff6882ef6e2522.tar.gz chromium_src-68e9f17110c25bc948746c9263ff6882ef6e2522.tar.bz2 |
chromeos: Make SessionManagerClientStubImpl notify re lock.
This makes the stub version of the code for communicating
with the session manager track the screen lock state and
notify observers when it changes.
PowerManagerClientStubImpl used to do this, but I failed to
port over this behavior in r145737.
BUG=137546
TEST=manual: when running chrome os build on desktop, ctrl-shift-l makes the desktop fade to black (the actual lock screen appears to be independently broken)
Review URL: https://chromiumcodereview.appspot.com/10780020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146900 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r-- | chromeos/dbus/session_manager_client.cc | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/chromeos/dbus/session_manager_client.cc b/chromeos/dbus/session_manager_client.cc index dd90b94..80dcc72 100644 --- a/chromeos/dbus/session_manager_client.cc +++ b/chromeos/dbus/session_manager_client.cc @@ -321,19 +321,35 @@ class SessionManagerClientImpl : public SessionManagerClient { // The SessionManagerClient implementation used on Linux desktop, // which does nothing. class SessionManagerClientStubImpl : public SessionManagerClient { + public: + SessionManagerClientStubImpl() : screen_locked_(false) {} + virtual ~SessionManagerClientStubImpl() {} + // SessionManagerClient overrides. - virtual void AddObserver(Observer* observer) OVERRIDE {} - virtual void RemoveObserver(Observer* observer) OVERRIDE {} - virtual bool HasObserver(Observer* observer) OVERRIDE { return false; } + virtual void AddObserver(Observer* observer) OVERRIDE { + observers_.AddObserver(observer); + } + virtual void RemoveObserver(Observer* observer) OVERRIDE { + observers_.RemoveObserver(observer); + } + virtual bool HasObserver(Observer* observer) OVERRIDE { + return observers_.HasObserver(observer); + } 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 RequestLockScreen() OVERRIDE { + screen_locked_ = true; + FOR_EACH_OBSERVER(Observer, observers_, LockScreen()); + } + virtual void RequestUnlockScreen() OVERRIDE { + screen_locked_ = false; + FOR_EACH_OBSERVER(Observer, observers_, UnlockScreen()); + } + virtual bool GetIsScreenLocked() OVERRIDE { return screen_locked_; } virtual void RetrieveDevicePolicy( const RetrievePolicyCallback& callback) OVERRIDE { callback.Run(""); @@ -350,6 +366,12 @@ class SessionManagerClientStubImpl : public SessionManagerClient { const StorePolicyCallback& callback) OVERRIDE { callback.Run(true); } + + private: + ObserverList<Observer> observers_; + bool screen_locked_; + + DISALLOW_COPY_AND_ASSIGN(SessionManagerClientStubImpl); }; SessionManagerClient::SessionManagerClient() { |