#ifndef REMOTING_HOST_BASE_DESKTOP_ENVIRONMENT_OPTIONS_H_
#define REMOTING_HOST_BASE_DESKTOP_ENVIRONMENT_OPTIONS_H_
#include <optional>
#include "base/time/time.h"
#include "remoting/base/session_options.h"
#include "remoting/base/session_policies.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_capture_options.h"
namespace remoting {
enum class AudioPlaybackMode {
kUnknown,
kLocalOnly,
kRemoteAndLocal,
kRemoteOnly,
kMaxValue = kRemoteOnly,
};
class DesktopEnvironmentOptions final {
public:
static DesktopEnvironmentOptions CreateDefault();
DesktopEnvironmentOptions();
DesktopEnvironmentOptions(DesktopEnvironmentOptions&& other);
DesktopEnvironmentOptions(const DesktopEnvironmentOptions& other);
~DesktopEnvironmentOptions();
DesktopEnvironmentOptions& operator=(DesktopEnvironmentOptions&& other);
DesktopEnvironmentOptions& operator=(const DesktopEnvironmentOptions& other);
bool enable_curtaining() const;
void set_enable_curtaining(bool enabled);
bool enable_user_interface() const;
void set_enable_user_interface(bool enabled);
bool enable_notifications() const;
void set_enable_notifications(bool enabled);
bool terminate_upon_input() const;
void set_terminate_upon_input(bool enabled);
bool enable_remote_webauthn() const;
void set_enable_remote_webauthn(bool enabled);
const webrtc::DesktopCaptureOptions* desktop_capture_options() const;
webrtc::DesktopCaptureOptions* desktop_capture_options();
bool capture_video_on_dedicated_thread() const;
void set_capture_video_on_dedicated_thread(bool use_dedicated_thread);
base::TimeDelta maximum_session_duration() const;
void set_maximum_session_duration(base::TimeDelta duration);
AudioPlaybackMode audio_playback_mode() const;
void set_audio_playback_mode(AudioPlaybackMode);
void ApplySessionOptions(const SessionOptions& options);
private:
void Initialize();
bool enable_curtaining_ = false;
bool enable_user_interface_ = true;
bool enable_notifications_ = true;
bool terminate_upon_input_ = false;
bool enable_remote_webauthn_ = false;
bool capture_video_on_dedicated_thread_ = false;
base::TimeDelta maximum_session_duration_;
AudioPlaybackMode audio_playback_mode_ = AudioPlaybackMode::kRemoteAndLocal;
webrtc::DesktopCaptureOptions desktop_capture_options_;
};
}
#endif