| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chromeos/display/output_configurator.h" | 5 #include "chromeos/display/output_configurator.h" |
| 6 | 6 |
| 7 #include <cstdarg> | 7 #include <cstdarg> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 }; | 201 }; |
| 202 | 202 |
| 203 class TestStateController : public OutputConfigurator::StateController { | 203 class TestStateController : public OutputConfigurator::StateController { |
| 204 public: | 204 public: |
| 205 TestStateController() : state_(STATE_DUAL_EXTENDED) {} | 205 TestStateController() : state_(STATE_DUAL_EXTENDED) {} |
| 206 virtual ~TestStateController() {} | 206 virtual ~TestStateController() {} |
| 207 | 207 |
| 208 void set_state(OutputState state) { state_ = state; } | 208 void set_state(OutputState state) { state_ = state; } |
| 209 | 209 |
| 210 // OutputConfigurator::StateController overrides: | 210 // OutputConfigurator::StateController overrides: |
| 211 virtual OutputState GetStateForOutputs( | 211 virtual OutputState GetStateForDisplayIds( |
| 212 const OutputSnapshotList& outputs) const OVERRIDE { return state_; } | 212 const std::vector<int64>& outputs) const OVERRIDE { return state_; } |
| 213 | 213 |
| 214 private: | 214 private: |
| 215 OutputState state_; | 215 OutputState state_; |
| 216 | 216 |
| 217 DISALLOW_COPY_AND_ASSIGN(TestStateController); | 217 DISALLOW_COPY_AND_ASSIGN(TestStateController); |
| 218 }; | 218 }; |
| 219 | 219 |
| 220 class OutputConfiguratorTest : public testing::Test { | 220 class OutputConfiguratorTest : public testing::Test { |
| 221 public: | 221 public: |
| 222 OutputConfiguratorTest() | 222 OutputConfiguratorTest() |
| (...skipping 10 matching lines...) Expand all Loading... |
| 233 o->output = 1; | 233 o->output = 1; |
| 234 o->crtc = 10; | 234 o->crtc = 10; |
| 235 o->current_mode = kSmallModeId; | 235 o->current_mode = kSmallModeId; |
| 236 o->native_mode = kSmallModeId; | 236 o->native_mode = kSmallModeId; |
| 237 o->mirror_mode = kSmallModeId; | 237 o->mirror_mode = kSmallModeId; |
| 238 o->y = 0; | 238 o->y = 0; |
| 239 o->height = kSmallModeHeight; | 239 o->height = kSmallModeHeight; |
| 240 o->is_internal = true; | 240 o->is_internal = true; |
| 241 o->is_aspect_preserving_scaling = true; | 241 o->is_aspect_preserving_scaling = true; |
| 242 o->touch_device_id = 0; | 242 o->touch_device_id = 0; |
| 243 o->has_display_id = true; |
| 243 | 244 |
| 244 o = &outputs_[1]; | 245 o = &outputs_[1]; |
| 245 o->output = 2; | 246 o->output = 2; |
| 246 o->crtc = 11; | 247 o->crtc = 11; |
| 247 o->current_mode = kBigModeId; | 248 o->current_mode = kBigModeId; |
| 248 o->native_mode = kBigModeId; | 249 o->native_mode = kBigModeId; |
| 249 o->mirror_mode = kSmallModeId; | 250 o->mirror_mode = kSmallModeId; |
| 250 o->y = 0; | 251 o->y = 0; |
| 251 o->height = kBigModeHeight; | 252 o->height = kBigModeHeight; |
| 252 o->is_internal = false; | 253 o->is_internal = false; |
| 253 o->is_aspect_preserving_scaling = true; | 254 o->is_aspect_preserving_scaling = true; |
| 254 o->touch_device_id = 0; | 255 o->touch_device_id = 0; |
| 256 o->has_display_id = true; |
| 255 | 257 |
| 256 UpdateOutputs(2); | 258 UpdateOutputs(2); |
| 257 delegate_->AddMode(kSmallModeId, kSmallModeWidth, kSmallModeHeight, false); | 259 delegate_->AddMode(kSmallModeId, kSmallModeWidth, kSmallModeHeight, false); |
| 258 delegate_->AddMode(kBigModeId, kBigModeWidth, kBigModeHeight, false); | 260 delegate_->AddMode(kBigModeId, kBigModeWidth, kBigModeHeight, false); |
| 259 } | 261 } |
| 260 | 262 |
| 261 protected: | 263 protected: |
| 262 // Predefined modes that can be used by outputs. | 264 // Predefined modes that can be used by outputs. |
| 263 static const int kSmallModeId = 20; | 265 static const int kSmallModeId = 20; |
| 264 static const int kSmallModeWidth = 1366; | 266 static const int kSmallModeWidth = 1366; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 OutputConfigurator::TestApi test_api_; | 304 OutputConfigurator::TestApi test_api_; |
| 303 | 305 |
| 304 OutputConfigurator::OutputSnapshot outputs_[2]; | 306 OutputConfigurator::OutputSnapshot outputs_[2]; |
| 305 | 307 |
| 306 private: | 308 private: |
| 307 DISALLOW_COPY_AND_ASSIGN(OutputConfiguratorTest); | 309 DISALLOW_COPY_AND_ASSIGN(OutputConfiguratorTest); |
| 308 }; | 310 }; |
| 309 | 311 |
| 310 } // namespace | 312 } // namespace |
| 311 | 313 |
| 312 TEST_F(OutputConfiguratorTest, IsInternalOutputName) { | |
| 313 EXPECT_TRUE(OutputConfigurator::IsInternalOutputName("LVDS")); | |
| 314 EXPECT_TRUE(OutputConfigurator::IsInternalOutputName("eDP")); | |
| 315 EXPECT_TRUE(OutputConfigurator::IsInternalOutputName("LVDSxx")); | |
| 316 EXPECT_TRUE(OutputConfigurator::IsInternalOutputName("eDPzz")); | |
| 317 | |
| 318 EXPECT_FALSE(OutputConfigurator::IsInternalOutputName("xyz")); | |
| 319 EXPECT_FALSE(OutputConfigurator::IsInternalOutputName("abcLVDS")); | |
| 320 EXPECT_FALSE(OutputConfigurator::IsInternalOutputName("cdeeDP")); | |
| 321 EXPECT_FALSE(OutputConfigurator::IsInternalOutputName("LVD")); | |
| 322 EXPECT_FALSE(OutputConfigurator::IsInternalOutputName("eD")); | |
| 323 } | |
| 324 | |
| 325 TEST_F(OutputConfiguratorTest, ConnectSecondOutput) { | 314 TEST_F(OutputConfiguratorTest, ConnectSecondOutput) { |
| 326 InitWithSingleOutput(); | 315 InitWithSingleOutput(); |
| 327 | 316 |
| 328 // Connect a second output and check that the configurator enters | 317 // Connect a second output and check that the configurator enters |
| 329 // extended mode. | 318 // extended mode. |
| 330 UpdateOutputs(2); | 319 UpdateOutputs(2); |
| 331 const int kDualHeight = | 320 const int kDualHeight = |
| 332 kSmallModeHeight + OutputConfigurator::kVerticalGap + kBigModeHeight; | 321 kSmallModeHeight + OutputConfigurator::kVerticalGap + kBigModeHeight; |
| 333 state_controller_.set_state(STATE_DUAL_EXTENDED); | 322 state_controller_.set_state(STATE_DUAL_EXTENDED); |
| 334 EXPECT_TRUE(test_api_.SendOutputChangeEvents(true)); | 323 EXPECT_TRUE(test_api_.SendOutputChangeEvents(true)); |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 | 576 |
| 588 UpdateOutputs(2); | 577 UpdateOutputs(2); |
| 589 state_controller_.set_state(STATE_DUAL_EXTENDED); | 578 state_controller_.set_state(STATE_DUAL_EXTENDED); |
| 590 EXPECT_TRUE(test_api_.SendOutputChangeEvents(true)); | 579 EXPECT_TRUE(test_api_.SendOutputChangeEvents(true)); |
| 591 EXPECT_FALSE(configurator_.SetDisplayMode(STATE_HEADLESS)); | 580 EXPECT_FALSE(configurator_.SetDisplayMode(STATE_HEADLESS)); |
| 592 EXPECT_FALSE(configurator_.SetDisplayMode(STATE_SINGLE)); | 581 EXPECT_FALSE(configurator_.SetDisplayMode(STATE_SINGLE)); |
| 593 EXPECT_TRUE(configurator_.SetDisplayMode(STATE_DUAL_MIRROR)); | 582 EXPECT_TRUE(configurator_.SetDisplayMode(STATE_DUAL_MIRROR)); |
| 594 EXPECT_TRUE(configurator_.SetDisplayMode(STATE_DUAL_EXTENDED)); | 583 EXPECT_TRUE(configurator_.SetDisplayMode(STATE_DUAL_EXTENDED)); |
| 595 } | 584 } |
| 596 | 585 |
| 586 TEST_F(OutputConfiguratorTest, GetOutputStateForDisplays) { |
| 587 outputs_[0].has_display_id = false; |
| 588 UpdateOutputs(2); |
| 589 |
| 590 configurator_.Init(false, 0); |
| 591 configurator_.Start(); |
| 592 |
| 593 state_controller_.set_state(STATE_DUAL_MIRROR); |
| 594 test_api_.SendOutputChangeEvents(true); |
| 595 EXPECT_EQ(STATE_DUAL_EXTENDED, configurator_.output_state()); |
| 596 |
| 597 outputs_[0].has_display_id = true; |
| 598 UpdateOutputs(2); |
| 599 test_api_.SendOutputChangeEvents(true); |
| 600 EXPECT_EQ(STATE_DUAL_MIRROR, configurator_.output_state()); |
| 601 } |
| 602 |
| 597 } // namespace chromeos | 603 } // namespace chromeos |
| OLD | NEW |