| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef REMOTING_HOST_CURTAIN_MODE_CHROMEOS_H_ |
| #define REMOTING_HOST_CURTAIN_MODE_CHROMEOS_H_ |
| |
| #include "remoting/host/curtain_mode.h" |
| |
| #include "ash/curtain/security_curtain_controller.h" |
| #include "base/memory/scoped_refptr.h" |
| #include "base/task/single_thread_task_runner.h" |
| #include "base/threading/sequence_bound.h" |
| |
| namespace ash::curtain { |
| class SecurityCurtainController; |
| } // namespace ash::curtain |
| |
| namespace remoting { |
| |
| // Helper class that handles everything related to curtained sessions on |
| // ChromeOS, which includes: |
| // - Creating a virtual display |
| // - Installing the curtain screen |
| // - Suppressing local input |
| class CurtainModeChromeOs : public CurtainMode { |
| public: |
| explicit CurtainModeChromeOs( |
| scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner); |
| CurtainModeChromeOs(const CurtainModeChromeOs&) = delete; |
| CurtainModeChromeOs& operator=(const CurtainModeChromeOs&) = delete; |
| ~CurtainModeChromeOs() override; |
| |
| static ash::curtain::SecurityCurtainController::InitParams CreateInitParams(); |
| |
| // CurtainMode implementation: |
| bool Activate() override; |
| |
| private: |
| class Core { |
| public: |
| ~Core(); |
| |
| void Activate(); |
| |
| private: |
| ash::curtain::SecurityCurtainController& security_curtain_controller(); |
| }; |
| |
| // Implementation of this curtain mode that ensures everything we do |
| // is executed on the ui thread. |
| base::SequenceBound<Core> core_; |
| }; |
| |
| } // namespace remoting |
| |
| #endif // REMOTING_HOST_CURTAIN_MODE_CHROMEOS_H_ |