#ifndef UI_DISPLAY_MANAGER_DISPLAY_LAYOUT_MANAGER_H_
#define UI_DISPLAY_MANAGER_DISPLAY_LAYOUT_MANAGER_H_
#include <vector>
#include "base/memory/raw_ptr.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
#include "ui/display/manager/display_configurator.h"
#include "ui/display/types/display_constants.h"
namespace display {
struct DisplayConfigureRequest;
class DisplaySnapshot;
class DisplayLayoutManager {
public:
virtual ~DisplayLayoutManager() {}
virtual DisplayConfigurator::SoftwareMirroringController*
GetSoftwareMirroringController() const = 0;
virtual DisplayConfigurator::StateController* GetStateController() const = 0;
virtual MultipleDisplayState GetDisplayState() const = 0;
virtual chromeos::DisplayPowerState GetPowerState() const = 0;
virtual bool GetDisplayLayout(
const std::vector<raw_ptr<DisplaySnapshot, VectorExperimental>>& displays,
MultipleDisplayState new_display_state,
chromeos::DisplayPowerState new_power_state,
const base::flat_set<int64_t>& new_vrr_enabled_state,
std::vector<DisplayConfigureRequest>* requests) const = 0;
virtual std::vector<raw_ptr<DisplaySnapshot, VectorExperimental>>
GetDisplayStates() const = 0;
virtual bool IsMirroring() const = 0;
};
}
#endif