blob: 1bf0acf8cc0a611d253d2bbf76ac8d71215971c2 [file] [log] [blame]
Ben Chan6e726922011-06-28 15:54:32 -07001// 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 Chan5ccd9fe2013-11-13 18:28:27 -08005#include "cros-disks/session_manager_proxy.h"
Ben Chan6e726922011-06-28 15:54:32 -07006
Ben Chan445852f2017-10-02 23:00:16 -07007#include <base/bind.h>
Qijiang Fan713061e2021-03-08 15:45:12 +09008#include <base/check.h>
Ben Chan190d3cf2011-07-07 09:38:48 -07009
Ben Chan6e726922011-06-28 15:54:32 -070010namespace cros_disks {
11
Ben Chan445852f2017-10-02 23:00:16 -070012namespace {
13
14void 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
25SessionManagerProxy::SessionManagerProxy(scoped_refptr<dbus::Bus> bus)
26 : proxy_(bus), weak_ptr_factory_(this) {
27 proxy_.RegisterScreenIsLockedSignalHandler(
Anand K Mistryc0ece3d2020-01-28 15:55:29 +110028 base::BindRepeating(&SessionManagerProxy::OnScreenIsLocked,
29 weak_ptr_factory_.GetWeakPtr()),
30 base::BindOnce(&OnSignalConnected));
Ben Chan445852f2017-10-02 23:00:16 -070031 proxy_.RegisterScreenIsUnlockedSignalHandler(
Anand K Mistryc0ece3d2020-01-28 15:55:29 +110032 base::BindRepeating(&SessionManagerProxy::OnScreenIsUnlocked,
33 weak_ptr_factory_.GetWeakPtr()),
34 base::BindOnce(&OnSignalConnected));
Ben Chan445852f2017-10-02 23:00:16 -070035 proxy_.RegisterSessionStateChangedSignalHandler(
Anand K Mistryc0ece3d2020-01-28 15:55:29 +110036 base::BindRepeating(&SessionManagerProxy::OnSessionStateChanged,
37 weak_ptr_factory_.GetWeakPtr()),
38 base::BindOnce(&OnSignalConnected));
Ben Chan6e726922011-06-28 15:54:32 -070039}
40
Ben Chan89cf29e2011-08-10 13:11:05 -070041void SessionManagerProxy::AddObserver(
42 SessionManagerObserverInterface* observer) {
43 CHECK(observer) << "Invalid observer object";
44 observer_list_.AddObserver(observer);
45}
46
Ben Chan445852f2017-10-02 23:00:16 -070047void SessionManagerProxy::OnScreenIsLocked() {
Eric Carusob744a7e2018-01-16 16:50:58 -080048 for (SessionManagerObserverInterface& observer : observer_list_)
49 observer.OnScreenIsLocked();
Ben Chan5988f292012-09-18 08:32:42 -070050}
51
Ben Chan445852f2017-10-02 23:00:16 -070052void SessionManagerProxy::OnScreenIsUnlocked() {
Eric Carusob744a7e2018-01-16 16:50:58 -080053 for (SessionManagerObserverInterface& observer : observer_list_)
54 observer.OnScreenIsUnlocked();
Ben Chan5988f292012-09-18 08:32:42 -070055}
56
Ben Chan445852f2017-10-02 23:00:16 -070057void SessionManagerProxy::OnSessionStateChanged(const std::string& state) {
Ben Chan6e726922011-06-28 15:54:32 -070058 if (state == "started") {
Eric Carusob744a7e2018-01-16 16:50:58 -080059 for (SessionManagerObserverInterface& observer : observer_list_)
60 observer.OnSessionStarted();
Ben Chan6e726922011-06-28 15:54:32 -070061 } else if (state == "stopped") {
Eric Carusob744a7e2018-01-16 16:50:58 -080062 for (SessionManagerObserverInterface& observer : observer_list_)
63 observer.OnSessionStopped();
Ben Chan6e726922011-06-28 15:54:32 -070064 }
65}
66
67} // namespace cros_disks