blob: 19bd67c40b02b69262f3cd4d3e4dd9876bfd5fa2 [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
5#ifndef CROS_DISKS_SESSION_MANAGER_PROXY_H_
6#define CROS_DISKS_SESSION_MANAGER_PROXY_H_
7
Ben Chan445852f2017-10-02 23:00:16 -07008#include <string>
Ben Chan6e726922011-06-28 15:54:32 -07009
Ben Chan445852f2017-10-02 23:00:16 -070010#include <base/memory/ref_counted.h>
11#include <base/memory/weak_ptr.h>
Ben Chan89cf29e2011-08-10 13:11:05 -070012#include <base/observer_list.h>
Ben Chan445852f2017-10-02 23:00:16 -070013#include <dbus/bus.h>
14#include <session_manager/dbus-proxies.h>
15
16#include "cros-disks/session_manager_observer_interface.h"
Ben Chan6e726922011-06-28 15:54:32 -070017
18namespace cros_disks {
19
Ben Chan6e726922011-06-28 15:54:32 -070020// A proxy class that listens to DBus signals from the session manager and
Ben Chan89cf29e2011-08-10 13:11:05 -070021// notifies a list of registered observers for events.
Ben Chan445852f2017-10-02 23:00:16 -070022class SessionManagerProxy {
Ben Chan6e726922011-06-28 15:54:32 -070023 public:
Ben Chan445852f2017-10-02 23:00:16 -070024 explicit SessionManagerProxy(scoped_refptr<dbus::Bus> bus);
Qijiang Fan6bc59e12020-11-11 02:51:06 +090025 SessionManagerProxy(const SessionManagerProxy&) = delete;
26 SessionManagerProxy& operator=(const SessionManagerProxy&) = delete;
Ben Chan55123552014-08-24 16:22:16 -070027 ~SessionManagerProxy() = default;
Ben Chan6e726922011-06-28 15:54:32 -070028
Ben Chan89cf29e2011-08-10 13:11:05 -070029 void AddObserver(SessionManagerObserverInterface* observer);
30
Ben Chan6e726922011-06-28 15:54:32 -070031 private:
Ben Chan5988f292012-09-18 08:32:42 -070032 // Handles the ScreenIsLocked DBus signal.
Ben Chan445852f2017-10-02 23:00:16 -070033 void OnScreenIsLocked();
Ben Chan5988f292012-09-18 08:32:42 -070034
35 // Handles the ScreenIsUnlocked DBus signal.
Ben Chan445852f2017-10-02 23:00:16 -070036 void OnScreenIsUnlocked();
Ben Chan5988f292012-09-18 08:32:42 -070037
Ben Chan6e726922011-06-28 15:54:32 -070038 // Handles the SessionStateChanged DBus signal.
Ben Chan445852f2017-10-02 23:00:16 -070039 void OnSessionStateChanged(const std::string& state);
Ben Chan6e726922011-06-28 15:54:32 -070040
Ben Chan445852f2017-10-02 23:00:16 -070041 org::chromium::SessionManagerInterfaceProxy proxy_;
Alex Vakulenko5e5accd2015-06-15 12:53:22 -070042 base::ObserverList<SessionManagerObserverInterface> observer_list_;
Ben Chan445852f2017-10-02 23:00:16 -070043 base::WeakPtrFactory<SessionManagerProxy> weak_ptr_factory_;
Ben Chan6e726922011-06-28 15:54:32 -070044};
45
46} // namespace cros_disks
47
48#endif // CROS_DISKS_SESSION_MANAGER_PROXY_H_