#ifndef REMOTING_HOST_CHROMEOS_ASH_PROXY_H_
#define REMOTING_HOST_CHROMEOS_ASH_PROXY_H_
#include <cstdint>
#include <vector>
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "ui/display/display.h"
namespace ash::curtain {
class SecurityCurtainController;
}
namespace aura {
class ScopedWindowCaptureRequest;
class Window;
}
namespace viz {
class FrameSinkId;
namespace mojom {
class FrameSinkVideoCapturer;
}
}
namespace remoting {
using DisplayId = int64_t;
class AshProxy {
public:
static AshProxy& Get();
static void SetInstanceForTesting(AshProxy* instance);
static int ScaleFactorToDpi(float scale_factor);
virtual ~AshProxy();
virtual DisplayId GetPrimaryDisplayId() const = 0;
virtual const std::vector<display::Display>& GetActiveDisplays() const = 0;
virtual const display::Display* GetDisplayForId(
DisplayId display_id) const = 0;
virtual aura::Window* GetSelectFileContainer() = 0;
virtual ash::curtain::SecurityCurtainController&
GetSecurityCurtainController() = 0;
virtual void CreateVideoCapturer(
mojo::PendingReceiver<viz::mojom::FrameSinkVideoCapturer>
video_capturer) = 0;
virtual aura::ScopedWindowCaptureRequest MakeDisplayCapturable(
DisplayId source_display_id) = 0;
virtual viz::FrameSinkId GetFrameSinkId(DisplayId source_display_id) = 0;
virtual void RequestSignOut() = 0;
virtual bool IsScreenReaderEnabled() const = 0;
};
}
#endif