Chromium Code Reviews| Index: ui/display/fake_display_delegate.h |
| diff --git a/ui/display/fake_display_delegate.h b/ui/display/fake_display_delegate.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..170c51d3de47ec4379e63221cb891d61677b2492 |
| --- /dev/null |
| +++ b/ui/display/fake_display_delegate.h |
| @@ -0,0 +1,108 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef UI_DISPLAY_FAKE_DISPLAY_DELEGATE_H_ |
| +#define UI_DISPLAY_FAKE_DISPLAY_DELEGATE_H_ |
| + |
| +#include <memory> |
| +#include <vector> |
| + |
| +#include "base/macros.h" |
| +#include "base/observer_list.h" |
| +#include "ui/display/display_export.h" |
| +#include "ui/display/fake_display_snapshot.h" |
| +#include "ui/display/types/fake_display_controller.h" |
| +#include "ui/display/types/native_display_delegate.h" |
| + |
| +namespace display { |
| + |
| +// A NativeDisplayDelegate implementation that manages fake displays. Fake |
| +// displays mimic physical displays but do not actually exist. This is because |
| +// Chrome OS does not take over the entire display when running off device and |
| +// instead runs inside windows provided by the parent OS. Fake displays allow us |
| +// to simulate different connected display states off device and to test display |
| +// configuration and display management code. |
| +// |
| +// The size and number of displays can controlled via --display-config=X |
| +// command line flag with the format: |
| +// HxW[,] |
| +// H: display height in pixels |
| +// W: display width in pixels |
| +// |
| +// Two 800x800 displays: |
| +// --display-config=800x800,800x800 |
|
rjkroege
2016/09/15 00:52:46
This is a screen config yes? I'd like us to follow
kylechar
2016/09/15 17:31:55
sgtm, changed to --screen-config.
|
| +// One 1820x1080 display and one 400x400 display: |
| +// --display-config=1920x1080,400x400 |
| +// |
| +// FakeDisplayDelegate also implements FakeDisplayController which provides a |
| +// way to change the display state at runtime. |
| +class DISPLAY_EXPORT FakeDisplayDelegate : public ui::NativeDisplayDelegate, |
| + public FakeDisplayController { |
| + public: |
| + FakeDisplayDelegate(); |
| + ~FakeDisplayDelegate() override; |
| + |
| + // FakeDisplayController: |
| + int64_t AddDisplay(const gfx::Size& display_size) override; |
| + bool RemoveDisplay(int64_t display_id) override; |
| + |
| + // NativeDisplayDelegate overrides: |
| + void Initialize() override; |
| + void GrabServer() override; |
| + void UngrabServer() override; |
| + void TakeDisplayControl(const ui::DisplayControlCallback& callback) override; |
| + void RelinquishDisplayControl( |
| + const ui::DisplayControlCallback& callback) override; |
| + void SyncWithServer() override; |
| + void SetBackgroundColor(uint32_t color_argb) override; |
| + void ForceDPMSOn() override; |
| + void GetDisplays(const ui::GetDisplaysCallback& callback) override; |
| + void AddMode(const ui::DisplaySnapshot& output, |
| + const ui::DisplayMode* mode) override; |
| + void Configure(const ui::DisplaySnapshot& output, |
| + const ui::DisplayMode* mode, |
| + const gfx::Point& origin, |
| + const ui::ConfigureCallback& callback) override; |
| + void CreateFrameBuffer(const gfx::Size& size) override; |
| + void GetHDCPState(const ui::DisplaySnapshot& output, |
| + const ui::GetHDCPStateCallback& callback) override; |
| + void SetHDCPState(const ui::DisplaySnapshot& output, |
| + ui::HDCPState state, |
| + const ui::SetHDCPStateCallback& callback) override; |
| + std::vector<ui::ColorCalibrationProfile> GetAvailableColorCalibrationProfiles( |
| + const ui::DisplaySnapshot& output) override; |
| + bool SetColorCalibrationProfile( |
| + const ui::DisplaySnapshot& output, |
| + ui::ColorCalibrationProfile new_profile) override; |
| + bool SetColorCorrection(const ui::DisplaySnapshot& output, |
| + const std::vector<ui::GammaRampRGBEntry>& degamma_lut, |
| + const std::vector<ui::GammaRampRGBEntry>& gamma_lut, |
| + const std::vector<float>& correction_matrix) override; |
| + void AddObserver(ui::NativeDisplayObserver* observer) override; |
| + void RemoveObserver(ui::NativeDisplayObserver* observer) override; |
| + FakeDisplayController* GetFakeDisplayController() override; |
| + |
| + protected: |
| + // Initializes display snapshots from command line flags if provided. |
| + void InitFromCommandLine(); |
| + |
| + // Updates observers when display configuration has changed. Will not update |
| + // until after |Initialize()| has been called. |
| + void OnConfigurationChanged(); |
| + |
| + private: |
| + base::ObserverList<ui::NativeDisplayObserver> observers_; |
| + std::vector<std::unique_ptr<FakeDisplaySnapshot>> displays_; |
| + |
| + // If |Initialize()| has been called. |
| + bool initialized_ = false; |
| + |
| + // The next available display id. |
| + uint8_t next_display_id_ = 0; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(FakeDisplayDelegate); |
| +}; |
| + |
| +} // namespace display |
| +#endif // UI_DISPLAY_FAKE_DISPLAY_DELEGATE_H_ |