| 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 "ui/display/chromeos/update_display_configuration_task.h" | 5 #include "ui/display/chromeos/update_display_configuration_task.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/macros.h" | 12 #include "base/macros.h" |
| 13 #include "base/memory/ptr_util.h" | 13 #include "base/memory/ptr_util.h" |
| 14 #include "base/message_loop/message_loop.h" | 14 #include "base/message_loop/message_loop.h" |
| 15 #include "base/run_loop.h" | 15 #include "base/run_loop.h" |
| 16 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
| 17 #include "ui/display/chromeos/display_layout_manager.h" | 17 #include "ui/display/chromeos/display_layout_manager.h" |
| 18 #include "ui/display/chromeos/test/action_logger_util.h" | 18 #include "ui/display/chromeos/test/action_logger_util.h" |
| 19 #include "ui/display/chromeos/test/test_display_snapshot.h" | |
| 20 #include "ui/display/chromeos/test/test_native_display_delegate.h" | 19 #include "ui/display/chromeos/test/test_native_display_delegate.h" |
| 20 #include "ui/display/fake_display_snapshot.h" |
| 21 | 21 |
| 22 namespace ui { | 22 namespace ui { |
| 23 namespace test { | 23 namespace test { |
| 24 | 24 |
| 25 namespace { | 25 namespace { |
| 26 | 26 |
| 27 class TestSoftwareMirroringController | 27 class TestSoftwareMirroringController |
| 28 : public DisplayConfigurator::SoftwareMirroringController { | 28 : public DisplayConfigurator::SoftwareMirroringController { |
| 29 public: | 29 public: |
| 30 TestSoftwareMirroringController() : is_enabled_(false) {} | 30 TestSoftwareMirroringController() : is_enabled_(false) {} |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 class UpdateDisplayConfigurationTaskTest : public testing::Test { | 147 class UpdateDisplayConfigurationTaskTest : public testing::Test { |
| 148 public: | 148 public: |
| 149 UpdateDisplayConfigurationTaskTest() | 149 UpdateDisplayConfigurationTaskTest() |
| 150 : delegate_(&log_), | 150 : delegate_(&log_), |
| 151 small_mode_(gfx::Size(1366, 768), false, 60.0f), | 151 small_mode_(gfx::Size(1366, 768), false, 60.0f), |
| 152 big_mode_(gfx::Size(2560, 1600), false, 60.0f), | 152 big_mode_(gfx::Size(2560, 1600), false, 60.0f), |
| 153 configured_(false), | 153 configured_(false), |
| 154 configuration_status_(false), | 154 configuration_status_(false), |
| 155 display_state_(MULTIPLE_DISPLAY_STATE_INVALID), | 155 display_state_(MULTIPLE_DISPLAY_STATE_INVALID), |
| 156 power_state_(chromeos::DISPLAY_POWER_ALL_ON) { | 156 power_state_(chromeos::DISPLAY_POWER_ALL_ON) { |
| 157 std::vector<std::unique_ptr<const DisplayMode>> modes; | 157 displays_[0] = display::FakeDisplaySnapshot::Builder() |
| 158 modes.push_back(small_mode_.Clone()); | 158 .SetId(123) |
| 159 displays_[0].set_current_mode(modes[0].get()); | 159 .SetNativeMode(small_mode_.Clone()) |
| 160 displays_[0].set_native_mode(modes[0].get()); | 160 .SetCurrentMode(small_mode_.Clone()) |
| 161 displays_[0].set_modes(std::move(modes)); | 161 .Build(); |
| 162 displays_[0].set_display_id(123); | |
| 163 | 162 |
| 164 modes.clear(); | 163 displays_[1] = display::FakeDisplaySnapshot::Builder() |
| 165 modes.push_back(small_mode_.Clone()); | 164 .SetId(456) |
| 166 modes.push_back(big_mode_.Clone()); | 165 .SetNativeMode(big_mode_.Clone()) |
| 167 displays_[1].set_current_mode(modes[1].get()); | 166 .SetCurrentMode(big_mode_.Clone()) |
| 168 displays_[1].set_native_mode(modes[1].get()); | 167 .AddMode(small_mode_.Clone()) |
| 169 displays_[1].set_modes(std::move(modes)); | 168 .Build(); |
| 170 displays_[1].set_display_id(456); | |
| 171 } | 169 } |
| 172 ~UpdateDisplayConfigurationTaskTest() override {} | 170 ~UpdateDisplayConfigurationTaskTest() override {} |
| 173 | 171 |
| 174 void UpdateDisplays(size_t count) { | 172 void UpdateDisplays(size_t count) { |
| 175 std::vector<DisplaySnapshot*> displays; | 173 std::vector<DisplaySnapshot*> displays; |
| 176 for (size_t i = 0; i < count; ++i) | 174 for (size_t i = 0; i < count; ++i) |
| 177 displays.push_back(&displays_[i]); | 175 displays.push_back(displays_[i].get()); |
| 178 | 176 |
| 179 delegate_.set_outputs(displays); | 177 delegate_.set_outputs(displays); |
| 180 } | 178 } |
| 181 | 179 |
| 182 void ResponseCallback(bool success, | 180 void ResponseCallback(bool success, |
| 183 const std::vector<DisplaySnapshot*>& displays, | 181 const std::vector<DisplaySnapshot*>& displays, |
| 184 const gfx::Size& framebuffer_size, | 182 const gfx::Size& framebuffer_size, |
| 185 MultipleDisplayState new_display_state, | 183 MultipleDisplayState new_display_state, |
| 186 chromeos::DisplayPowerState new_power_state) { | 184 chromeos::DisplayPowerState new_power_state) { |
| 187 configured_ = true; | 185 configured_ = true; |
| 188 configuration_status_ = success; | 186 configuration_status_ = success; |
| 189 display_states_ = displays; | 187 display_states_ = displays; |
| 190 display_state_ = new_display_state; | 188 display_state_ = new_display_state; |
| 191 power_state_ = new_power_state; | 189 power_state_ = new_power_state; |
| 192 | 190 |
| 193 if (success) { | 191 if (success) { |
| 194 layout_manager_.set_display_state(display_state_); | 192 layout_manager_.set_display_state(display_state_); |
| 195 layout_manager_.set_power_state(power_state_); | 193 layout_manager_.set_power_state(power_state_); |
| 196 } | 194 } |
| 197 } | 195 } |
| 198 | 196 |
| 199 protected: | 197 protected: |
| 200 ActionLogger log_; | 198 ActionLogger log_; |
| 201 TestNativeDisplayDelegate delegate_; | 199 TestNativeDisplayDelegate delegate_; |
| 202 TestDisplayLayoutManager layout_manager_; | 200 TestDisplayLayoutManager layout_manager_; |
| 203 | 201 |
| 204 const DisplayMode small_mode_; | 202 const DisplayMode small_mode_; |
| 205 const DisplayMode big_mode_; | 203 const DisplayMode big_mode_; |
| 206 | 204 |
| 207 TestDisplaySnapshot displays_[2]; | 205 std::unique_ptr<DisplaySnapshot> displays_[2]; |
| 208 | 206 |
| 209 bool configured_; | 207 bool configured_; |
| 210 bool configuration_status_; | 208 bool configuration_status_; |
| 211 std::vector<DisplaySnapshot*> display_states_; | 209 std::vector<DisplaySnapshot*> display_states_; |
| 212 MultipleDisplayState display_state_; | 210 MultipleDisplayState display_state_; |
| 213 chromeos::DisplayPowerState power_state_; | 211 chromeos::DisplayPowerState power_state_; |
| 214 | 212 |
| 215 private: | 213 private: |
| 216 DISALLOW_COPY_AND_ASSIGN(UpdateDisplayConfigurationTaskTest); | 214 DISALLOW_COPY_AND_ASSIGN(UpdateDisplayConfigurationTaskTest); |
| 217 }; | 215 }; |
| 218 | 216 |
| 219 } // namespace | 217 } // namespace |
| 220 | 218 |
| 221 TEST_F(UpdateDisplayConfigurationTaskTest, HeadlessConfiguration) { | 219 TEST_F(UpdateDisplayConfigurationTaskTest, HeadlessConfiguration) { |
| 222 { | 220 { |
| 223 UpdateDisplayConfigurationTask task( | 221 UpdateDisplayConfigurationTask task( |
| 224 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_HEADLESS, | 222 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_HEADLESS, |
| 225 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, | 223 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, |
| 226 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, | 224 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| 227 base::Unretained(this))); | 225 base::Unretained(this))); |
| 228 task.Run(); | 226 task.Run(); |
| 229 } | 227 } |
| 230 | 228 |
| 231 EXPECT_TRUE(configured_); | 229 EXPECT_TRUE(configured_); |
| 232 EXPECT_TRUE(configuration_status_); | 230 EXPECT_TRUE(configuration_status_); |
| 233 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_HEADLESS, display_state_); | 231 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_HEADLESS, display_state_); |
| 234 EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_ON, power_state_); | 232 EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_ON, power_state_); |
| 235 EXPECT_EQ(JoinActions(kGrab, kUngrab, NULL), log_.GetActionsAndClear()); | 233 EXPECT_EQ(JoinActions(kGrab, kUngrab, nullptr), log_.GetActionsAndClear()); |
| 236 } | 234 } |
| 237 | 235 |
| 238 TEST_F(UpdateDisplayConfigurationTaskTest, SingleConfiguration) { | 236 TEST_F(UpdateDisplayConfigurationTaskTest, SingleConfiguration) { |
| 239 UpdateDisplays(1); | 237 UpdateDisplays(1); |
| 240 | 238 |
| 241 { | 239 { |
| 242 UpdateDisplayConfigurationTask task( | 240 UpdateDisplayConfigurationTask task( |
| 243 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_SINGLE, | 241 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_SINGLE, |
| 244 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, | 242 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, |
| 245 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, | 243 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| 246 base::Unretained(this))); | 244 base::Unretained(this))); |
| 247 task.Run(); | 245 task.Run(); |
| 248 } | 246 } |
| 249 | 247 |
| 250 EXPECT_TRUE(configured_); | 248 EXPECT_TRUE(configured_); |
| 251 EXPECT_TRUE(configuration_status_); | 249 EXPECT_TRUE(configuration_status_); |
| 252 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_SINGLE, display_state_); | 250 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_SINGLE, display_state_); |
| 253 EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_ON, power_state_); | 251 EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_ON, power_state_); |
| 254 EXPECT_EQ(JoinActions( | 252 EXPECT_EQ( |
| 255 kGrab, GetFramebufferAction(small_mode_.size(), &displays_[0], | 253 JoinActions( |
| 256 nullptr).c_str(), | 254 kGrab, |
| 257 GetCrtcAction(displays_[0], &small_mode_, gfx::Point()).c_str(), | 255 GetFramebufferAction(small_mode_.size(), displays_[0].get(), nullptr) |
| 258 kUngrab, NULL), | 256 .c_str(), |
| 259 log_.GetActionsAndClear()); | 257 GetCrtcAction(*displays_[0], &small_mode_, gfx::Point()).c_str(), |
| 258 kUngrab, nullptr), |
| 259 log_.GetActionsAndClear()); |
| 260 } | 260 } |
| 261 | 261 |
| 262 TEST_F(UpdateDisplayConfigurationTaskTest, ExtendedConfiguration) { | 262 TEST_F(UpdateDisplayConfigurationTaskTest, ExtendedConfiguration) { |
| 263 UpdateDisplays(2); | 263 UpdateDisplays(2); |
| 264 | 264 |
| 265 { | 265 { |
| 266 UpdateDisplayConfigurationTask task( | 266 UpdateDisplayConfigurationTask task( |
| 267 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, | 267 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, |
| 268 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, | 268 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, |
| 269 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, | 269 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| 270 base::Unretained(this))); | 270 base::Unretained(this))); |
| 271 task.Run(); | 271 task.Run(); |
| 272 } | 272 } |
| 273 | 273 |
| 274 EXPECT_TRUE(configured_); | 274 EXPECT_TRUE(configured_); |
| 275 EXPECT_TRUE(configuration_status_); | 275 EXPECT_TRUE(configuration_status_); |
| 276 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, display_state_); | 276 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, display_state_); |
| 277 EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_ON, power_state_); | 277 EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_ON, power_state_); |
| 278 EXPECT_EQ( | 278 EXPECT_EQ( |
| 279 JoinActions( | 279 JoinActions( |
| 280 kGrab, GetFramebufferAction(gfx::Size(big_mode_.size().width(), | 280 kGrab, GetFramebufferAction(gfx::Size(big_mode_.size().width(), |
| 281 small_mode_.size().height() + | 281 small_mode_.size().height() + |
| 282 big_mode_.size().height()), | 282 big_mode_.size().height()), |
| 283 &displays_[0], &displays_[1]).c_str(), | 283 displays_[0].get(), displays_[1].get()) |
| 284 GetCrtcAction(displays_[0], &small_mode_, gfx::Point()).c_str(), | 284 .c_str(), |
| 285 GetCrtcAction(displays_[1], &big_mode_, | 285 GetCrtcAction(*displays_[0], &small_mode_, gfx::Point()).c_str(), |
| 286 gfx::Point(0, small_mode_.size().height())).c_str(), | 286 GetCrtcAction(*displays_[1], &big_mode_, |
| 287 kUngrab, NULL), | 287 gfx::Point(0, small_mode_.size().height())) |
| 288 .c_str(), |
| 289 kUngrab, nullptr), |
| 288 log_.GetActionsAndClear()); | 290 log_.GetActionsAndClear()); |
| 289 } | 291 } |
| 290 | 292 |
| 291 TEST_F(UpdateDisplayConfigurationTaskTest, MirrorConfiguration) { | 293 TEST_F(UpdateDisplayConfigurationTaskTest, MirrorConfiguration) { |
| 292 UpdateDisplays(2); | 294 UpdateDisplays(2); |
| 293 | 295 |
| 294 { | 296 { |
| 295 UpdateDisplayConfigurationTask task( | 297 UpdateDisplayConfigurationTask task( |
| 296 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_DUAL_MIRROR, | 298 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_DUAL_MIRROR, |
| 297 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, | 299 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, |
| 298 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, | 300 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| 299 base::Unretained(this))); | 301 base::Unretained(this))); |
| 300 task.Run(); | 302 task.Run(); |
| 301 } | 303 } |
| 302 | 304 |
| 303 EXPECT_TRUE(configured_); | 305 EXPECT_TRUE(configured_); |
| 304 EXPECT_TRUE(configuration_status_); | 306 EXPECT_TRUE(configuration_status_); |
| 305 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_MIRROR, display_state_); | 307 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_MIRROR, display_state_); |
| 306 EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_ON, power_state_); | 308 EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_ON, power_state_); |
| 307 EXPECT_EQ(JoinActions( | 309 EXPECT_EQ( |
| 308 kGrab, GetFramebufferAction(small_mode_.size(), &displays_[0], | 310 JoinActions( |
| 309 &displays_[1]).c_str(), | 311 kGrab, GetFramebufferAction(small_mode_.size(), displays_[0].get(), |
| 310 GetCrtcAction(displays_[0], &small_mode_, gfx::Point()).c_str(), | 312 displays_[1].get()) |
| 311 GetCrtcAction(displays_[1], &small_mode_, gfx::Point()).c_str(), | 313 .c_str(), |
| 312 kUngrab, NULL), | 314 GetCrtcAction(*displays_[0], &small_mode_, gfx::Point()).c_str(), |
| 313 log_.GetActionsAndClear()); | 315 GetCrtcAction(*displays_[1], &small_mode_, gfx::Point()).c_str(), |
| 316 kUngrab, nullptr), |
| 317 log_.GetActionsAndClear()); |
| 314 } | 318 } |
| 315 | 319 |
| 316 TEST_F(UpdateDisplayConfigurationTaskTest, FailMirrorConfiguration) { | 320 TEST_F(UpdateDisplayConfigurationTaskTest, FailMirrorConfiguration) { |
| 317 layout_manager_.set_should_mirror(false); | 321 layout_manager_.set_should_mirror(false); |
| 318 UpdateDisplays(2); | 322 UpdateDisplays(2); |
| 319 | 323 |
| 320 { | 324 { |
| 321 UpdateDisplayConfigurationTask task( | 325 UpdateDisplayConfigurationTask task( |
| 322 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_DUAL_MIRROR, | 326 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_DUAL_MIRROR, |
| 323 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, | 327 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, |
| 324 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, | 328 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| 325 base::Unretained(this))); | 329 base::Unretained(this))); |
| 326 task.Run(); | 330 task.Run(); |
| 327 } | 331 } |
| 328 | 332 |
| 329 EXPECT_TRUE(configured_); | 333 EXPECT_TRUE(configured_); |
| 330 EXPECT_FALSE(configuration_status_); | 334 EXPECT_FALSE(configuration_status_); |
| 331 EXPECT_EQ(JoinActions(kGrab, kUngrab, NULL), log_.GetActionsAndClear()); | 335 EXPECT_EQ(JoinActions(kGrab, kUngrab, nullptr), log_.GetActionsAndClear()); |
| 332 } | 336 } |
| 333 | 337 |
| 334 TEST_F(UpdateDisplayConfigurationTaskTest, FailExtendedConfiguration) { | 338 TEST_F(UpdateDisplayConfigurationTaskTest, FailExtendedConfiguration) { |
| 335 delegate_.set_max_configurable_pixels(1); | 339 delegate_.set_max_configurable_pixels(1); |
| 336 UpdateDisplays(2); | 340 UpdateDisplays(2); |
| 337 | 341 |
| 338 { | 342 { |
| 339 UpdateDisplayConfigurationTask task( | 343 UpdateDisplayConfigurationTask task( |
| 340 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, | 344 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, |
| 341 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, | 345 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, |
| 342 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, | 346 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| 343 base::Unretained(this))); | 347 base::Unretained(this))); |
| 344 task.Run(); | 348 task.Run(); |
| 345 } | 349 } |
| 346 | 350 |
| 347 EXPECT_TRUE(configured_); | 351 EXPECT_TRUE(configured_); |
| 348 EXPECT_FALSE(configuration_status_); | 352 EXPECT_FALSE(configuration_status_); |
| 349 EXPECT_EQ( | 353 EXPECT_EQ( |
| 350 JoinActions( | 354 JoinActions( |
| 351 kGrab, GetFramebufferAction(gfx::Size(big_mode_.size().width(), | 355 kGrab, GetFramebufferAction(gfx::Size(big_mode_.size().width(), |
| 352 small_mode_.size().height() + | 356 small_mode_.size().height() + |
| 353 big_mode_.size().height()), | 357 big_mode_.size().height()), |
| 354 &displays_[0], &displays_[1]).c_str(), | 358 displays_[0].get(), displays_[1].get()) |
| 355 GetCrtcAction(displays_[0], &small_mode_, gfx::Point()).c_str(), | 359 .c_str(), |
| 356 GetCrtcAction(displays_[1], &big_mode_, | 360 GetCrtcAction(*displays_[0], &small_mode_, gfx::Point()).c_str(), |
| 357 gfx::Point(0, small_mode_.size().height())).c_str(), | 361 GetCrtcAction(*displays_[1], &big_mode_, |
| 358 GetCrtcAction(displays_[1], &small_mode_, | 362 gfx::Point(0, small_mode_.size().height())) |
| 359 gfx::Point(0, small_mode_.size().height())).c_str(), | 363 .c_str(), |
| 360 kUngrab, NULL), | 364 GetCrtcAction(*displays_[1], &small_mode_, |
| 365 gfx::Point(0, small_mode_.size().height())) |
| 366 .c_str(), |
| 367 kUngrab, nullptr), |
| 361 log_.GetActionsAndClear()); | 368 log_.GetActionsAndClear()); |
| 362 } | 369 } |
| 363 | 370 |
| 364 TEST_F(UpdateDisplayConfigurationTaskTest, SingleChangePowerConfiguration) { | 371 TEST_F(UpdateDisplayConfigurationTaskTest, SingleChangePowerConfiguration) { |
| 365 UpdateDisplays(1); | 372 UpdateDisplays(1); |
| 366 | 373 |
| 367 { | 374 { |
| 368 UpdateDisplayConfigurationTask task( | 375 UpdateDisplayConfigurationTask task( |
| 369 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_SINGLE, | 376 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_SINGLE, |
| 370 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, | 377 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, |
| 371 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, | 378 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| 372 base::Unretained(this))); | 379 base::Unretained(this))); |
| 373 task.Run(); | 380 task.Run(); |
| 374 } | 381 } |
| 375 | 382 |
| 376 EXPECT_TRUE(configured_); | 383 EXPECT_TRUE(configured_); |
| 377 EXPECT_TRUE(configuration_status_); | 384 EXPECT_TRUE(configuration_status_); |
| 378 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_SINGLE, display_state_); | 385 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_SINGLE, display_state_); |
| 379 EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_ON, power_state_); | 386 EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_ON, power_state_); |
| 380 EXPECT_EQ(JoinActions( | 387 EXPECT_EQ( |
| 381 kGrab, GetFramebufferAction(small_mode_.size(), &displays_[0], | 388 JoinActions( |
| 382 nullptr).c_str(), | 389 kGrab, |
| 383 GetCrtcAction(displays_[0], &small_mode_, gfx::Point()).c_str(), | 390 GetFramebufferAction(small_mode_.size(), displays_[0].get(), nullptr) |
| 384 kUngrab, NULL), | 391 .c_str(), |
| 385 log_.GetActionsAndClear()); | 392 GetCrtcAction(*displays_[0], &small_mode_, gfx::Point()).c_str(), |
| 393 kUngrab, nullptr), |
| 394 log_.GetActionsAndClear()); |
| 386 | 395 |
| 387 // Turn power off | 396 // Turn power off |
| 388 { | 397 { |
| 389 UpdateDisplayConfigurationTask task( | 398 UpdateDisplayConfigurationTask task( |
| 390 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_SINGLE, | 399 &delegate_, &layout_manager_, MULTIPLE_DISPLAY_STATE_SINGLE, |
| 391 chromeos::DISPLAY_POWER_ALL_OFF, 0, 0, false, | 400 chromeos::DISPLAY_POWER_ALL_OFF, 0, 0, false, |
| 392 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, | 401 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| 393 base::Unretained(this))); | 402 base::Unretained(this))); |
| 394 task.Run(); | 403 task.Run(); |
| 395 } | 404 } |
| 396 | 405 |
| 397 EXPECT_TRUE(configuration_status_); | 406 EXPECT_TRUE(configuration_status_); |
| 398 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_SINGLE, display_state_); | 407 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_SINGLE, display_state_); |
| 399 EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_OFF, power_state_); | 408 EXPECT_EQ(chromeos::DISPLAY_POWER_ALL_OFF, power_state_); |
| 400 EXPECT_EQ( | 409 EXPECT_EQ( |
| 401 JoinActions(kGrab, GetFramebufferAction(small_mode_.size(), &displays_[0], | 410 JoinActions(kGrab, GetFramebufferAction(small_mode_.size(), |
| 402 nullptr).c_str(), | 411 displays_[0].get(), nullptr) |
| 403 GetCrtcAction(displays_[0], nullptr, gfx::Point()).c_str(), | 412 .c_str(), |
| 404 kUngrab, NULL), | 413 GetCrtcAction(*displays_[0], nullptr, gfx::Point()).c_str(), |
| 414 kUngrab, nullptr), |
| 405 log_.GetActionsAndClear()); | 415 log_.GetActionsAndClear()); |
| 406 } | 416 } |
| 407 | 417 |
| 408 TEST_F(UpdateDisplayConfigurationTaskTest, NoopSoftwareMirrorConfiguration) { | 418 TEST_F(UpdateDisplayConfigurationTaskTest, NoopSoftwareMirrorConfiguration) { |
| 409 layout_manager_.set_should_mirror(false); | 419 layout_manager_.set_should_mirror(false); |
| 410 layout_manager_.set_software_mirroring_controller( | 420 layout_manager_.set_software_mirroring_controller( |
| 411 base::MakeUnique<TestSoftwareMirroringController>()); | 421 base::MakeUnique<TestSoftwareMirroringController>()); |
| 412 UpdateDisplays(2); | 422 UpdateDisplays(2); |
| 413 | 423 |
| 414 { | 424 { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 428 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, | 438 chromeos::DISPLAY_POWER_ALL_ON, 0, 0, false, |
| 429 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, | 439 base::Bind(&UpdateDisplayConfigurationTaskTest::ResponseCallback, |
| 430 base::Unretained(this))); | 440 base::Unretained(this))); |
| 431 task.Run(); | 441 task.Run(); |
| 432 } | 442 } |
| 433 | 443 |
| 434 EXPECT_TRUE(configuration_status_); | 444 EXPECT_TRUE(configuration_status_); |
| 435 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, display_state_); | 445 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, display_state_); |
| 436 EXPECT_TRUE(layout_manager_.GetSoftwareMirroringController() | 446 EXPECT_TRUE(layout_manager_.GetSoftwareMirroringController() |
| 437 ->SoftwareMirroringEnabled()); | 447 ->SoftwareMirroringEnabled()); |
| 438 EXPECT_EQ(JoinActions(kGrab, kUngrab, NULL), log_.GetActionsAndClear()); | 448 EXPECT_EQ(JoinActions(kGrab, kUngrab, nullptr), log_.GetActionsAndClear()); |
| 439 } | 449 } |
| 440 | 450 |
| 441 TEST_F(UpdateDisplayConfigurationTaskTest, | 451 TEST_F(UpdateDisplayConfigurationTaskTest, |
| 442 ForceConfigurationWhileGoingToSoftwareMirror) { | 452 ForceConfigurationWhileGoingToSoftwareMirror) { |
| 443 layout_manager_.set_should_mirror(false); | 453 layout_manager_.set_should_mirror(false); |
| 444 layout_manager_.set_software_mirroring_controller( | 454 layout_manager_.set_software_mirroring_controller( |
| 445 base::MakeUnique<TestSoftwareMirroringController>()); | 455 base::MakeUnique<TestSoftwareMirroringController>()); |
| 446 UpdateDisplays(2); | 456 UpdateDisplays(2); |
| 447 | 457 |
| 448 { | 458 { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 467 | 477 |
| 468 EXPECT_TRUE(configuration_status_); | 478 EXPECT_TRUE(configuration_status_); |
| 469 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, display_state_); | 479 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, display_state_); |
| 470 EXPECT_TRUE(layout_manager_.GetSoftwareMirroringController() | 480 EXPECT_TRUE(layout_manager_.GetSoftwareMirroringController() |
| 471 ->SoftwareMirroringEnabled()); | 481 ->SoftwareMirroringEnabled()); |
| 472 EXPECT_EQ( | 482 EXPECT_EQ( |
| 473 JoinActions( | 483 JoinActions( |
| 474 kGrab, GetFramebufferAction(gfx::Size(big_mode_.size().width(), | 484 kGrab, GetFramebufferAction(gfx::Size(big_mode_.size().width(), |
| 475 small_mode_.size().height() + | 485 small_mode_.size().height() + |
| 476 big_mode_.size().height()), | 486 big_mode_.size().height()), |
| 477 &displays_[0], &displays_[1]).c_str(), | 487 displays_[0].get(), displays_[1].get()) |
| 478 GetCrtcAction(displays_[0], &small_mode_, gfx::Point()).c_str(), | 488 .c_str(), |
| 479 GetCrtcAction(displays_[1], &big_mode_, | 489 GetCrtcAction(*displays_[0], &small_mode_, gfx::Point()).c_str(), |
| 480 gfx::Point(0, small_mode_.size().height())).c_str(), | 490 GetCrtcAction(*displays_[1], &big_mode_, |
| 481 kUngrab, NULL), | 491 gfx::Point(0, small_mode_.size().height())) |
| 492 .c_str(), |
| 493 kUngrab, nullptr), |
| 482 log_.GetActionsAndClear()); | 494 log_.GetActionsAndClear()); |
| 483 } | 495 } |
| 484 | 496 |
| 485 } // namespace test | 497 } // namespace test |
| 486 } // namespace ui | 498 } // namespace ui |
| OLD | NEW |