1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
// Copyright 2021 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_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 ash::curtain
namespace aura {
class ScopedWindowCaptureRequest;
class Window;
} // namespace aura
namespace viz {
class FrameSinkId;
namespace mojom {
class FrameSinkVideoCapturer;
} // namespace mojom
} // namespace viz
namespace remoting {
using DisplayId = int64_t;
// Utility proxy class that abstracts away all ash related actions on ChromeOs,
// to prevent our code from directly calling `ash::Shell` so we can mock things
// during unittests.
class AshProxy {
public:
static AshProxy& Get();
// The caller is responsible to ensure this given instance lives long enough.
// To unset call this method again with nullptr.
static void SetInstanceForTesting(AshProxy* instance);
// Convert the scale factor to DPI.
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;
// Ensure the given display can be captured through the frame sink video
// capturer. The caller must keep the returned object alive for as long as
// they are capturing.
virtual aura::ScopedWindowCaptureRequest MakeDisplayCapturable(
DisplayId source_display_id) = 0;
virtual viz::FrameSinkId GetFrameSinkId(DisplayId source_display_id) = 0;
// Requests signing out all users, ending the current session.
virtual void RequestSignOut() = 0;
// Returns whether the accessibility screen reader is enabled.
virtual bool IsScreenReaderEnabled() const = 0;
};
} // namespace remoting
#endif // REMOTING_HOST_CHROMEOS_ASH_PROXY_H_
|