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..a08082c19ba3d7df64750c0f4db801e8ff746bd4 |
--- /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 --screen-config=X |
+// command line flag with the format: |
+// HxW[,] |
+// H: display height in pixels |
+// W: display width in pixels |
+// |
+// Two 800x800 displays: |
+// --screen-config=800x800,800x800 |
+// One 1820x1080 display and one 400x400 display: |
+// --screen-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_ |