OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
6 #include "ui/ozone/platform/dri/crtc_controller.h" | 6 #include "ui/ozone/platform/dri/crtc_controller.h" |
7 #include "ui/ozone/platform/dri/dri_buffer.h" | 7 #include "ui/ozone/platform/dri/dri_buffer.h" |
8 #include "ui/ozone/platform/dri/hardware_display_controller.h" | 8 #include "ui/ozone/platform/dri/hardware_display_controller.h" |
9 #include "ui/ozone/platform/dri/screen_manager.h" | 9 #include "ui/ozone/platform/dri/screen_manager.h" |
10 #include "ui/ozone/platform/dri/test/mock_dri_wrapper.h" | 10 #include "ui/ozone/platform/dri/test/mock_drm_device.h" |
11 | 11 |
12 namespace { | 12 namespace { |
13 | 13 |
14 // Create a basic mode for a 6x4 screen. | 14 // Create a basic mode for a 6x4 screen. |
15 const drmModeModeInfo kDefaultMode = | 15 const drmModeModeInfo kDefaultMode = |
16 {0, 6, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, {'\0'}}; | 16 {0, 6, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, {'\0'}}; |
17 | 17 |
18 const uint32_t kPrimaryCrtc = 1; | 18 const uint32_t kPrimaryCrtc = 1; |
19 const uint32_t kPrimaryConnector = 2; | 19 const uint32_t kPrimaryConnector = 2; |
20 const uint32_t kSecondaryCrtc = 3; | 20 const uint32_t kSecondaryCrtc = 3; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 return gfx::Rect(0, 0, kDefaultMode.hdisplay, kDefaultMode.vdisplay); | 57 return gfx::Rect(0, 0, kDefaultMode.hdisplay, kDefaultMode.vdisplay); |
58 } | 58 } |
59 | 59 |
60 // Secondary is in extended mode, right-of primary. | 60 // Secondary is in extended mode, right-of primary. |
61 gfx::Rect GetSecondaryBounds() const { | 61 gfx::Rect GetSecondaryBounds() const { |
62 return gfx::Rect( | 62 return gfx::Rect( |
63 kDefaultMode.hdisplay, 0, kDefaultMode.hdisplay, kDefaultMode.vdisplay); | 63 kDefaultMode.hdisplay, 0, kDefaultMode.hdisplay, kDefaultMode.vdisplay); |
64 } | 64 } |
65 | 65 |
66 void SetUp() override { | 66 void SetUp() override { |
67 dri_ = new ui::MockDriWrapper(); | 67 drm_ = new ui::MockDrmDevice(); |
68 buffer_generator_.reset(new ui::DriBufferGenerator()); | 68 buffer_generator_.reset(new ui::DriBufferGenerator()); |
69 screen_manager_.reset(new ui::ScreenManager(buffer_generator_.get())); | 69 screen_manager_.reset(new ui::ScreenManager(buffer_generator_.get())); |
70 screen_manager_->AddObserver(&observer_); | 70 screen_manager_->AddObserver(&observer_); |
71 } | 71 } |
72 void TearDown() override { | 72 void TearDown() override { |
73 screen_manager_->RemoveObserver(&observer_); | 73 screen_manager_->RemoveObserver(&observer_); |
74 screen_manager_.reset(); | 74 screen_manager_.reset(); |
75 dri_ = nullptr; | 75 drm_ = nullptr; |
76 } | 76 } |
77 | 77 |
78 protected: | 78 protected: |
79 scoped_refptr<ui::MockDriWrapper> dri_; | 79 scoped_refptr<ui::MockDrmDevice> drm_; |
80 scoped_ptr<ui::DriBufferGenerator> buffer_generator_; | 80 scoped_ptr<ui::DriBufferGenerator> buffer_generator_; |
81 scoped_ptr<ui::ScreenManager> screen_manager_; | 81 scoped_ptr<ui::ScreenManager> screen_manager_; |
82 | 82 |
83 TestDisplayChangeObserver observer_; | 83 TestDisplayChangeObserver observer_; |
84 | 84 |
85 private: | 85 private: |
86 DISALLOW_COPY_AND_ASSIGN(ScreenManagerTest); | 86 DISALLOW_COPY_AND_ASSIGN(ScreenManagerTest); |
87 }; | 87 }; |
88 | 88 |
89 TEST_F(ScreenManagerTest, CheckWithNoControllers) { | 89 TEST_F(ScreenManagerTest, CheckWithNoControllers) { |
90 EXPECT_FALSE(screen_manager_->GetDisplayController(GetPrimaryBounds())); | 90 EXPECT_FALSE(screen_manager_->GetDisplayController(GetPrimaryBounds())); |
91 } | 91 } |
92 | 92 |
93 TEST_F(ScreenManagerTest, CheckWithValidController) { | 93 TEST_F(ScreenManagerTest, CheckWithValidController) { |
94 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 94 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
95 screen_manager_->ConfigureDisplayController( | 95 screen_manager_->ConfigureDisplayController( |
96 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 96 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
97 kDefaultMode); | 97 kDefaultMode); |
98 ui::HardwareDisplayController* controller = | 98 ui::HardwareDisplayController* controller = |
99 screen_manager_->GetDisplayController(GetPrimaryBounds()); | 99 screen_manager_->GetDisplayController(GetPrimaryBounds()); |
100 | 100 |
101 EXPECT_TRUE(controller); | 101 EXPECT_TRUE(controller); |
102 EXPECT_TRUE(controller->HasCrtc(dri_, kPrimaryCrtc)); | 102 EXPECT_TRUE(controller->HasCrtc(drm_, kPrimaryCrtc)); |
103 } | 103 } |
104 | 104 |
105 TEST_F(ScreenManagerTest, CheckWithInvalidBounds) { | 105 TEST_F(ScreenManagerTest, CheckWithInvalidBounds) { |
106 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 106 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
107 screen_manager_->ConfigureDisplayController( | 107 screen_manager_->ConfigureDisplayController( |
108 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 108 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
109 kDefaultMode); | 109 kDefaultMode); |
110 | 110 |
111 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); | 111 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); |
112 EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds())); | 112 EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds())); |
113 } | 113 } |
114 | 114 |
115 TEST_F(ScreenManagerTest, CheckForSecondValidController) { | 115 TEST_F(ScreenManagerTest, CheckForSecondValidController) { |
116 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 116 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
117 screen_manager_->ConfigureDisplayController( | 117 screen_manager_->ConfigureDisplayController( |
118 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 118 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
119 kDefaultMode); | 119 kDefaultMode); |
120 screen_manager_->AddDisplayController(dri_, kSecondaryCrtc, | 120 screen_manager_->AddDisplayController(drm_, kSecondaryCrtc, |
121 kSecondaryConnector); | 121 kSecondaryConnector); |
122 screen_manager_->ConfigureDisplayController( | 122 screen_manager_->ConfigureDisplayController( |
123 dri_, kSecondaryCrtc, kSecondaryConnector, GetSecondaryBounds().origin(), | 123 drm_, kSecondaryCrtc, kSecondaryConnector, GetSecondaryBounds().origin(), |
124 kDefaultMode); | 124 kDefaultMode); |
125 | 125 |
126 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); | 126 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); |
127 EXPECT_TRUE(screen_manager_->GetDisplayController(GetSecondaryBounds())); | 127 EXPECT_TRUE(screen_manager_->GetDisplayController(GetSecondaryBounds())); |
128 } | 128 } |
129 | 129 |
130 TEST_F(ScreenManagerTest, CheckControllerAfterItIsRemoved) { | 130 TEST_F(ScreenManagerTest, CheckControllerAfterItIsRemoved) { |
131 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 131 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
132 screen_manager_->ConfigureDisplayController( | 132 screen_manager_->ConfigureDisplayController( |
133 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 133 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
134 kDefaultMode); | 134 kDefaultMode); |
135 EXPECT_EQ(1, observer_.num_displays_changed()); | 135 EXPECT_EQ(1, observer_.num_displays_changed()); |
136 EXPECT_EQ(0, observer_.num_displays_removed()); | 136 EXPECT_EQ(0, observer_.num_displays_removed()); |
137 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); | 137 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); |
138 | 138 |
139 screen_manager_->RemoveDisplayController(dri_, kPrimaryCrtc); | 139 screen_manager_->RemoveDisplayController(drm_, kPrimaryCrtc); |
140 EXPECT_EQ(1, observer_.num_displays_changed()); | 140 EXPECT_EQ(1, observer_.num_displays_changed()); |
141 EXPECT_EQ(1, observer_.num_displays_removed()); | 141 EXPECT_EQ(1, observer_.num_displays_removed()); |
142 EXPECT_FALSE(screen_manager_->GetDisplayController(GetPrimaryBounds())); | 142 EXPECT_FALSE(screen_manager_->GetDisplayController(GetPrimaryBounds())); |
143 } | 143 } |
144 | 144 |
145 TEST_F(ScreenManagerTest, CheckDuplicateConfiguration) { | 145 TEST_F(ScreenManagerTest, CheckDuplicateConfiguration) { |
146 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 146 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
147 screen_manager_->ConfigureDisplayController( | 147 screen_manager_->ConfigureDisplayController( |
148 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 148 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
149 kDefaultMode); | 149 kDefaultMode); |
150 uint32_t framebuffer = dri_->current_framebuffer(); | 150 uint32_t framebuffer = drm_->current_framebuffer(); |
151 | 151 |
152 screen_manager_->ConfigureDisplayController( | 152 screen_manager_->ConfigureDisplayController( |
153 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 153 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
154 kDefaultMode); | 154 kDefaultMode); |
155 | 155 |
156 // Should reuse existing framebuffer. | 156 // Should reuse existing framebuffer. |
157 EXPECT_EQ(framebuffer, dri_->current_framebuffer()); | 157 EXPECT_EQ(framebuffer, drm_->current_framebuffer()); |
158 | 158 |
159 EXPECT_EQ(2, observer_.num_displays_changed()); | 159 EXPECT_EQ(2, observer_.num_displays_changed()); |
160 EXPECT_EQ(0, observer_.num_displays_removed()); | 160 EXPECT_EQ(0, observer_.num_displays_removed()); |
161 | 161 |
162 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); | 162 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); |
163 EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds())); | 163 EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds())); |
164 } | 164 } |
165 | 165 |
166 TEST_F(ScreenManagerTest, CheckChangingMode) { | 166 TEST_F(ScreenManagerTest, CheckChangingMode) { |
167 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 167 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
168 screen_manager_->ConfigureDisplayController( | 168 screen_manager_->ConfigureDisplayController( |
169 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 169 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
170 kDefaultMode); | 170 kDefaultMode); |
171 drmModeModeInfo new_mode = kDefaultMode; | 171 drmModeModeInfo new_mode = kDefaultMode; |
172 new_mode.vdisplay = 10; | 172 new_mode.vdisplay = 10; |
173 screen_manager_->ConfigureDisplayController( | 173 screen_manager_->ConfigureDisplayController( |
174 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 174 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
175 new_mode); | 175 new_mode); |
176 | 176 |
177 EXPECT_EQ(2, observer_.num_displays_changed()); | 177 EXPECT_EQ(2, observer_.num_displays_changed()); |
178 EXPECT_EQ(0, observer_.num_displays_removed()); | 178 EXPECT_EQ(0, observer_.num_displays_removed()); |
179 | 179 |
180 gfx::Rect new_bounds(0, 0, new_mode.hdisplay, new_mode.vdisplay); | 180 gfx::Rect new_bounds(0, 0, new_mode.hdisplay, new_mode.vdisplay); |
181 EXPECT_TRUE(screen_manager_->GetDisplayController(new_bounds)); | 181 EXPECT_TRUE(screen_manager_->GetDisplayController(new_bounds)); |
182 EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds())); | 182 EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds())); |
183 drmModeModeInfo mode = | 183 drmModeModeInfo mode = |
184 screen_manager_->GetDisplayController(new_bounds)->get_mode(); | 184 screen_manager_->GetDisplayController(new_bounds)->get_mode(); |
185 EXPECT_EQ(new_mode.vdisplay, mode.vdisplay); | 185 EXPECT_EQ(new_mode.vdisplay, mode.vdisplay); |
186 EXPECT_EQ(new_mode.hdisplay, mode.hdisplay); | 186 EXPECT_EQ(new_mode.hdisplay, mode.hdisplay); |
187 } | 187 } |
188 | 188 |
189 TEST_F(ScreenManagerTest, CheckForControllersInMirroredMode) { | 189 TEST_F(ScreenManagerTest, CheckForControllersInMirroredMode) { |
190 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 190 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
191 screen_manager_->ConfigureDisplayController( | 191 screen_manager_->ConfigureDisplayController( |
192 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 192 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
193 kDefaultMode); | 193 kDefaultMode); |
194 screen_manager_->AddDisplayController(dri_, kSecondaryCrtc, | 194 screen_manager_->AddDisplayController(drm_, kSecondaryCrtc, |
195 kSecondaryConnector); | 195 kSecondaryConnector); |
196 screen_manager_->ConfigureDisplayController( | 196 screen_manager_->ConfigureDisplayController( |
197 dri_, kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(), | 197 drm_, kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(), |
198 kDefaultMode); | 198 kDefaultMode); |
199 | 199 |
200 EXPECT_EQ(2, observer_.num_displays_changed()); | 200 EXPECT_EQ(2, observer_.num_displays_changed()); |
201 EXPECT_EQ(1, observer_.num_displays_removed()); | 201 EXPECT_EQ(1, observer_.num_displays_removed()); |
202 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); | 202 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); |
203 EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds())); | 203 EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds())); |
204 } | 204 } |
205 | 205 |
206 TEST_F(ScreenManagerTest, CheckMirrorModeTransitions) { | 206 TEST_F(ScreenManagerTest, CheckMirrorModeTransitions) { |
207 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 207 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
208 screen_manager_->ConfigureDisplayController( | 208 screen_manager_->ConfigureDisplayController( |
209 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 209 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
210 kDefaultMode); | 210 kDefaultMode); |
211 screen_manager_->AddDisplayController(dri_, kSecondaryCrtc, | 211 screen_manager_->AddDisplayController(drm_, kSecondaryCrtc, |
212 kSecondaryConnector); | 212 kSecondaryConnector); |
213 screen_manager_->ConfigureDisplayController( | 213 screen_manager_->ConfigureDisplayController( |
214 dri_, kSecondaryCrtc, kSecondaryConnector, GetSecondaryBounds().origin(), | 214 drm_, kSecondaryCrtc, kSecondaryConnector, GetSecondaryBounds().origin(), |
215 kDefaultMode); | 215 kDefaultMode); |
216 | 216 |
217 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); | 217 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); |
218 EXPECT_TRUE(screen_manager_->GetDisplayController(GetSecondaryBounds())); | 218 EXPECT_TRUE(screen_manager_->GetDisplayController(GetSecondaryBounds())); |
219 | 219 |
220 screen_manager_->ConfigureDisplayController( | 220 screen_manager_->ConfigureDisplayController( |
221 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 221 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
222 kDefaultMode); | 222 kDefaultMode); |
223 screen_manager_->ConfigureDisplayController( | 223 screen_manager_->ConfigureDisplayController( |
224 dri_, kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(), | 224 drm_, kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(), |
225 kDefaultMode); | 225 kDefaultMode); |
226 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); | 226 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); |
227 EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds())); | 227 EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds())); |
228 | 228 |
229 screen_manager_->ConfigureDisplayController( | 229 screen_manager_->ConfigureDisplayController( |
230 dri_, kPrimaryCrtc, kPrimaryConnector, GetSecondaryBounds().origin(), | 230 drm_, kPrimaryCrtc, kPrimaryConnector, GetSecondaryBounds().origin(), |
231 kDefaultMode); | 231 kDefaultMode); |
232 screen_manager_->ConfigureDisplayController( | 232 screen_manager_->ConfigureDisplayController( |
233 dri_, kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(), | 233 drm_, kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(), |
234 kDefaultMode); | 234 kDefaultMode); |
235 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); | 235 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); |
236 EXPECT_TRUE(screen_manager_->GetDisplayController(GetSecondaryBounds())); | 236 EXPECT_TRUE(screen_manager_->GetDisplayController(GetSecondaryBounds())); |
237 } | 237 } |
238 | 238 |
239 TEST_F(ScreenManagerTest, MonitorGoneInMirrorMode) { | 239 TEST_F(ScreenManagerTest, MonitorGoneInMirrorMode) { |
240 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 240 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
241 screen_manager_->ConfigureDisplayController( | 241 screen_manager_->ConfigureDisplayController( |
242 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 242 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
243 kDefaultMode); | 243 kDefaultMode); |
244 screen_manager_->AddDisplayController(dri_, kSecondaryCrtc, | 244 screen_manager_->AddDisplayController(drm_, kSecondaryCrtc, |
245 kSecondaryConnector); | 245 kSecondaryConnector); |
246 screen_manager_->ConfigureDisplayController( | 246 screen_manager_->ConfigureDisplayController( |
247 dri_, kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(), | 247 drm_, kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(), |
248 kDefaultMode); | 248 kDefaultMode); |
249 | 249 |
250 EXPECT_EQ(2, observer_.num_displays_changed()); | 250 EXPECT_EQ(2, observer_.num_displays_changed()); |
251 EXPECT_EQ(1, observer_.num_displays_removed()); | 251 EXPECT_EQ(1, observer_.num_displays_removed()); |
252 | 252 |
253 screen_manager_->RemoveDisplayController(dri_, kSecondaryCrtc); | 253 screen_manager_->RemoveDisplayController(drm_, kSecondaryCrtc); |
254 EXPECT_TRUE(screen_manager_->ConfigureDisplayController( | 254 EXPECT_TRUE(screen_manager_->ConfigureDisplayController( |
255 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 255 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
256 kDefaultMode)); | 256 kDefaultMode)); |
257 EXPECT_EQ(3, observer_.num_displays_changed()); | 257 EXPECT_EQ(3, observer_.num_displays_changed()); |
258 EXPECT_EQ(1, observer_.num_displays_removed()); | 258 EXPECT_EQ(1, observer_.num_displays_removed()); |
259 | 259 |
260 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); | 260 EXPECT_TRUE(screen_manager_->GetDisplayController(GetPrimaryBounds())); |
261 EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds())); | 261 EXPECT_FALSE(screen_manager_->GetDisplayController(GetSecondaryBounds())); |
262 } | 262 } |
263 | 263 |
264 TEST_F(ScreenManagerTest, DoNotEnterMirrorModeUnlessSameBounds) { | 264 TEST_F(ScreenManagerTest, DoNotEnterMirrorModeUnlessSameBounds) { |
265 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 265 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
266 screen_manager_->AddDisplayController(dri_, kSecondaryCrtc, | 266 screen_manager_->AddDisplayController(drm_, kSecondaryCrtc, |
267 kSecondaryConnector); | 267 kSecondaryConnector); |
268 | 268 |
269 // Configure displays in extended mode. | 269 // Configure displays in extended mode. |
270 screen_manager_->ConfigureDisplayController( | 270 screen_manager_->ConfigureDisplayController( |
271 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 271 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
272 kDefaultMode); | 272 kDefaultMode); |
273 screen_manager_->ConfigureDisplayController( | 273 screen_manager_->ConfigureDisplayController( |
274 dri_, kSecondaryCrtc, kSecondaryConnector, GetSecondaryBounds().origin(), | 274 drm_, kSecondaryCrtc, kSecondaryConnector, GetSecondaryBounds().origin(), |
275 kDefaultMode); | 275 kDefaultMode); |
276 | 276 |
277 drmModeModeInfo new_mode = kDefaultMode; | 277 drmModeModeInfo new_mode = kDefaultMode; |
278 new_mode.vdisplay = 10; | 278 new_mode.vdisplay = 10; |
279 // Shouldn't enter mirror mode unless the display bounds are the same. | 279 // Shouldn't enter mirror mode unless the display bounds are the same. |
280 screen_manager_->ConfigureDisplayController( | 280 screen_manager_->ConfigureDisplayController( |
281 dri_, kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(), | 281 drm_, kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(), |
282 new_mode); | 282 new_mode); |
283 | 283 |
284 EXPECT_FALSE( | 284 EXPECT_FALSE( |
285 screen_manager_->GetDisplayController(GetPrimaryBounds())->IsMirrored()); | 285 screen_manager_->GetDisplayController(GetPrimaryBounds())->IsMirrored()); |
286 } | 286 } |
287 | 287 |
288 TEST_F(ScreenManagerTest, ReuseFramebufferIfDisabledThenReEnabled) { | 288 TEST_F(ScreenManagerTest, ReuseFramebufferIfDisabledThenReEnabled) { |
289 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 289 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
290 screen_manager_->ConfigureDisplayController( | 290 screen_manager_->ConfigureDisplayController( |
291 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 291 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
292 kDefaultMode); | 292 kDefaultMode); |
293 uint32_t framebuffer = dri_->current_framebuffer(); | 293 uint32_t framebuffer = drm_->current_framebuffer(); |
294 | 294 |
295 screen_manager_->DisableDisplayController(dri_, kPrimaryCrtc); | 295 screen_manager_->DisableDisplayController(drm_, kPrimaryCrtc); |
296 EXPECT_EQ(0u, dri_->current_framebuffer()); | 296 EXPECT_EQ(0u, drm_->current_framebuffer()); |
297 | 297 |
298 screen_manager_->ConfigureDisplayController( | 298 screen_manager_->ConfigureDisplayController( |
299 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 299 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
300 kDefaultMode); | 300 kDefaultMode); |
301 | 301 |
302 // Should reuse existing framebuffer. | 302 // Should reuse existing framebuffer. |
303 EXPECT_EQ(framebuffer, dri_->current_framebuffer()); | 303 EXPECT_EQ(framebuffer, drm_->current_framebuffer()); |
304 } | 304 } |
305 | 305 |
306 TEST_F(ScreenManagerTest, CheckMirrorModeAfterBeginReEnabled) { | 306 TEST_F(ScreenManagerTest, CheckMirrorModeAfterBeginReEnabled) { |
307 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 307 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
308 screen_manager_->ConfigureDisplayController( | 308 screen_manager_->ConfigureDisplayController( |
309 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 309 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
310 kDefaultMode); | 310 kDefaultMode); |
311 screen_manager_->DisableDisplayController(dri_, kPrimaryCrtc); | 311 screen_manager_->DisableDisplayController(drm_, kPrimaryCrtc); |
312 | 312 |
313 screen_manager_->AddDisplayController(dri_, kSecondaryCrtc, | 313 screen_manager_->AddDisplayController(drm_, kSecondaryCrtc, |
314 kSecondaryConnector); | 314 kSecondaryConnector); |
315 screen_manager_->ConfigureDisplayController( | 315 screen_manager_->ConfigureDisplayController( |
316 dri_, kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(), | 316 drm_, kSecondaryCrtc, kSecondaryConnector, GetPrimaryBounds().origin(), |
317 kDefaultMode); | 317 kDefaultMode); |
318 | 318 |
319 ui::HardwareDisplayController* controller = | 319 ui::HardwareDisplayController* controller = |
320 screen_manager_->GetDisplayController(GetPrimaryBounds()); | 320 screen_manager_->GetDisplayController(GetPrimaryBounds()); |
321 EXPECT_TRUE(controller); | 321 EXPECT_TRUE(controller); |
322 EXPECT_FALSE(controller->IsMirrored()); | 322 EXPECT_FALSE(controller->IsMirrored()); |
323 | 323 |
324 screen_manager_->ConfigureDisplayController( | 324 screen_manager_->ConfigureDisplayController( |
325 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 325 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
326 kDefaultMode); | 326 kDefaultMode); |
327 EXPECT_TRUE(controller); | 327 EXPECT_TRUE(controller); |
328 EXPECT_TRUE(controller->IsMirrored()); | 328 EXPECT_TRUE(controller->IsMirrored()); |
329 } | 329 } |
330 | 330 |
331 TEST_F(ScreenManagerTest, | 331 TEST_F(ScreenManagerTest, |
332 CheckProperConfigurationWithDifferentDeviceAndSameCrtc) { | 332 CheckProperConfigurationWithDifferentDeviceAndSameCrtc) { |
333 scoped_refptr<ui::MockDriWrapper> dri2 = new ui::MockDriWrapper(); | 333 scoped_refptr<ui::MockDrmDevice> drm2 = new ui::MockDrmDevice(); |
334 | 334 |
335 screen_manager_->AddDisplayController(dri_, kPrimaryCrtc, kPrimaryConnector); | 335 screen_manager_->AddDisplayController(drm_, kPrimaryCrtc, kPrimaryConnector); |
336 screen_manager_->AddDisplayController(dri2, kPrimaryCrtc, kPrimaryConnector); | 336 screen_manager_->AddDisplayController(drm2, kPrimaryCrtc, kPrimaryConnector); |
337 | 337 |
338 screen_manager_->ConfigureDisplayController( | 338 screen_manager_->ConfigureDisplayController( |
339 dri_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), | 339 drm_, kPrimaryCrtc, kPrimaryConnector, GetPrimaryBounds().origin(), |
340 kDefaultMode); | 340 kDefaultMode); |
341 screen_manager_->ConfigureDisplayController( | 341 screen_manager_->ConfigureDisplayController( |
342 dri2, kPrimaryCrtc, kPrimaryConnector, GetSecondaryBounds().origin(), | 342 drm2, kPrimaryCrtc, kPrimaryConnector, GetSecondaryBounds().origin(), |
343 kDefaultMode); | 343 kDefaultMode); |
344 | 344 |
345 ui::HardwareDisplayController* controller1 = | 345 ui::HardwareDisplayController* controller1 = |
346 screen_manager_->GetDisplayController(GetPrimaryBounds()); | 346 screen_manager_->GetDisplayController(GetPrimaryBounds()); |
347 ui::HardwareDisplayController* controller2 = | 347 ui::HardwareDisplayController* controller2 = |
348 screen_manager_->GetDisplayController(GetSecondaryBounds()); | 348 screen_manager_->GetDisplayController(GetSecondaryBounds()); |
349 | 349 |
350 EXPECT_NE(controller1, controller2); | 350 EXPECT_NE(controller1, controller2); |
351 EXPECT_EQ(dri_, controller1->crtc_controllers()[0]->drm()); | 351 EXPECT_EQ(drm_, controller1->crtc_controllers()[0]->drm()); |
352 EXPECT_EQ(dri2, controller2->crtc_controllers()[0]->drm()); | 352 EXPECT_EQ(drm2, controller2->crtc_controllers()[0]->drm()); |
353 } | 353 } |
OLD | NEW |