summaryrefslogtreecommitdiffstats
path: root/chromeos
diff options
context:
space:
mode:
authorderat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-16 21:49:17 +0000
committerderat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-16 21:49:17 +0000
commit68e9f17110c25bc948746c9263ff6882ef6e2522 (patch)
treef62c6e5b8ed89c77b38527e6429f42a4b94da953 /chromeos
parentb741e8f6ccf1c6bdc5f4e98bd6751b085b7f7bbc (diff)
downloadchromium_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.cc34
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() {