Ben Chan | 6e72692 | 2011-06-28 15:54:32 -0700 | [diff] [blame] | 1 | // Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
Ben Chan | 5ccd9fe | 2013-11-13 18:28:27 -0800 | [diff] [blame] | 5 | #include "cros-disks/session_manager_proxy.h" |
Ben Chan | 6e72692 | 2011-06-28 15:54:32 -0700 | [diff] [blame] | 6 | |
Ben Chan | 445852f | 2017-10-02 23:00:16 -0700 | [diff] [blame] | 7 | #include <base/bind.h> |
Qijiang Fan | 713061e | 2021-03-08 15:45:12 +0900 | [diff] [blame] | 8 | #include <base/check.h> |
Ben Chan | 190d3cf | 2011-07-07 09:38:48 -0700 | [diff] [blame] | 9 | |
Ben Chan | 6e72692 | 2011-06-28 15:54:32 -0700 | [diff] [blame] | 10 | namespace cros_disks { |
| 11 | |
Ben Chan | 445852f | 2017-10-02 23:00:16 -0700 | [diff] [blame] | 12 | namespace { |
| 13 | |
| 14 | void OnSignalConnected(const std::string& interface, |
| 15 | const std::string& signal, |
| 16 | bool success) { |
| 17 | if (!success) { |
| 18 | LOG(ERROR) << "Could not connect to signal " << signal << " on interface " |
| 19 | << interface; |
| 20 | } |
| 21 | } |
| 22 | |
| 23 | } // namespace |
| 24 | |
| 25 | SessionManagerProxy::SessionManagerProxy(scoped_refptr<dbus::Bus> bus) |
| 26 | : proxy_(bus), weak_ptr_factory_(this) { |
| 27 | proxy_.RegisterScreenIsLockedSignalHandler( |
Anand K Mistry | c0ece3d | 2020-01-28 15:55:29 +1100 | [diff] [blame] | 28 | base::BindRepeating(&SessionManagerProxy::OnScreenIsLocked, |
| 29 | weak_ptr_factory_.GetWeakPtr()), |
| 30 | base::BindOnce(&OnSignalConnected)); |
Ben Chan | 445852f | 2017-10-02 23:00:16 -0700 | [diff] [blame] | 31 | proxy_.RegisterScreenIsUnlockedSignalHandler( |
Anand K Mistry | c0ece3d | 2020-01-28 15:55:29 +1100 | [diff] [blame] | 32 | base::BindRepeating(&SessionManagerProxy::OnScreenIsUnlocked, |
| 33 | weak_ptr_factory_.GetWeakPtr()), |
| 34 | base::BindOnce(&OnSignalConnected)); |
Ben Chan | 445852f | 2017-10-02 23:00:16 -0700 | [diff] [blame] | 35 | proxy_.RegisterSessionStateChangedSignalHandler( |
Anand K Mistry | c0ece3d | 2020-01-28 15:55:29 +1100 | [diff] [blame] | 36 | base::BindRepeating(&SessionManagerProxy::OnSessionStateChanged, |
| 37 | weak_ptr_factory_.GetWeakPtr()), |
| 38 | base::BindOnce(&OnSignalConnected)); |
Ben Chan | 6e72692 | 2011-06-28 15:54:32 -0700 | [diff] [blame] | 39 | } |
| 40 | |
Ben Chan | 89cf29e | 2011-08-10 13:11:05 -0700 | [diff] [blame] | 41 | void SessionManagerProxy::AddObserver( |
| 42 | SessionManagerObserverInterface* observer) { |
| 43 | CHECK(observer) << "Invalid observer object"; |
| 44 | observer_list_.AddObserver(observer); |
| 45 | } |
| 46 | |
Ben Chan | 445852f | 2017-10-02 23:00:16 -0700 | [diff] [blame] | 47 | void SessionManagerProxy::OnScreenIsLocked() { |
Eric Caruso | b744a7e | 2018-01-16 16:50:58 -0800 | [diff] [blame] | 48 | for (SessionManagerObserverInterface& observer : observer_list_) |
| 49 | observer.OnScreenIsLocked(); |
Ben Chan | 5988f29 | 2012-09-18 08:32:42 -0700 | [diff] [blame] | 50 | } |
| 51 | |
Ben Chan | 445852f | 2017-10-02 23:00:16 -0700 | [diff] [blame] | 52 | void SessionManagerProxy::OnScreenIsUnlocked() { |
Eric Caruso | b744a7e | 2018-01-16 16:50:58 -0800 | [diff] [blame] | 53 | for (SessionManagerObserverInterface& observer : observer_list_) |
| 54 | observer.OnScreenIsUnlocked(); |
Ben Chan | 5988f29 | 2012-09-18 08:32:42 -0700 | [diff] [blame] | 55 | } |
| 56 | |
Ben Chan | 445852f | 2017-10-02 23:00:16 -0700 | [diff] [blame] | 57 | void SessionManagerProxy::OnSessionStateChanged(const std::string& state) { |
Ben Chan | 6e72692 | 2011-06-28 15:54:32 -0700 | [diff] [blame] | 58 | if (state == "started") { |
Eric Caruso | b744a7e | 2018-01-16 16:50:58 -0800 | [diff] [blame] | 59 | for (SessionManagerObserverInterface& observer : observer_list_) |
| 60 | observer.OnSessionStarted(); |
Ben Chan | 6e72692 | 2011-06-28 15:54:32 -0700 | [diff] [blame] | 61 | } else if (state == "stopped") { |
Eric Caruso | b744a7e | 2018-01-16 16:50:58 -0800 | [diff] [blame] | 62 | for (SessionManagerObserverInterface& observer : observer_list_) |
| 63 | observer.OnSessionStopped(); |
Ben Chan | 6e72692 | 2011-06-28 15:54:32 -0700 | [diff] [blame] | 64 | } |
| 65 | } |
| 66 | |
| 67 | } // namespace cros_disks |