Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: ui/display/chromeos/display_configurator_unittest.cc

Issue 1456623002: Add support for virtual displays (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test (removing need for friend on DisplayConfigurator) Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/display_configurator.h" 5 #include "ui/display/chromeos/display_configurator.h"
6 6
7 #include "base/memory/scoped_vector.h" 7 #include "base/memory/scoped_vector.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/display/chromeos/test/action_logger_util.h" 10 #include "ui/display/chromeos/test/action_logger_util.h"
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 EXPECT_EQ(modes[15], 330 EXPECT_EQ(modes[15],
331 DisplayConfigurator::FindDisplayModeMatchingSize( 331 DisplayConfigurator::FindDisplayModeMatchingSize(
332 output, gfx::Size(320, 200))); 332 output, gfx::Size(320, 200)));
333 333
334 // No mode found. 334 // No mode found.
335 EXPECT_EQ(NULL, 335 EXPECT_EQ(NULL,
336 DisplayConfigurator::FindDisplayModeMatchingSize( 336 DisplayConfigurator::FindDisplayModeMatchingSize(
337 output, gfx::Size(1440, 900))); 337 output, gfx::Size(1440, 900)));
338 } 338 }
339 339
340 TEST_F(DisplayConfiguratorTest, EnableVirtualDisplay) {
341 InitWithSingleOutput();
342
343 observer_.Reset();
344 const DisplayConfigurator::DisplayStateList* cached =
345 &configurator_.cached_displays();
oshima 2015/11/24 22:19:27 const ... & cached = (I understand this is used i
robert.bradford 2015/11/26 16:29:40 Done. And I addressed the other user of this.
346 ASSERT_EQ(static_cast<size_t>(1), cached->size());
oshima 2015/11/24 22:19:27 1u
robert.bradford 2015/11/26 16:29:40 Done. And some similar ones too.
347 EXPECT_EQ(small_mode_.size(), (*cached)[0]->current_mode()->size());
348
349 // Add virtual display.
350 int64_t virtual_display_id =
351 configurator_.AddVirtualDisplay(big_mode_.size());
352 EXPECT_FALSE(mirroring_controller_.SoftwareMirroringEnabled());
353 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED,
354 configurator_.display_state());
355
356 // Virtual should not trigger addition of added crtc but does change FB
357 // height.
358 const int kVirtualHeight = small_mode_.size().height() +
359 DisplayConfigurator::kVerticalGap +
360 big_mode_.size().height();
361 EXPECT_EQ(
362 JoinActions(
363 kGrab, GetFramebufferAction(
364 gfx::Size(big_mode_.size().width(), kVirtualHeight),
365 &outputs_[0], NULL)
oshima 2015/11/24 22:19:27 nullptr. same for other files
robert.bradford 2015/11/26 16:29:40 Done.
366 .c_str(),
367 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
368 kUngrab, NULL),
369 log_->GetActionsAndClear());
370 EXPECT_EQ(1, observer_.num_changes());
371 ASSERT_EQ(static_cast<size_t>(2), cached->size());
372 EXPECT_EQ(small_mode_.size(), (*cached)[0]->current_mode()->size());
373 EXPECT_EQ(big_mode_.size(), (*cached)[1]->current_mode()->size());
374 EXPECT_EQ(virtual_display_id, (*cached)[1]->display_id());
375
376 // Remove virtual display.
377 observer_.Reset();
378 EXPECT_TRUE(configurator_.RemoveVirtualDisplay(virtual_display_id));
379 EXPECT_EQ(
380 JoinActions(
381 kGrab,
382 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
383 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
384 kUngrab, NULL),
385 log_->GetActionsAndClear());
386 EXPECT_EQ(1, observer_.num_changes());
387 ASSERT_EQ(static_cast<size_t>(1), cached->size());
388 EXPECT_EQ(small_mode_.size(), (*cached)[0]->current_mode()->size());
389 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_SINGLE, configurator_.display_state());
390 }
391
392 TEST_F(DisplayConfiguratorTest, EnableTwoVirtualDisplays) {
393 InitWithSingleOutput();
394
395 observer_.Reset();
396 const DisplayConfigurator::DisplayStateList* cached =
397 &configurator_.cached_displays();
398 ASSERT_EQ(static_cast<size_t>(1), cached->size());
399 EXPECT_EQ(small_mode_.size(), (*cached)[0]->current_mode()->size());
400
401 // Add 1st virtual display.
402 int64_t virtual_display_id_1 =
403 configurator_.AddVirtualDisplay(big_mode_.size());
404 EXPECT_FALSE(mirroring_controller_.SoftwareMirroringEnabled());
405 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED,
406 configurator_.display_state());
407
408 // Virtual should not trigger addition of added crtc but does change FB
409 // height.
410 const int kSingleVirtualHeight = small_mode_.size().height() +
411 DisplayConfigurator::kVerticalGap +
412 big_mode_.size().height();
413 EXPECT_EQ(
414 JoinActions(
415 kGrab, GetFramebufferAction(
416 gfx::Size(big_mode_.size().width(), kSingleVirtualHeight),
417 &outputs_[0], NULL)
418 .c_str(),
419 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
420 kUngrab, NULL),
421 log_->GetActionsAndClear());
422 EXPECT_EQ(1, observer_.num_changes());
423 ASSERT_EQ(static_cast<size_t>(2), cached->size());
424 EXPECT_EQ(small_mode_.size(), (*cached)[0]->current_mode()->size());
425 EXPECT_EQ(big_mode_.size(), (*cached)[1]->current_mode()->size());
426 EXPECT_EQ(virtual_display_id_1, (*cached)[1]->display_id());
427
428 // Add 2nd virtual display
429 int64_t virtual_display_id_2 =
430 configurator_.AddVirtualDisplay(big_mode_.size());
431 EXPECT_FALSE(mirroring_controller_.SoftwareMirroringEnabled());
432 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_MULTI_EXTENDED,
433 configurator_.display_state());
434
435 const int kDualVirtualHeight =
436 small_mode_.size().height() +
437 (DisplayConfigurator::kVerticalGap + big_mode_.size().height()) * 2;
438 EXPECT_EQ(
439 JoinActions(
440 kGrab, GetFramebufferAction(
441 gfx::Size(big_mode_.size().width(), kDualVirtualHeight),
442 &outputs_[0], NULL)
443 .c_str(),
444 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
445 kUngrab, NULL),
446 log_->GetActionsAndClear());
447 EXPECT_EQ(2, observer_.num_changes());
448 ASSERT_EQ(static_cast<size_t>(3), cached->size());
449 EXPECT_EQ(small_mode_.size(), (*cached)[0]->current_mode()->size());
450 EXPECT_EQ(big_mode_.size(), (*cached)[1]->current_mode()->size());
451 EXPECT_EQ(big_mode_.size(), (*cached)[2]->current_mode()->size());
452 EXPECT_EQ(virtual_display_id_1, (*cached)[1]->display_id());
453 EXPECT_EQ(virtual_display_id_2, (*cached)[2]->display_id());
454
455 // Remove 1st virtual display.
456 observer_.Reset();
457 EXPECT_TRUE(configurator_.RemoveVirtualDisplay(virtual_display_id_1));
458 EXPECT_EQ(
459 JoinActions(
460 kGrab, GetFramebufferAction(
461 gfx::Size(big_mode_.size().width(), kSingleVirtualHeight),
462 &outputs_[0], NULL)
463 .c_str(),
464 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
465 kUngrab, NULL),
466 log_->GetActionsAndClear());
467 EXPECT_EQ(1, observer_.num_changes());
468 ASSERT_EQ(static_cast<size_t>(2), cached->size());
469 EXPECT_EQ(small_mode_.size(), (*cached)[0]->current_mode()->size());
470 EXPECT_EQ(big_mode_.size(), (*cached)[1]->current_mode()->size());
471 EXPECT_EQ(virtual_display_id_2, (*cached)[1]->display_id());
472 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED,
473 configurator_.display_state());
474
475 // Remove 2nd virtual display.
476 observer_.Reset();
477 EXPECT_TRUE(configurator_.RemoveVirtualDisplay(virtual_display_id_2));
478 EXPECT_EQ(
479 JoinActions(
480 kGrab,
481 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
482 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
483 kUngrab, NULL),
484 log_->GetActionsAndClear());
485 EXPECT_EQ(1, observer_.num_changes());
486 ASSERT_EQ(static_cast<size_t>(1), cached->size());
487 EXPECT_EQ(small_mode_.size(), (*cached)[0]->current_mode()->size());
488 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_SINGLE, configurator_.display_state());
489 }
490
340 TEST_F(DisplayConfiguratorTest, ConnectSecondOutput) { 491 TEST_F(DisplayConfiguratorTest, ConnectSecondOutput) {
341 InitWithSingleOutput(); 492 InitWithSingleOutput();
342 493
343 // Connect a second output and check that the configurator enters 494 // Connect a second output and check that the configurator enters
344 // extended mode. 495 // extended mode.
345 observer_.Reset(); 496 observer_.Reset();
346 state_controller_.set_state(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED); 497 state_controller_.set_state(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED);
347 UpdateOutputs(2, true); 498 UpdateOutputs(2, true);
348 const int kDualHeight = small_mode_.size().height() + 499 const int kDualHeight = small_mode_.size().height() +
349 DisplayConfigurator::kVerticalGap + 500 DisplayConfigurator::kVerticalGap +
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after
907 InitWithSingleOutput(); 1058 InitWithSingleOutput();
908 const DisplayConfigurator::DisplayStateList* cached = 1059 const DisplayConfigurator::DisplayStateList* cached =
909 &configurator_.cached_displays(); 1060 &configurator_.cached_displays();
910 ASSERT_EQ(static_cast<size_t>(1), cached->size()); 1061 ASSERT_EQ(static_cast<size_t>(1), cached->size());
911 EXPECT_EQ(outputs_[0].current_mode(), (*cached)[0]->current_mode()); 1062 EXPECT_EQ(outputs_[0].current_mode(), (*cached)[0]->current_mode());
912 1063
913 // After connecting a second output, check that it shows up in 1064 // After connecting a second output, check that it shows up in
914 // |cached_displays_| even if an invalid state is requested. 1065 // |cached_displays_| even if an invalid state is requested.
915 state_controller_.set_state(MULTIPLE_DISPLAY_STATE_SINGLE); 1066 state_controller_.set_state(MULTIPLE_DISPLAY_STATE_SINGLE);
916 UpdateOutputs(2, true); 1067 UpdateOutputs(2, true);
917 cached = &configurator_.cached_displays();
918 ASSERT_EQ(static_cast<size_t>(2), cached->size()); 1068 ASSERT_EQ(static_cast<size_t>(2), cached->size());
919 EXPECT_EQ(outputs_[0].current_mode(), (*cached)[0]->current_mode()); 1069 EXPECT_EQ(outputs_[0].current_mode(), (*cached)[0]->current_mode());
920 EXPECT_EQ(outputs_[1].current_mode(), (*cached)[1]->current_mode()); 1070 EXPECT_EQ(outputs_[1].current_mode(), (*cached)[1]->current_mode());
921 } 1071 }
922 1072
923 TEST_F(DisplayConfiguratorTest, PanelFitting) { 1073 TEST_F(DisplayConfiguratorTest, PanelFitting) {
924 // Configure the internal display to support only the big mode and the 1074 // Configure the internal display to support only the big mode and the
925 // external display to support only the small mode. 1075 // external display to support only the small mode.
926 outputs_[0].set_current_mode(&big_mode_); 1076 outputs_[0].set_current_mode(&big_mode_);
927 outputs_[0].set_native_mode(&big_mode_); 1077 outputs_[0].set_native_mode(&big_mode_);
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
1464 GetFramebufferAction(small_mode_.size(), &outputs_[0], 1614 GetFramebufferAction(small_mode_.size(), &outputs_[0],
1465 nullptr).c_str(), 1615 nullptr).c_str(),
1466 GetCrtcAction(outputs_[0], &small_mode_, 1616 GetCrtcAction(outputs_[0], &small_mode_,
1467 gfx::Point(0, 0)).c_str(), 1617 gfx::Point(0, 0)).c_str(),
1468 kUngrab, NULL), 1618 kUngrab, NULL),
1469 log_->GetActionsAndClear()); 1619 log_->GetActionsAndClear());
1470 } 1620 }
1471 1621
1472 } // namespace test 1622 } // namespace test
1473 } // namespace ui 1623 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698