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

Side by Side Diff: chromeos/dbus/session_manager_client.cc

Issue 852453005: chromeos: Make CheckIdleStateIsLocked() query D-Bus client. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sigh, MockSessionManagerClient Created 5 years, 11 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 unified diff | Download patch
« no previous file with comments | « chromeos/dbus/session_manager_client.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/dbus/session_manager_client.h" 5 #include "chromeos/dbus/session_manager_client.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 } 59 }
60 } 60 }
61 61
62 } // namespace 62 } // namespace
63 63
64 // The SessionManagerClient implementation used in production. 64 // The SessionManagerClient implementation used in production.
65 class SessionManagerClientImpl : public SessionManagerClient { 65 class SessionManagerClientImpl : public SessionManagerClient {
66 public: 66 public:
67 SessionManagerClientImpl() 67 SessionManagerClientImpl()
68 : session_manager_proxy_(NULL), 68 : session_manager_proxy_(NULL),
69 screen_is_locked_(false),
69 weak_ptr_factory_(this) {} 70 weak_ptr_factory_(this) {}
70 71
71 virtual ~SessionManagerClientImpl() { 72 virtual ~SessionManagerClientImpl() {
72 } 73 }
73 74
74 // SessionManagerClient overrides: 75 // SessionManagerClient overrides:
75 virtual void SetStubDelegate(StubDelegate* delegate) override { 76 virtual void SetStubDelegate(StubDelegate* delegate) override {
76 // Do nothing; this isn't a stub implementation. 77 // Do nothing; this isn't a stub implementation.
77 } 78 }
78 79
79 virtual void AddObserver(Observer* observer) override { 80 virtual void AddObserver(Observer* observer) override {
80 observers_.AddObserver(observer); 81 observers_.AddObserver(observer);
81 } 82 }
82 83
83 virtual void RemoveObserver(Observer* observer) override { 84 virtual void RemoveObserver(Observer* observer) override {
84 observers_.RemoveObserver(observer); 85 observers_.RemoveObserver(observer);
85 } 86 }
86 87
87 virtual bool HasObserver(const Observer* observer) const override { 88 virtual bool HasObserver(const Observer* observer) const override {
88 return observers_.HasObserver(observer); 89 return observers_.HasObserver(observer);
89 } 90 }
90 91
92 virtual bool IsScreenLocked() const override { return screen_is_locked_; }
93
91 virtual void EmitLoginPromptVisible() override { 94 virtual void EmitLoginPromptVisible() override {
92 SimpleMethodCallToSessionManager( 95 SimpleMethodCallToSessionManager(
93 login_manager::kSessionManagerEmitLoginPromptVisible); 96 login_manager::kSessionManagerEmitLoginPromptVisible);
94 FOR_EACH_OBSERVER(Observer, observers_, EmitLoginPromptVisibleCalled()); 97 FOR_EACH_OBSERVER(Observer, observers_, EmitLoginPromptVisibleCalled());
95 } 98 }
96 99
97 virtual void RestartJob(int pid, const std::string& command_line) override { 100 virtual void RestartJob(int pid, const std::string& command_line) override {
98 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, 101 dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
99 login_manager::kSessionManagerRestartJob); 102 login_manager::kSessionManagerRestartJob);
100 dbus::MessageWriter writer(&method_call); 103 dbus::MessageWriter writer(&method_call);
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 std::string result_string; 513 std::string result_string;
511 if (!reader.PopString(&result_string)) { 514 if (!reader.PopString(&result_string)) {
512 LOG(ERROR) << "Invalid signal: " << signal->ToString(); 515 LOG(ERROR) << "Invalid signal: " << signal->ToString();
513 return; 516 return;
514 } 517 }
515 const bool success = StartsWithASCII(result_string, "success", false); 518 const bool success = StartsWithASCII(result_string, "success", false);
516 FOR_EACH_OBSERVER(Observer, observers_, PropertyChangeComplete(success)); 519 FOR_EACH_OBSERVER(Observer, observers_, PropertyChangeComplete(success));
517 } 520 }
518 521
519 void ScreenIsLockedReceived(dbus::Signal* signal) { 522 void ScreenIsLockedReceived(dbus::Signal* signal) {
523 screen_is_locked_ = true;
520 FOR_EACH_OBSERVER(Observer, observers_, ScreenIsLocked()); 524 FOR_EACH_OBSERVER(Observer, observers_, ScreenIsLocked());
521 } 525 }
522 526
523 void ScreenIsUnlockedReceived(dbus::Signal* signal) { 527 void ScreenIsUnlockedReceived(dbus::Signal* signal) {
528 screen_is_locked_ = false;
524 FOR_EACH_OBSERVER(Observer, observers_, ScreenIsUnlocked()); 529 FOR_EACH_OBSERVER(Observer, observers_, ScreenIsUnlocked());
525 } 530 }
526 531
527 // Called when the object is connected to the signal. 532 // Called when the object is connected to the signal.
528 void SignalConnected(const std::string& interface_name, 533 void SignalConnected(const std::string& interface_name,
529 const std::string& signal_name, 534 const std::string& signal_name,
530 bool success) { 535 bool success) {
531 LOG_IF(ERROR, !success) << "Failed to connect to " << signal_name; 536 LOG_IF(ERROR, !success) << "Failed to connect to " << signal_name;
532 } 537 }
533 538
(...skipping 27 matching lines...) Expand all
561 566
562 if (!callback.is_null()) 567 if (!callback.is_null())
563 callback.Run(state_keys); 568 callback.Run(state_keys);
564 } 569 }
565 570
566 571
567 dbus::ObjectProxy* session_manager_proxy_; 572 dbus::ObjectProxy* session_manager_proxy_;
568 scoped_ptr<BlockingMethodCaller> blocking_method_caller_; 573 scoped_ptr<BlockingMethodCaller> blocking_method_caller_;
569 ObserverList<Observer> observers_; 574 ObserverList<Observer> observers_;
570 575
576 // Most recent screen-lock state received from session_manager.
577 bool screen_is_locked_;
578
571 // Note: This should remain the last member so it'll be destroyed and 579 // Note: This should remain the last member so it'll be destroyed and
572 // invalidate its weak pointers before any other members are destroyed. 580 // invalidate its weak pointers before any other members are destroyed.
573 base::WeakPtrFactory<SessionManagerClientImpl> weak_ptr_factory_; 581 base::WeakPtrFactory<SessionManagerClientImpl> weak_ptr_factory_;
574 582
575 DISALLOW_COPY_AND_ASSIGN(SessionManagerClientImpl); 583 DISALLOW_COPY_AND_ASSIGN(SessionManagerClientImpl);
576 }; 584 };
577 585
578 // The SessionManagerClient implementation used on Linux desktop, 586 // The SessionManagerClient implementation used on Linux desktop,
579 // which does nothing. 587 // which does nothing.
580 class SessionManagerClientStubImpl : public SessionManagerClient { 588 class SessionManagerClientStubImpl : public SessionManagerClient {
581 public: 589 public:
582 SessionManagerClientStubImpl() : delegate_(NULL) {} 590 SessionManagerClientStubImpl() : delegate_(NULL), screen_is_locked_(false) {}
583 virtual ~SessionManagerClientStubImpl() {} 591 virtual ~SessionManagerClientStubImpl() {}
584 592
585 // SessionManagerClient overrides 593 // SessionManagerClient overrides
586 virtual void Init(dbus::Bus* bus) override {} 594 virtual void Init(dbus::Bus* bus) override {}
587 virtual void SetStubDelegate(StubDelegate* delegate) override { 595 virtual void SetStubDelegate(StubDelegate* delegate) override {
588 delegate_ = delegate; 596 delegate_ = delegate;
589 } 597 }
590 virtual void AddObserver(Observer* observer) override { 598 virtual void AddObserver(Observer* observer) override {
591 observers_.AddObserver(observer); 599 observers_.AddObserver(observer);
592 } 600 }
593 virtual void RemoveObserver(Observer* observer) override { 601 virtual void RemoveObserver(Observer* observer) override {
594 observers_.RemoveObserver(observer); 602 observers_.RemoveObserver(observer);
595 } 603 }
596 virtual bool HasObserver(const Observer* observer) const override { 604 virtual bool HasObserver(const Observer* observer) const override {
597 return observers_.HasObserver(observer); 605 return observers_.HasObserver(observer);
598 } 606 }
607 virtual bool IsScreenLocked() const override { return screen_is_locked_; }
599 virtual void EmitLoginPromptVisible() override {} 608 virtual void EmitLoginPromptVisible() override {}
600 virtual void RestartJob(int pid, const std::string& command_line) override {} 609 virtual void RestartJob(int pid, const std::string& command_line) override {}
601 virtual void StartSession(const std::string& user_email) override {} 610 virtual void StartSession(const std::string& user_email) override {}
602 virtual void StopSession() override {} 611 virtual void StopSession() override {}
603 virtual void NotifySupervisedUserCreationStarted() override {} 612 virtual void NotifySupervisedUserCreationStarted() override {}
604 virtual void NotifySupervisedUserCreationFinished() override {} 613 virtual void NotifySupervisedUserCreationFinished() override {}
605 virtual void StartDeviceWipe() override {} 614 virtual void StartDeviceWipe() override {}
606 virtual void RequestLockScreen() override { 615 virtual void RequestLockScreen() override {
607 if (delegate_) 616 if (delegate_)
608 delegate_->LockScreenForStub(); 617 delegate_->LockScreenForStub();
609 } 618 }
610 virtual void NotifyLockScreenShown() override { 619 virtual void NotifyLockScreenShown() override {
620 screen_is_locked_ = true;
611 FOR_EACH_OBSERVER(Observer, observers_, ScreenIsLocked()); 621 FOR_EACH_OBSERVER(Observer, observers_, ScreenIsLocked());
612 } 622 }
613 virtual void NotifyLockScreenDismissed() override { 623 virtual void NotifyLockScreenDismissed() override {
624 screen_is_locked_ = false;
614 FOR_EACH_OBSERVER(Observer, observers_, ScreenIsUnlocked()); 625 FOR_EACH_OBSERVER(Observer, observers_, ScreenIsUnlocked());
615 } 626 }
616 virtual void RetrieveActiveSessions( 627 virtual void RetrieveActiveSessions(
617 const ActiveSessionsCallback& callback) override {} 628 const ActiveSessionsCallback& callback) override {}
618 virtual void RetrieveDevicePolicy( 629 virtual void RetrieveDevicePolicy(
619 const RetrievePolicyCallback& callback) override { 630 const RetrievePolicyCallback& callback) override {
620 base::FilePath owner_key_path; 631 base::FilePath owner_key_path;
621 if (!PathService::Get(chromeos::FILE_OWNER_KEY, &owner_key_path)) { 632 if (!PathService::Get(chromeos::FILE_OWNER_KEY, &owner_key_path)) {
622 callback.Run(""); 633 callback.Run("");
623 return; 634 return;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 state_keys.push_back(crypto::SHA256HashString(base::IntToString(i))); 736 state_keys.push_back(crypto::SHA256HashString(base::IntToString(i)));
726 737
727 if (!callback.is_null()) 738 if (!callback.is_null())
728 callback.Run(state_keys); 739 callback.Run(state_keys);
729 } 740 }
730 741
731 private: 742 private:
732 StubDelegate* delegate_; // Weak pointer; may be NULL. 743 StubDelegate* delegate_; // Weak pointer; may be NULL.
733 ObserverList<Observer> observers_; 744 ObserverList<Observer> observers_;
734 std::string device_policy_; 745 std::string device_policy_;
746 bool screen_is_locked_;
735 747
736 DISALLOW_COPY_AND_ASSIGN(SessionManagerClientStubImpl); 748 DISALLOW_COPY_AND_ASSIGN(SessionManagerClientStubImpl);
737 }; 749 };
738 750
739 SessionManagerClient::SessionManagerClient() { 751 SessionManagerClient::SessionManagerClient() {
740 } 752 }
741 753
742 SessionManagerClient::~SessionManagerClient() { 754 SessionManagerClient::~SessionManagerClient() {
743 } 755 }
744 756
745 SessionManagerClient* SessionManagerClient::Create( 757 SessionManagerClient* SessionManagerClient::Create(
746 DBusClientImplementationType type) { 758 DBusClientImplementationType type) {
747 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) 759 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION)
748 return new SessionManagerClientImpl(); 760 return new SessionManagerClientImpl();
749 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); 761 DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type);
750 return new SessionManagerClientStubImpl(); 762 return new SessionManagerClientStubImpl();
751 } 763 }
752 764
753 } // namespace chromeos 765 } // namespace chromeos
OLDNEW
« 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