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

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

Issue 886103002: Make SetDisplayPower() take a callback to signal completion (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed nits Created 5 years, 10 months 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
« no previous file with comments | « ui/display/chromeos/display_configurator.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 } 106 }
107 107
108 private: 108 private:
109 bool software_mirroring_enabled_; 109 bool software_mirroring_enabled_;
110 110
111 DISALLOW_COPY_AND_ASSIGN(TestMirroringController); 111 DISALLOW_COPY_AND_ASSIGN(TestMirroringController);
112 }; 112 };
113 113
114 class DisplayConfiguratorTest : public testing::Test { 114 class DisplayConfiguratorTest : public testing::Test {
115 public: 115 public:
116 enum CallbackResult {
117 CALLBACK_FAILURE,
118 CALLBACK_SUCCESS,
119 CALLBACK_NOT_CALLED,
120 };
121
116 DisplayConfiguratorTest() 122 DisplayConfiguratorTest()
117 : small_mode_(gfx::Size(1366, 768), false, 60.0f), 123 : small_mode_(gfx::Size(1366, 768), false, 60.0f),
118 big_mode_(gfx::Size(2560, 1600), false, 60.0f), 124 big_mode_(gfx::Size(2560, 1600), false, 60.0f),
119 observer_(&configurator_), 125 observer_(&configurator_),
120 test_api_(&configurator_) {} 126 test_api_(&configurator_),
127 callback_result_(CALLBACK_NOT_CALLED) {}
121 ~DisplayConfiguratorTest() override {} 128 ~DisplayConfiguratorTest() override {}
122 129
123 void SetUp() override { 130 void SetUp() override {
124 log_.reset(new ActionLogger()); 131 log_.reset(new ActionLogger());
125 132
126 native_display_delegate_ = new TestNativeDisplayDelegate(log_.get()); 133 native_display_delegate_ = new TestNativeDisplayDelegate(log_.get());
127 configurator_.SetDelegateForTesting( 134 configurator_.SetDelegateForTesting(
128 scoped_ptr<NativeDisplayDelegate>(native_display_delegate_)); 135 scoped_ptr<NativeDisplayDelegate>(native_display_delegate_));
129 136
130 configurator_.set_state_controller(&state_controller_); 137 configurator_.set_state_controller(&state_controller_);
(...skipping 15 matching lines...) Expand all
146 o->set_native_mode(&big_mode_); 153 o->set_native_mode(&big_mode_);
147 modes.push_back(&big_mode_); 154 modes.push_back(&big_mode_);
148 o->set_modes(modes); 155 o->set_modes(modes);
149 o->set_type(DISPLAY_CONNECTION_TYPE_HDMI); 156 o->set_type(DISPLAY_CONNECTION_TYPE_HDMI);
150 o->set_is_aspect_preserving_scaling(true); 157 o->set_is_aspect_preserving_scaling(true);
151 o->set_display_id(456); 158 o->set_display_id(456);
152 159
153 UpdateOutputs(2, false); 160 UpdateOutputs(2, false);
154 } 161 }
155 162
163 void OnConfiguredCallback(bool status) {
164 callback_result_ = (status ? CALLBACK_SUCCESS : CALLBACK_FAILURE);
165 }
166
156 // Predefined modes that can be used by outputs. 167 // Predefined modes that can be used by outputs.
157 const DisplayMode small_mode_; 168 const DisplayMode small_mode_;
158 const DisplayMode big_mode_; 169 const DisplayMode big_mode_;
159 170
160 protected: 171 protected:
161 // Configures |native_display_delegate_| to return the first |num_outputs| 172 // Configures |native_display_delegate_| to return the first |num_outputs|
162 // entries from 173 // entries from
163 // |outputs_|. If |send_events| is true, also sends screen-change and 174 // |outputs_|. If |send_events| is true, also sends screen-change and
164 // output-change events to |configurator_| and triggers the configure 175 // output-change events to |configurator_| and triggers the configure
165 // timeout if one was scheduled. 176 // timeout if one was scheduled.
(...skipping 19 matching lines...) Expand all
185 configurator_.ForceInitialConfigure(0); 196 configurator_.ForceInitialConfigure(0);
186 EXPECT_EQ(JoinActions(kInitXRandR, kGrab, 197 EXPECT_EQ(JoinActions(kInitXRandR, kGrab,
187 GetFramebufferAction(small_mode_.size(), &outputs_[0], 198 GetFramebufferAction(small_mode_.size(), &outputs_[0],
188 NULL).c_str(), 199 NULL).c_str(),
189 GetCrtcAction(outputs_[0], &small_mode_, 200 GetCrtcAction(outputs_[0], &small_mode_,
190 gfx::Point(0, 0)).c_str(), 201 gfx::Point(0, 0)).c_str(),
191 kForceDPMS, kUngrab, NULL), 202 kForceDPMS, kUngrab, NULL),
192 log_->GetActionsAndClear()); 203 log_->GetActionsAndClear());
193 } 204 }
194 205
206 CallbackResult PopCallbackResult() {
207 CallbackResult result = callback_result_;
208 callback_result_ = CALLBACK_NOT_CALLED;
209 return result;
210 }
211
195 base::MessageLoop message_loop_; 212 base::MessageLoop message_loop_;
196 TestStateController state_controller_; 213 TestStateController state_controller_;
197 TestMirroringController mirroring_controller_; 214 TestMirroringController mirroring_controller_;
198 DisplayConfigurator configurator_; 215 DisplayConfigurator configurator_;
199 TestObserver observer_; 216 TestObserver observer_;
200 scoped_ptr<ActionLogger> log_; 217 scoped_ptr<ActionLogger> log_;
201 TestNativeDisplayDelegate* native_display_delegate_; // not owned 218 TestNativeDisplayDelegate* native_display_delegate_; // not owned
202 DisplayConfigurator::TestApi test_api_; 219 DisplayConfigurator::TestApi test_api_;
203 220
204 TestDisplaySnapshot outputs_[2]; 221 TestDisplaySnapshot outputs_[2];
205 222
223 CallbackResult callback_result_;
224
206 private: 225 private:
207 DISALLOW_COPY_AND_ASSIGN(DisplayConfiguratorTest); 226 DISALLOW_COPY_AND_ASSIGN(DisplayConfiguratorTest);
208 }; 227 };
209 228
210 } // namespace 229 } // namespace
211 230
212 TEST_F(DisplayConfiguratorTest, FindDisplayModeMatchingSize) { 231 TEST_F(DisplayConfiguratorTest, FindDisplayModeMatchingSize) {
213 ScopedVector<const DisplayMode> modes; 232 ScopedVector<const DisplayMode> modes;
214 233
215 // Fields are width, height, interlaced, refresh rate. 234 // Fields are width, height, interlaced, refresh rate.
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 NULL), 441 NULL),
423 log_->GetActionsAndClear()); 442 log_->GetActionsAndClear());
424 EXPECT_FALSE(mirroring_controller_.SoftwareMirroringEnabled()); 443 EXPECT_FALSE(mirroring_controller_.SoftwareMirroringEnabled());
425 EXPECT_EQ(1, observer_.num_changes()); 444 EXPECT_EQ(1, observer_.num_changes());
426 445
427 // Turning off the internal display should switch the external display to 446 // Turning off the internal display should switch the external display to
428 // its native mode. 447 // its native mode.
429 observer_.Reset(); 448 observer_.Reset();
430 configurator_.SetDisplayPower( 449 configurator_.SetDisplayPower(
431 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON, 450 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON,
432 DisplayConfigurator::kSetDisplayPowerNoFlags); 451 DisplayConfigurator::kSetDisplayPowerNoFlags,
452 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
453 base::Unretained(this)));
454 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
433 EXPECT_EQ( 455 EXPECT_EQ(
434 JoinActions( 456 JoinActions(
435 kGrab, 457 kGrab,
436 GetFramebufferAction(big_mode_.size(), &outputs_[0], &outputs_[1]) 458 GetFramebufferAction(big_mode_.size(), &outputs_[0], &outputs_[1])
437 .c_str(), 459 .c_str(),
438 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(), 460 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
439 GetCrtcAction(outputs_[1], &big_mode_, gfx::Point(0, 0)).c_str(), 461 GetCrtcAction(outputs_[1], &big_mode_, gfx::Point(0, 0)).c_str(),
440 kForceDPMS, 462 kForceDPMS,
441 kUngrab, 463 kUngrab,
442 NULL), 464 NULL),
443 log_->GetActionsAndClear()); 465 log_->GetActionsAndClear());
444 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_SINGLE, configurator_.display_state()); 466 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_SINGLE, configurator_.display_state());
445 EXPECT_EQ(1, observer_.num_changes()); 467 EXPECT_EQ(1, observer_.num_changes());
446 468
447 // When all displays are turned off, the framebuffer should switch back 469 // When all displays are turned off, the framebuffer should switch back
448 // to the mirrored size. 470 // to the mirrored size.
449 observer_.Reset(); 471 observer_.Reset();
450 configurator_.SetDisplayPower(chromeos::DISPLAY_POWER_ALL_OFF, 472 configurator_.SetDisplayPower(
451 DisplayConfigurator::kSetDisplayPowerNoFlags); 473 chromeos::DISPLAY_POWER_ALL_OFF,
474 DisplayConfigurator::kSetDisplayPowerNoFlags,
475 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
476 base::Unretained(this)));
477 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
452 EXPECT_EQ( 478 EXPECT_EQ(
453 JoinActions(kGrab, 479 JoinActions(kGrab,
454 GetFramebufferAction( 480 GetFramebufferAction(
455 small_mode_.size(), &outputs_[0], &outputs_[1]).c_str(), 481 small_mode_.size(), &outputs_[0], &outputs_[1]).c_str(),
456 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(), 482 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
457 GetCrtcAction(outputs_[1], NULL, gfx::Point(0, 0)).c_str(), 483 GetCrtcAction(outputs_[1], NULL, gfx::Point(0, 0)).c_str(),
458 kUngrab, 484 kUngrab,
459 NULL), 485 NULL),
460 log_->GetActionsAndClear()); 486 log_->GetActionsAndClear());
461 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_MIRROR, configurator_.display_state()); 487 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_MIRROR, configurator_.display_state());
462 EXPECT_FALSE(mirroring_controller_.SoftwareMirroringEnabled()); 488 EXPECT_FALSE(mirroring_controller_.SoftwareMirroringEnabled());
463 EXPECT_EQ(1, observer_.num_changes()); 489 EXPECT_EQ(1, observer_.num_changes());
464 490
465 // Turn all displays on and check that mirroring is still used. 491 // Turn all displays on and check that mirroring is still used.
466 observer_.Reset(); 492 observer_.Reset();
467 configurator_.SetDisplayPower(chromeos::DISPLAY_POWER_ALL_ON, 493 configurator_.SetDisplayPower(
468 DisplayConfigurator::kSetDisplayPowerNoFlags); 494 chromeos::DISPLAY_POWER_ALL_ON,
495 DisplayConfigurator::kSetDisplayPowerNoFlags,
496 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
497 base::Unretained(this)));
498 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
469 EXPECT_EQ( 499 EXPECT_EQ(
470 JoinActions( 500 JoinActions(
471 kGrab, 501 kGrab,
472 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1]) 502 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1])
473 .c_str(), 503 .c_str(),
474 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 504 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
475 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(), 505 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(),
476 kForceDPMS, 506 kForceDPMS,
477 kUngrab, 507 kUngrab,
478 NULL), 508 NULL),
(...skipping 29 matching lines...) Expand all
508 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, 538 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED,
509 configurator_.display_state()); 539 configurator_.display_state());
510 EXPECT_TRUE(mirroring_controller_.SoftwareMirroringEnabled()); 540 EXPECT_TRUE(mirroring_controller_.SoftwareMirroringEnabled());
511 EXPECT_EQ(1, observer_.num_changes()); 541 EXPECT_EQ(1, observer_.num_changes());
512 542
513 // Turning off the internal display should switch the external display to 543 // Turning off the internal display should switch the external display to
514 // its native mode. 544 // its native mode.
515 observer_.Reset(); 545 observer_.Reset();
516 configurator_.SetDisplayPower( 546 configurator_.SetDisplayPower(
517 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON, 547 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON,
518 DisplayConfigurator::kSetDisplayPowerNoFlags); 548 DisplayConfigurator::kSetDisplayPowerNoFlags,
549 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
550 base::Unretained(this)));
551 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
519 EXPECT_EQ( 552 EXPECT_EQ(
520 JoinActions( 553 JoinActions(
521 kGrab, 554 kGrab,
522 GetFramebufferAction(big_mode_.size(), &outputs_[0], &outputs_[1]) 555 GetFramebufferAction(big_mode_.size(), &outputs_[0], &outputs_[1])
523 .c_str(), 556 .c_str(),
524 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(), 557 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
525 GetCrtcAction(outputs_[1], &big_mode_, gfx::Point(0, 0)).c_str(), 558 GetCrtcAction(outputs_[1], &big_mode_, gfx::Point(0, 0)).c_str(),
526 kForceDPMS, 559 kForceDPMS,
527 kUngrab, 560 kUngrab,
528 NULL), 561 NULL),
529 log_->GetActionsAndClear()); 562 log_->GetActionsAndClear());
530 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_SINGLE, configurator_.display_state()); 563 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_SINGLE, configurator_.display_state());
531 EXPECT_FALSE(mirroring_controller_.SoftwareMirroringEnabled()); 564 EXPECT_FALSE(mirroring_controller_.SoftwareMirroringEnabled());
532 EXPECT_EQ(1, observer_.num_changes()); 565 EXPECT_EQ(1, observer_.num_changes());
533 566
534 // When all displays are turned off, the framebuffer should switch back 567 // When all displays are turned off, the framebuffer should switch back
535 // to the extended + software mirroring. 568 // to the extended + software mirroring.
536 observer_.Reset(); 569 observer_.Reset();
537 configurator_.SetDisplayPower(chromeos::DISPLAY_POWER_ALL_OFF, 570 configurator_.SetDisplayPower(
538 DisplayConfigurator::kSetDisplayPowerNoFlags); 571 chromeos::DISPLAY_POWER_ALL_OFF,
572 DisplayConfigurator::kSetDisplayPowerNoFlags,
573 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
574 base::Unretained(this)));
575 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
539 EXPECT_EQ( 576 EXPECT_EQ(
540 JoinActions( 577 JoinActions(
541 kGrab, 578 kGrab,
542 GetFramebufferAction(gfx::Size(big_mode_.size().width(), kDualHeight), 579 GetFramebufferAction(gfx::Size(big_mode_.size().width(), kDualHeight),
543 &outputs_[0], 580 &outputs_[0],
544 &outputs_[1]).c_str(), 581 &outputs_[1]).c_str(),
545 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(), 582 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
546 GetCrtcAction(outputs_[1], 583 GetCrtcAction(outputs_[1],
547 NULL, 584 NULL,
548 gfx::Point(0, 585 gfx::Point(0,
549 small_mode_.size().height() + 586 small_mode_.size().height() +
550 DisplayConfigurator::kVerticalGap)) 587 DisplayConfigurator::kVerticalGap))
551 .c_str(), 588 .c_str(),
552 kUngrab, 589 kUngrab,
553 NULL), 590 NULL),
554 log_->GetActionsAndClear()); 591 log_->GetActionsAndClear());
555 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED, 592 EXPECT_EQ(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED,
556 configurator_.display_state()); 593 configurator_.display_state());
557 EXPECT_TRUE(mirroring_controller_.SoftwareMirroringEnabled()); 594 EXPECT_TRUE(mirroring_controller_.SoftwareMirroringEnabled());
558 EXPECT_EQ(1, observer_.num_changes()); 595 EXPECT_EQ(1, observer_.num_changes());
559 596
560 // Turn all displays on and check that mirroring is still used. 597 // Turn all displays on and check that mirroring is still used.
561 observer_.Reset(); 598 observer_.Reset();
562 configurator_.SetDisplayPower(chromeos::DISPLAY_POWER_ALL_ON, 599 configurator_.SetDisplayPower(
563 DisplayConfigurator::kSetDisplayPowerNoFlags); 600 chromeos::DISPLAY_POWER_ALL_ON,
601 DisplayConfigurator::kSetDisplayPowerNoFlags,
602 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
603 base::Unretained(this)));
604 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
564 EXPECT_EQ( 605 EXPECT_EQ(
565 JoinActions( 606 JoinActions(
566 kGrab, 607 kGrab,
567 GetFramebufferAction(gfx::Size(big_mode_.size().width(), kDualHeight), 608 GetFramebufferAction(gfx::Size(big_mode_.size().width(), kDualHeight),
568 &outputs_[0], 609 &outputs_[0],
569 &outputs_[1]).c_str(), 610 &outputs_[1]).c_str(),
570 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 611 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
571 GetCrtcAction(outputs_[1], 612 GetCrtcAction(outputs_[1],
572 &big_mode_, 613 &big_mode_,
573 gfx::Point(0, 614 gfx::Point(0,
(...skipping 25 matching lines...) Expand all
599 kGrab, 640 kGrab,
600 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(), 641 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
601 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 642 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
602 kForceDPMS, 643 kForceDPMS,
603 kUngrab, 644 kUngrab,
604 NULL), 645 NULL),
605 log_->GetActionsAndClear()); 646 log_->GetActionsAndClear());
606 647
607 // Now turn the display off before suspending and check that the 648 // Now turn the display off before suspending and check that the
608 // configurator turns it back on and syncs with the server. 649 // configurator turns it back on and syncs with the server.
609 configurator_.SetDisplayPower(chromeos::DISPLAY_POWER_ALL_OFF, 650 configurator_.SetDisplayPower(
610 DisplayConfigurator::kSetDisplayPowerNoFlags); 651 chromeos::DISPLAY_POWER_ALL_OFF,
652 DisplayConfigurator::kSetDisplayPowerNoFlags,
653 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
654 base::Unretained(this)));
655 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
611 EXPECT_EQ( 656 EXPECT_EQ(
612 JoinActions( 657 JoinActions(
613 kGrab, 658 kGrab,
614 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(), 659 GetFramebufferAction(small_mode_.size(), &outputs_[0], NULL).c_str(),
615 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(), 660 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
616 kUngrab, 661 kUngrab,
617 NULL), 662 NULL),
618 log_->GetActionsAndClear()); 663 log_->GetActionsAndClear());
619 664
620 configurator_.SuspendDisplays(); 665 configurator_.SuspendDisplays();
(...skipping 28 matching lines...) Expand all
649 JoinActions( 694 JoinActions(
650 kGrab, 695 kGrab,
651 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1]) 696 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1])
652 .c_str(), 697 .c_str(),
653 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 698 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
654 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(), 699 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(),
655 kUngrab, 700 kUngrab,
656 NULL), 701 NULL),
657 log_->GetActionsAndClear()); 702 log_->GetActionsAndClear());
658 703
659 configurator_.SetDisplayPower(chromeos::DISPLAY_POWER_ALL_OFF, 704 configurator_.SetDisplayPower(
660 DisplayConfigurator::kSetDisplayPowerNoFlags); 705 chromeos::DISPLAY_POWER_ALL_OFF,
706 DisplayConfigurator::kSetDisplayPowerNoFlags,
707 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
708 base::Unretained(this)));
709 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
661 EXPECT_EQ( 710 EXPECT_EQ(
662 JoinActions(kGrab, 711 JoinActions(kGrab,
663 GetFramebufferAction( 712 GetFramebufferAction(
664 small_mode_.size(), &outputs_[0], &outputs_[1]).c_str(), 713 small_mode_.size(), &outputs_[0], &outputs_[1]).c_str(),
665 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(), 714 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
666 GetCrtcAction(outputs_[1], NULL, gfx::Point(0, 0)).c_str(), 715 GetCrtcAction(outputs_[1], NULL, gfx::Point(0, 0)).c_str(),
667 kUngrab, 716 kUngrab,
668 NULL), 717 NULL),
669 log_->GetActionsAndClear()); 718 log_->GetActionsAndClear());
670 719
(...skipping 20 matching lines...) Expand all
691 UpdateOutputs(0, false); 740 UpdateOutputs(0, false);
692 EXPECT_EQ(kNoActions, log_->GetActionsAndClear()); 741 EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
693 configurator_.Init(false); 742 configurator_.Init(false);
694 EXPECT_EQ(kNoActions, log_->GetActionsAndClear()); 743 EXPECT_EQ(kNoActions, log_->GetActionsAndClear());
695 configurator_.ForceInitialConfigure(0); 744 configurator_.ForceInitialConfigure(0);
696 EXPECT_EQ(JoinActions(kInitXRandR, kGrab, kForceDPMS, kUngrab, NULL), 745 EXPECT_EQ(JoinActions(kInitXRandR, kGrab, kForceDPMS, kUngrab, NULL),
697 log_->GetActionsAndClear()); 746 log_->GetActionsAndClear());
698 747
699 // Not much should happen when the display power state is changed while 748 // Not much should happen when the display power state is changed while
700 // no displays are connected. 749 // no displays are connected.
701 configurator_.SetDisplayPower(chromeos::DISPLAY_POWER_ALL_OFF, 750 configurator_.SetDisplayPower(
702 DisplayConfigurator::kSetDisplayPowerNoFlags); 751 chromeos::DISPLAY_POWER_ALL_OFF,
752 DisplayConfigurator::kSetDisplayPowerNoFlags,
753 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
754 base::Unretained(this)));
755 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
703 EXPECT_EQ(JoinActions(kGrab, kUngrab, NULL), log_->GetActionsAndClear()); 756 EXPECT_EQ(JoinActions(kGrab, kUngrab, NULL), log_->GetActionsAndClear());
704 configurator_.SetDisplayPower(chromeos::DISPLAY_POWER_ALL_ON, 757 configurator_.SetDisplayPower(
705 DisplayConfigurator::kSetDisplayPowerNoFlags); 758 chromeos::DISPLAY_POWER_ALL_ON,
759 DisplayConfigurator::kSetDisplayPowerNoFlags,
760 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
761 base::Unretained(this)));
762 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
706 EXPECT_EQ(JoinActions(kGrab, kForceDPMS, kUngrab, NULL), 763 EXPECT_EQ(JoinActions(kGrab, kForceDPMS, kUngrab, NULL),
707 log_->GetActionsAndClear()); 764 log_->GetActionsAndClear());
708 765
709 // Connect an external display and check that it's configured correctly. 766 // Connect an external display and check that it's configured correctly.
710 outputs_[0].set_current_mode(outputs_[1].current_mode()); 767 outputs_[0].set_current_mode(outputs_[1].current_mode());
711 outputs_[0].set_native_mode(outputs_[1].native_mode()); 768 outputs_[0].set_native_mode(outputs_[1].native_mode());
712 outputs_[0].set_modes(outputs_[1].modes()); 769 outputs_[0].set_modes(outputs_[1].modes());
713 outputs_[0].set_type(outputs_[1].type()); 770 outputs_[0].set_type(outputs_[1].type());
714 771
715 UpdateOutputs(1, true); 772 UpdateOutputs(1, true);
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 // Start out with two displays in extended mode. 1121 // Start out with two displays in extended mode.
1065 state_controller_.set_state(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED); 1122 state_controller_.set_state(MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED);
1066 configurator_.Init(false); 1123 configurator_.Init(false);
1067 configurator_.ForceInitialConfigure(0); 1124 configurator_.ForceInitialConfigure(0);
1068 log_->GetActionsAndClear(); 1125 log_->GetActionsAndClear();
1069 observer_.Reset(); 1126 observer_.Reset();
1070 1127
1071 // Turn off the internal display, simulating docked mode. 1128 // Turn off the internal display, simulating docked mode.
1072 configurator_.SetDisplayPower( 1129 configurator_.SetDisplayPower(
1073 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON, 1130 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON,
1074 DisplayConfigurator::kSetDisplayPowerNoFlags); 1131 DisplayConfigurator::kSetDisplayPowerNoFlags,
1132 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
1133 base::Unretained(this)));
1134 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
1075 EXPECT_EQ(1, observer_.num_changes()); 1135 EXPECT_EQ(1, observer_.num_changes());
1076 EXPECT_EQ(0, observer_.num_failures()); 1136 EXPECT_EQ(0, observer_.num_failures());
1077 log_->GetActionsAndClear(); 1137 log_->GetActionsAndClear();
1078 1138
1079 // Make all subsequent configuration requests fail and try to turn the 1139 // Make all subsequent configuration requests fail and try to turn the
1080 // internal display back on. 1140 // internal display back on.
1081 native_display_delegate_->set_max_configurable_pixels(1); 1141 native_display_delegate_->set_max_configurable_pixels(1);
1082 configurator_.SetDisplayPower(chromeos::DISPLAY_POWER_ALL_ON, 1142 configurator_.SetDisplayPower(
1083 DisplayConfigurator::kSetDisplayPowerNoFlags); 1143 chromeos::DISPLAY_POWER_ALL_ON,
1144 DisplayConfigurator::kSetDisplayPowerNoFlags,
1145 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
1146 base::Unretained(this)));
1147 EXPECT_EQ(CALLBACK_FAILURE, PopCallbackResult());
1084 EXPECT_EQ(1, observer_.num_changes()); 1148 EXPECT_EQ(1, observer_.num_changes());
1085 EXPECT_EQ(1, observer_.num_failures()); 1149 EXPECT_EQ(1, observer_.num_failures());
1086 log_->GetActionsAndClear(); 1150 log_->GetActionsAndClear();
1087 1151
1088 // Simulate the external display getting disconnected and check that the 1152 // Simulate the external display getting disconnected and check that the
1089 // internal display is turned on (i.e. DISPLAY_POWER_ALL_ON is used) rather 1153 // internal display is turned on (i.e. DISPLAY_POWER_ALL_ON is used) rather
1090 // than the earlier DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON state. 1154 // than the earlier DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON state.
1091 native_display_delegate_->set_max_configurable_pixels(0); 1155 native_display_delegate_->set_max_configurable_pixels(0);
1092 UpdateOutputs(1, true); 1156 UpdateOutputs(1, true);
1093 EXPECT_EQ(JoinActions(kGrab, GetFramebufferAction(small_mode_.size(), 1157 EXPECT_EQ(JoinActions(kGrab, GetFramebufferAction(small_mode_.size(),
(...skipping 11 matching lines...) Expand all
1105 // Start out with two displays in mirrored mode. 1169 // Start out with two displays in mirrored mode.
1106 state_controller_.set_state(MULTIPLE_DISPLAY_STATE_DUAL_MIRROR); 1170 state_controller_.set_state(MULTIPLE_DISPLAY_STATE_DUAL_MIRROR);
1107 configurator_.Init(false); 1171 configurator_.Init(false);
1108 configurator_.ForceInitialConfigure(0); 1172 configurator_.ForceInitialConfigure(0);
1109 log_->GetActionsAndClear(); 1173 log_->GetActionsAndClear();
1110 observer_.Reset(); 1174 observer_.Reset();
1111 1175
1112 // Turn off the internal display, simulating docked mode. 1176 // Turn off the internal display, simulating docked mode.
1113 configurator_.SetDisplayPower( 1177 configurator_.SetDisplayPower(
1114 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON, 1178 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON,
1115 DisplayConfigurator::kSetDisplayPowerNoFlags); 1179 DisplayConfigurator::kSetDisplayPowerNoFlags,
1180 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
1181 base::Unretained(this)));
1182 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
1116 EXPECT_EQ(1, observer_.num_changes()); 1183 EXPECT_EQ(1, observer_.num_changes());
1117 EXPECT_EQ(0, observer_.num_failures()); 1184 EXPECT_EQ(0, observer_.num_failures());
1118 EXPECT_EQ( 1185 EXPECT_EQ(
1119 JoinActions( 1186 JoinActions(
1120 kGrab, 1187 kGrab,
1121 GetFramebufferAction(big_mode_.size(), &outputs_[0], &outputs_[1]) 1188 GetFramebufferAction(big_mode_.size(), &outputs_[0], &outputs_[1])
1122 .c_str(), 1189 .c_str(),
1123 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(), 1190 GetCrtcAction(outputs_[0], NULL, gfx::Point(0, 0)).c_str(),
1124 GetCrtcAction(outputs_[1], &big_mode_, gfx::Point(0, 0)).c_str(), 1191 GetCrtcAction(outputs_[1], &big_mode_, gfx::Point(0, 0)).c_str(),
1125 kForceDPMS, 1192 kForceDPMS,
1126 kUngrab, 1193 kUngrab,
1127 NULL), 1194 NULL),
1128 log_->GetActionsAndClear()); 1195 log_->GetActionsAndClear());
1129 1196
1130 // Suspend and resume the system. Resuming should post a task to restore the 1197 // Suspend and resume the system. Resuming should post a task to restore the
1131 // previous power state, additionally forcing a probe. 1198 // previous power state, additionally forcing a probe.
1132 configurator_.SuspendDisplays(); 1199 configurator_.SuspendDisplays();
1133 configurator_.ResumeDisplays(); 1200 configurator_.ResumeDisplays();
1134 1201
1135 // Before the task runs, exit docked mode. 1202 // Before the task runs, exit docked mode.
1136 configurator_.SetDisplayPower(chromeos::DISPLAY_POWER_ALL_ON, 1203 configurator_.SetDisplayPower(
1137 DisplayConfigurator::kSetDisplayPowerNoFlags); 1204 chromeos::DISPLAY_POWER_ALL_ON,
1205 DisplayConfigurator::kSetDisplayPowerNoFlags,
1206 base::Bind(&DisplayConfiguratorTest::OnConfiguredCallback,
1207 base::Unretained(this)));
1208 EXPECT_EQ(CALLBACK_SUCCESS, PopCallbackResult());
1138 EXPECT_EQ(2, observer_.num_changes()); 1209 EXPECT_EQ(2, observer_.num_changes());
1139 EXPECT_EQ(0, observer_.num_failures()); 1210 EXPECT_EQ(0, observer_.num_failures());
1140 EXPECT_EQ( 1211 EXPECT_EQ(
1141 JoinActions( 1212 JoinActions(
1142 kGrab, 1213 kGrab,
1143 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1]) 1214 GetFramebufferAction(small_mode_.size(), &outputs_[0], &outputs_[1])
1144 .c_str(), 1215 .c_str(),
1145 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(), 1216 GetCrtcAction(outputs_[0], &small_mode_, gfx::Point(0, 0)).c_str(),
1146 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(), 1217 GetCrtcAction(outputs_[1], &small_mode_, gfx::Point(0, 0)).c_str(),
1147 kForceDPMS, 1218 kForceDPMS,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1179 GetFramebufferAction(small_mode_.size(), &outputs_[0], 1250 GetFramebufferAction(small_mode_.size(), &outputs_[0],
1180 nullptr).c_str(), 1251 nullptr).c_str(),
1181 GetCrtcAction(outputs_[0], &small_mode_, 1252 GetCrtcAction(outputs_[0], &small_mode_,
1182 gfx::Point(0, 0)).c_str(), 1253 gfx::Point(0, 0)).c_str(),
1183 kUngrab, NULL), 1254 kUngrab, NULL),
1184 log_->GetActionsAndClear()); 1255 log_->GetActionsAndClear());
1185 } 1256 }
1186 1257
1187 } // namespace test 1258 } // namespace test
1188 } // namespace ui 1259 } // namespace ui
OLDNEW
« no previous file with comments | « ui/display/chromeos/display_configurator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698