blob: bff4e171cf8c54ac599ae31ea835ffeaf3c9c454 [file] [log] [blame] [edit]
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#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 {
// A dummy implementation of Screen that contains a single
// Display only. The contained Display can be accessed and modified via
// TestScreen::display().
//
// NOTE: Adding and removing DisplayObserver's are no-ops and observers
// will NOT be notified ever.
class TestScreen : public ScreenBase {
public:
static constexpr gfx::Rect kDefaultScreenBounds = gfx::Rect(0, 0, 800, 600);
static TestScreen* Get();
// TODO(weili): Split this into a protected no-argument constructor for
// subclass uses and the public one with gfx::Size argument.
explicit TestScreen(bool create_display = true, bool register_screen = false);
TestScreen(const TestScreen&) = delete;
TestScreen& operator=(const TestScreen&) = delete;
~TestScreen() override;
// Sets the fake cursor location for the TestScreen.
void set_cursor_screen_point(const gfx::Point& point);
// ScreenBase:
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 // BUILDFLAG(IS_CHROMEOS)
private:
gfx::Point cursor_screen_point_;
bool register_screen_ = false;
#if BUILDFLAG(IS_CHROMEOS)
TabletState state_ = TabletState::kInClamshellMode;
#endif // BUILDFLAG(IS_CHROMEOS)
};
} // namespace display::test
#endif // UI_DISPLAY_TEST_TEST_SCREEN_H_