blob: 8e4b08ebf565095c014a1fbced6ffc524e51db1d [file] [log] [blame]
zijiehe726a6622016-07-15 21:44:271// Copyright 2016 The Chromium 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
Lei Zhang8232b342021-04-21 20:15:365#ifndef REMOTING_HOST_HOST_POWER_SAVE_BLOCKER_H_
6#define REMOTING_HOST_HOST_POWER_SAVE_BLOCKER_H_
zijiehe726a6622016-07-15 21:44:277
8#include <memory>
9#include <string>
10
11#include "base/memory/ref_counted.h"
12#include "base/memory/weak_ptr.h"
zijiehe726a6622016-07-15 21:44:2713#include "remoting/host/host_status_observer.h"
Ke Head4bdd42017-07-13 01:48:1914#include "services/device/wake_lock/power_save_blocker/power_save_blocker.h"
zijiehe726a6622016-07-15 21:44:2715
16namespace base {
17
18class SingleThreadTaskRunner;
19
20} // namespace base
21
22namespace remoting {
23
zijiehe726a6622016-07-15 21:44:2724class HostStatusMonitor;
25
26// A HostStatusObserver to block screen saver from taking effect during the
27// lifetime of a remoting connection.
28class HostPowerSaveBlocker : public HostStatusObserver {
29 public:
30 HostPowerSaveBlocker(
Sergey Ulanovcc04df92017-07-07 18:33:4131 scoped_refptr<HostStatusMonitor> monitor,
zijiehe726a6622016-07-15 21:44:2732 const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner,
33 const scoped_refptr<base::SingleThreadTaskRunner>& file_task_runner);
34
35 ~HostPowerSaveBlocker() override;
36
37 void OnClientConnected(const std::string& jid) override;
38 void OnClientDisconnected(const std::string& jid) override;
39
40 private:
41 friend class HostPowerSaveBlockerTest;
42
Sergey Ulanovcc04df92017-07-07 18:33:4143 scoped_refptr<HostStatusMonitor> monitor_;
44
zijiehe726a6622016-07-15 21:44:2745 scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;
46 scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_;
Daniel Eratc2e8ef0362017-11-04 01:06:1347
48 // The remoting host doesn't have access to the service manager, so it
49 // instantiates device::PowerSaveBlocker directly: https://crbug.com/689423
zijiehe726a6622016-07-15 21:44:2750 std::unique_ptr<device::PowerSaveBlocker> blocker_;
51};
52
53} // namespace remoting
54
Lei Zhang8232b342021-04-21 20:15:3655#endif // REMOTING_HOST_HOST_POWER_SAVE_BLOCKER_H_