blob: 8b38e452a21c85f14bbaeb5c23f79452dd862eb3 [file] [log] [blame]
// Copyright 2024 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_VIRTUAL_DISPLAY_UTIL_H_
#define UI_DISPLAY_TEST_VIRTUAL_DISPLAY_UTIL_H_
#include <memory>
#include "ui/display/display_observer.h"
namespace display {
class Screen;
namespace test {
struct DisplayParams;
// This interface creates system-level virtual displays to support the automated
// integration testing of display information and window management APIs in
// multi-screen device environments. It updates displays that display::Screen
// impl sees, but is generally not compatible with `TestScreen` subclasses.
class VirtualDisplayUtil {
public:
virtual ~VirtualDisplayUtil() = default;
// Creates an instance for the current platform if available. Returns nullptr
// on unsupported platforms (i.e. not implemented, or host is missing
// requirements).
static std::unique_ptr<VirtualDisplayUtil> TryCreate(Screen* screen);
// `id` is used to uniquely identify the virtual display. This function
// returns the generated display::Display id, which can be used with the
// Screen instance or passed to `RemoveDisplay`.
virtual int64_t AddDisplay(uint8_t id,
const DisplayParams& display_params) = 0;
// Remove a virtual display corresponding to the specified display ID.
virtual void RemoveDisplay(int64_t display_id) = 0;
// Remove all added virtual displays.
virtual void ResetDisplays() = 0;
// Supported Display configurations.
static const DisplayParams k1920x1080;
static const DisplayParams k1024x768;
};
} // namespace test
} // namespace display
#endif // UI_DISPLAY_TEST_VIRTUAL_DISPLAY_UTIL_H_