// 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_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;
// Returns the current display state.
virtual MultipleDisplayState GetDisplayState() const = 0;
// Returns the current power state.
virtual chromeos::DisplayPowerState GetPowerState() const = 0;
// Based on the given |displays|, display state and power state, it will
// create display configuration requests which will then be used to
// configure the hardware. The requested configuration is stored in
// |requests|.
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;
};
} // namespace display
#endif // UI_DISPLAY_MANAGER_DISPLAY_LAYOUT_MANAGER_H_