| Index: chromeos/display/output_configurator_unittest.cc
|
| diff --git a/chromeos/display/output_configurator_unittest.cc b/chromeos/display/output_configurator_unittest.cc
|
| index 0749399af882a094c92e719c82017740865c5c5e..239a585dc1813c80f627ebd290546f0916b8b5e1 100644
|
| --- a/chromeos/display/output_configurator_unittest.cc
|
| +++ b/chromeos/display/output_configurator_unittest.cc
|
| @@ -192,6 +192,57 @@ class TestDelegate : public OutputConfigurator::Delegate {
|
| DISALLOW_COPY_AND_ASSIGN(TestDelegate);
|
| };
|
|
|
| +class TestObserver : public OutputConfigurator::Observer {
|
| + public:
|
| + explicit TestObserver(OutputConfigurator* configurator)
|
| + : configurator_(configurator) {
|
| + Reset();
|
| + configurator_->AddObserver(this);
|
| + }
|
| + ~TestObserver() {
|
| + configurator_->RemoveObserver(this);
|
| + }
|
| +
|
| + int num_changes() const { return num_changes_; }
|
| + int num_failures() const { return num_failures_; }
|
| + std::vector<OutputConfigurator::OutputSnapshot> latest_outputs() const {
|
| + return latest_outputs_;
|
| + }
|
| + OutputState latest_failed_state() const { return latest_failed_state_; }
|
| +
|
| + void Reset() {
|
| + num_changes_ = 0;
|
| + num_failures_ = 0;
|
| + latest_outputs_.clear();
|
| + latest_failed_state_ = STATE_INVALID;
|
| + }
|
| +
|
| + // OutputConfigurator::Observer overrides:
|
| + virtual void OnDisplayModeChanged(
|
| + const std::vector<OutputConfigurator::OutputSnapshot>& outputs) OVERRIDE {
|
| + num_changes_++;
|
| + latest_outputs_ = outputs;
|
| + }
|
| +
|
| + virtual void OnDisplayModeChangeFailed(OutputState failed_new_state) {
|
| + num_failures_++;
|
| + latest_failed_state_ = failed_new_state;
|
| + }
|
| +
|
| + private:
|
| + OutputConfigurator* configurator_; // Not owned.
|
| +
|
| + // Number of times that OnDisplayMode*() has been called.
|
| + int num_changes_;
|
| + int num_failures_;
|
| +
|
| + // Parameters most recently passed to OnDisplayMode*().
|
| + std::vector<OutputConfigurator::OutputSnapshot> latest_outputs_;
|
| + OutputState latest_failed_state_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestObserver);
|
| +};
|
| +
|
| class TestStateController : public OutputConfigurator::StateController {
|
| public:
|
| TestStateController() : state_(STATE_DUAL_EXTENDED) {}
|
| @@ -238,7 +289,8 @@ class TestMirroringController
|
| class OutputConfiguratorTest : public testing::Test {
|
| public:
|
| OutputConfiguratorTest()
|
| - : test_api_(&configurator_, TestDelegate::kXRandREventBase) {}
|
| + : observer_(&configurator_),
|
| + test_api_(&configurator_, TestDelegate::kXRandREventBase) {}
|
| virtual ~OutputConfiguratorTest() {}
|
|
|
| virtual void SetUp() OVERRIDE {
|
| @@ -347,6 +399,7 @@ class OutputConfiguratorTest : public testing::Test {
|
| TestStateController state_controller_;
|
| TestMirroringController mirroring_controller_;
|
| OutputConfigurator configurator_;
|
| + TestObserver observer_;
|
| TestDelegate* delegate_; // not owned
|
| OutputConfigurator::TestApi test_api_;
|
|
|
| @@ -466,6 +519,7 @@ TEST_F(OutputConfiguratorTest, SetDisplayPower) {
|
|
|
| // Turning off the internal display should switch the external display to
|
| // its native mode.
|
| + observer_.Reset();
|
| configurator_.SetDisplayPower(DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON,
|
| OutputConfigurator::kSetDisplayPowerNoFlags);
|
| EXPECT_EQ(JoinActions(kGrab,
|
| @@ -478,9 +532,11 @@ TEST_F(OutputConfiguratorTest, SetDisplayPower) {
|
| kForceDPMS, kUngrab, NULL),
|
| delegate_->GetActionsAndClear());
|
| EXPECT_EQ(STATE_SINGLE, configurator_.output_state());
|
| + EXPECT_EQ(1, observer_.num_changes());
|
|
|
| // When all displays are turned off, the framebuffer should switch back
|
| // to the mirrored size.
|
| + observer_.Reset();
|
| configurator_.SetDisplayPower(DISPLAY_POWER_ALL_OFF,
|
| OutputConfigurator::kSetDisplayPowerNoFlags);
|
| EXPECT_EQ(JoinActions(kGrab,
|
| @@ -493,9 +549,11 @@ TEST_F(OutputConfiguratorTest, SetDisplayPower) {
|
| kUngrab, NULL),
|
| delegate_->GetActionsAndClear());
|
| EXPECT_EQ(STATE_DUAL_MIRROR, configurator_.output_state());
|
| + EXPECT_EQ(1, observer_.num_changes());
|
| EXPECT_FALSE(mirroring_controller_.software_mirroring_enabled());
|
|
|
| // Turn all displays on and check that mirroring is still used.
|
| + observer_.Reset();
|
| configurator_.SetDisplayPower(DISPLAY_POWER_ALL_ON,
|
| OutputConfigurator::kSetDisplayPowerNoFlags);
|
| EXPECT_EQ(JoinActions(kGrab,
|
| @@ -508,6 +566,7 @@ TEST_F(OutputConfiguratorTest, SetDisplayPower) {
|
| kForceDPMS, kUngrab, NULL),
|
| delegate_->GetActionsAndClear());
|
| EXPECT_EQ(STATE_DUAL_MIRROR, configurator_.output_state());
|
| + EXPECT_EQ(1, observer_.num_changes());
|
| EXPECT_FALSE(mirroring_controller_.software_mirroring_enabled());
|
|
|
| // Software Mirroring
|
|
|