#ifndef UI_DISPLAY_TEST_TEST_SCREEN_H_
#define UI_DISPLAY_TEST_TEST_SCREEN_H_
#include "build/build_config.h"
#include "ui/display/display.h"
#include "ui/display/screen_base.h"
#include "ui/display/tablet_state.h"
namespace display::test {
class TestScreen : public ScreenBase {
public:
static constexpr gfx::Rect kDefaultScreenBounds = gfx::Rect(0, 0, 800, 600);
static TestScreen* Get();
explicit TestScreen(bool create_display = true, bool register_screen = false);
TestScreen(const TestScreen&) = delete;
TestScreen& operator=(const TestScreen&) = delete;
~TestScreen() override;
void set_cursor_screen_point(const gfx::Point& point);
gfx::Point GetCursorScreenPoint() override;
bool IsWindowUnderCursor(gfx::NativeWindow window) override;
gfx::NativeWindow GetWindowAtScreenPoint(const gfx::Point& point) override;
Display GetDisplayNearestWindow(gfx::NativeWindow window) const override;
void SetCursorScreenPointForTesting(const gfx::Point& point) override;
#if BUILDFLAG(IS_CHROMEOS)
TabletState GetTabletState() const override;
void OverrideTabletStateForTesting(TabletState state);
#endif
private:
gfx::Point cursor_screen_point_;
bool register_screen_ = false;
#if BUILDFLAG(IS_CHROMEOS)
TabletState state_ = TabletState::kInClamshellMode;
#endif
};
}
#endif