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 "chrome/browser/chromeos/display/display_preferences.h" | 5 #include "chrome/browser/chromeos/display/display_preferences.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 18 matching lines...) Expand all Loading... |
29 #include "base/values.h" | 29 #include "base/values.h" |
30 #include "chrome/browser/chromeos/display/display_configuration_observer.h" | 30 #include "chrome/browser/chromeos/display/display_configuration_observer.h" |
31 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" | 31 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" |
32 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" | 32 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" |
33 #include "chrome/common/pref_names.h" | 33 #include "chrome/common/pref_names.h" |
34 #include "chrome/test/base/testing_browser_process.h" | 34 #include "chrome/test/base/testing_browser_process.h" |
35 #include "components/prefs/scoped_user_pref_update.h" | 35 #include "components/prefs/scoped_user_pref_update.h" |
36 #include "components/prefs/testing_pref_service.h" | 36 #include "components/prefs/testing_pref_service.h" |
37 #include "ui/display/chromeos/display_configurator.h" | 37 #include "ui/display/chromeos/display_configurator.h" |
38 #include "ui/display/manager/display_layout_builder.h" | 38 #include "ui/display/manager/display_layout_builder.h" |
| 39 #include "ui/display/screen.h" |
39 #include "ui/gfx/geometry/vector3d_f.h" | 40 #include "ui/gfx/geometry/vector3d_f.h" |
40 #include "ui/gfx/screen.h" | |
41 #include "ui/message_center/message_center.h" | 41 #include "ui/message_center/message_center.h" |
42 | 42 |
43 using ash::ResolutionNotificationController; | 43 using ash::ResolutionNotificationController; |
44 | 44 |
45 namespace chromeos { | 45 namespace chromeos { |
46 namespace { | 46 namespace { |
47 const char kPrimaryIdKey[] = "primary-id"; | 47 const char kPrimaryIdKey[] = "primary-id"; |
48 const char kMirroredKey[] = "mirrored"; | 48 const char kMirroredKey[] = "mirrored"; |
49 const char kPositionKey[] = "position"; | 49 const char kPositionKey[] = "position"; |
50 const char kOffsetKey[] = "offset"; | 50 const char kOffsetKey[] = "offset"; |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 DictionaryPrefUpdate update(&local_state_, prefs::kDisplayProperties); | 179 DictionaryPrefUpdate update(&local_state_, prefs::kDisplayProperties); |
180 const std::string name = base::Int64ToString(id); | 180 const std::string name = base::Int64ToString(id); |
181 | 181 |
182 base::DictionaryValue* pref_data = update.Get(); | 182 base::DictionaryValue* pref_data = update.Get(); |
183 base::DictionaryValue* property = new base::DictionaryValue(); | 183 base::DictionaryValue* property = new base::DictionaryValue(); |
184 property->SetString("color_profile_name", profile); | 184 property->SetString("color_profile_name", profile); |
185 pref_data->Set(name, property); | 185 pref_data->Set(name, property); |
186 } | 186 } |
187 | 187 |
188 void StoreDisplayRotationPrefsForTest(bool rotation_lock, | 188 void StoreDisplayRotationPrefsForTest(bool rotation_lock, |
189 gfx::Display::Rotation rotation) { | 189 display::Display::Rotation rotation) { |
190 DictionaryPrefUpdate update(local_state(), prefs::kDisplayRotationLock); | 190 DictionaryPrefUpdate update(local_state(), prefs::kDisplayRotationLock); |
191 base::DictionaryValue* pref_data = update.Get(); | 191 base::DictionaryValue* pref_data = update.Get(); |
192 pref_data->SetBoolean("lock", rotation_lock); | 192 pref_data->SetBoolean("lock", rotation_lock); |
193 pref_data->SetInteger("orientation", static_cast<int>(rotation)); | 193 pref_data->SetInteger("orientation", static_cast<int>(rotation)); |
194 } | 194 } |
195 | 195 |
196 std::string GetRegisteredDisplayPlacementStr( | 196 std::string GetRegisteredDisplayPlacementStr( |
197 const display::DisplayIdList& list) { | 197 const display::DisplayIdList& list) { |
198 return ash::Shell::GetInstance() | 198 return ash::Shell::GetInstance() |
199 ->display_manager() | 199 ->display_manager() |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 GetRegisteredDisplayPlacementStr(dummy_list)); | 255 GetRegisteredDisplayPlacementStr(dummy_list)); |
256 } | 256 } |
257 | 257 |
258 TEST_F(DisplayPreferencesTest, BasicStores) { | 258 TEST_F(DisplayPreferencesTest, BasicStores) { |
259 ash::WindowTreeHostManager* window_tree_host_manager = | 259 ash::WindowTreeHostManager* window_tree_host_manager = |
260 ash::Shell::GetInstance()->window_tree_host_manager(); | 260 ash::Shell::GetInstance()->window_tree_host_manager(); |
261 ash::DisplayManager* display_manager = | 261 ash::DisplayManager* display_manager = |
262 ash::Shell::GetInstance()->display_manager(); | 262 ash::Shell::GetInstance()->display_manager(); |
263 | 263 |
264 UpdateDisplay("200x200*2, 400x300#400x400|300x200*1.25"); | 264 UpdateDisplay("200x200*2, 400x300#400x400|300x200*1.25"); |
265 int64_t id1 = gfx::Screen::GetScreen()->GetPrimaryDisplay().id(); | 265 int64_t id1 = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
266 ash::test::ScopedSetInternalDisplayId set_internal(id1); | 266 ash::test::ScopedSetInternalDisplayId set_internal(id1); |
267 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); | 267 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); |
268 int64_t dummy_id = id2 + 1; | 268 int64_t dummy_id = id2 + 1; |
269 ASSERT_NE(id1, dummy_id); | 269 ASSERT_NE(id1, dummy_id); |
270 std::vector<ui::ColorCalibrationProfile> profiles; | 270 std::vector<ui::ColorCalibrationProfile> profiles; |
271 profiles.push_back(ui::COLOR_PROFILE_STANDARD); | 271 profiles.push_back(ui::COLOR_PROFILE_STANDARD); |
272 profiles.push_back(ui::COLOR_PROFILE_DYNAMIC); | 272 profiles.push_back(ui::COLOR_PROFILE_DYNAMIC); |
273 profiles.push_back(ui::COLOR_PROFILE_MOVIE); | 273 profiles.push_back(ui::COLOR_PROFILE_MOVIE); |
274 profiles.push_back(ui::COLOR_PROFILE_READING); | 274 profiles.push_back(ui::COLOR_PROFILE_READING); |
275 // Allows only |id1|. | 275 // Allows only |id1|. |
(...skipping 13 matching lines...) Expand all Loading... |
289 display::DisplayLayoutBuilder dummy_layout_builder(id1); | 289 display::DisplayLayoutBuilder dummy_layout_builder(id1); |
290 dummy_layout_builder.SetSecondaryPlacement( | 290 dummy_layout_builder.SetSecondaryPlacement( |
291 dummy_id, display::DisplayPlacement::LEFT, 20); | 291 dummy_id, display::DisplayPlacement::LEFT, 20); |
292 std::unique_ptr<display::DisplayLayout> dummy_layout( | 292 std::unique_ptr<display::DisplayLayout> dummy_layout( |
293 dummy_layout_builder.Build()); | 293 dummy_layout_builder.Build()); |
294 display::DisplayIdList list = ash::test::CreateDisplayIdList2(id1, dummy_id); | 294 display::DisplayIdList list = ash::test::CreateDisplayIdList2(id1, dummy_id); |
295 StoreDisplayLayoutPrefForTest(list, *dummy_layout); | 295 StoreDisplayLayoutPrefForTest(list, *dummy_layout); |
296 | 296 |
297 // Can't switch to a display that does not exist. | 297 // Can't switch to a display that does not exist. |
298 window_tree_host_manager->SetPrimaryDisplayId(dummy_id); | 298 window_tree_host_manager->SetPrimaryDisplayId(dummy_id); |
299 EXPECT_NE(dummy_id, gfx::Screen::GetScreen()->GetPrimaryDisplay().id()); | 299 EXPECT_NE(dummy_id, display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
300 | 300 |
301 window_tree_host_manager->SetOverscanInsets(id1, gfx::Insets(10, 11, 12, 13)); | 301 window_tree_host_manager->SetOverscanInsets(id1, gfx::Insets(10, 11, 12, 13)); |
302 display_manager->SetDisplayRotation(id1, gfx::Display::ROTATE_90, | 302 display_manager->SetDisplayRotation(id1, display::Display::ROTATE_90, |
303 gfx::Display::ROTATION_SOURCE_USER); | 303 display::Display::ROTATION_SOURCE_USER); |
304 EXPECT_TRUE(ash::SetDisplayUIScale(id1, 1.25f)); | 304 EXPECT_TRUE(ash::SetDisplayUIScale(id1, 1.25f)); |
305 EXPECT_FALSE(ash::SetDisplayUIScale(id2, 1.25f)); | 305 EXPECT_FALSE(ash::SetDisplayUIScale(id2, 1.25f)); |
306 | 306 |
307 const base::DictionaryValue* displays = | 307 const base::DictionaryValue* displays = |
308 local_state()->GetDictionary(prefs::kSecondaryDisplays); | 308 local_state()->GetDictionary(prefs::kSecondaryDisplays); |
309 const base::DictionaryValue* layout_value = nullptr; | 309 const base::DictionaryValue* layout_value = nullptr; |
310 std::string key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); | 310 std::string key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); |
311 std::string dummy_key = | 311 std::string dummy_key = |
312 base::Int64ToString(id1) + "," + base::Int64ToString(dummy_id); | 312 base::Int64ToString(id1) + "," + base::Int64ToString(dummy_id); |
313 EXPECT_TRUE(displays->GetDictionary(dummy_key, &layout_value)); | 313 EXPECT_TRUE(displays->GetDictionary(dummy_key, &layout_value)); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
376 height = 0; | 376 height = 0; |
377 EXPECT_FALSE(property->GetInteger("width", &width)); | 377 EXPECT_FALSE(property->GetInteger("width", &width)); |
378 EXPECT_FALSE(property->GetInteger("height", &height)); | 378 EXPECT_FALSE(property->GetInteger("height", &height)); |
379 | 379 |
380 ash::DisplayMode mode(gfx::Size(300, 200), 60.0f, false, true); | 380 ash::DisplayMode mode(gfx::Size(300, 200), 60.0f, false, true); |
381 mode.device_scale_factor = 1.25f; | 381 mode.device_scale_factor = 1.25f; |
382 display_manager->SetDisplayMode(id2, mode); | 382 display_manager->SetDisplayMode(id2, mode); |
383 | 383 |
384 window_tree_host_manager->SetPrimaryDisplayId(id2); | 384 window_tree_host_manager->SetPrimaryDisplayId(id2); |
385 | 385 |
386 EXPECT_EQ(id2, gfx::Screen::GetScreen()->GetPrimaryDisplay().id()); | 386 EXPECT_EQ(id2, display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
387 | 387 |
388 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property)); | 388 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property)); |
389 width = 0; | 389 width = 0; |
390 height = 0; | 390 height = 0; |
391 // Internal display shouldn't store its resolution. | 391 // Internal display shouldn't store its resolution. |
392 EXPECT_FALSE(property->GetInteger("width", &width)); | 392 EXPECT_FALSE(property->GetInteger("width", &width)); |
393 EXPECT_FALSE(property->GetInteger("height", &height)); | 393 EXPECT_FALSE(property->GetInteger("height", &height)); |
394 | 394 |
395 // External display's resolution must be stored this time because | 395 // External display's resolution must be stored this time because |
396 // it's not best. | 396 // it's not best. |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 | 457 |
458 // External display's selected resolution must not change | 458 // External display's selected resolution must not change |
459 // by mirroring. | 459 // by mirroring. |
460 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); | 460 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); |
461 EXPECT_TRUE(property->GetInteger("width", &width)); | 461 EXPECT_TRUE(property->GetInteger("width", &width)); |
462 EXPECT_TRUE(property->GetInteger("height", &height)); | 462 EXPECT_TRUE(property->GetInteger("height", &height)); |
463 EXPECT_EQ(300, width); | 463 EXPECT_EQ(300, width); |
464 EXPECT_EQ(200, height); | 464 EXPECT_EQ(200, height); |
465 | 465 |
466 // Set new display's selected resolution. | 466 // Set new display's selected resolution. |
467 display_manager->RegisterDisplayProperty(id2 + 1, gfx::Display::ROTATE_0, | 467 display_manager->RegisterDisplayProperty(id2 + 1, display::Display::ROTATE_0, |
468 1.0f, nullptr, gfx::Size(500, 400), | 468 1.0f, nullptr, gfx::Size(500, 400), |
469 1.0f, ui::COLOR_PROFILE_STANDARD); | 469 1.0f, ui::COLOR_PROFILE_STANDARD); |
470 | 470 |
471 UpdateDisplay("200x200*2, 600x500#600x500|500x400"); | 471 UpdateDisplay("200x200*2, 600x500#600x500|500x400"); |
472 | 472 |
473 // Update key as the 2nd display gets new id. | 473 // Update key as the 2nd display gets new id. |
474 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); | 474 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); |
475 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); | 475 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); |
476 EXPECT_TRUE(displays->GetDictionary(key, &layout_value)); | 476 EXPECT_TRUE(displays->GetDictionary(key, &layout_value)); |
477 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position)); | 477 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position)); |
478 EXPECT_EQ("right", position); | 478 EXPECT_EQ("right", position); |
479 EXPECT_TRUE(layout_value->GetInteger(kOffsetKey, &offset)); | 479 EXPECT_TRUE(layout_value->GetInteger(kOffsetKey, &offset)); |
480 EXPECT_EQ(0, offset); | 480 EXPECT_EQ(0, offset); |
481 mirrored = true; | 481 mirrored = true; |
482 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored)); | 482 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored)); |
483 EXPECT_FALSE(mirrored); | 483 EXPECT_FALSE(mirrored); |
484 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str)); | 484 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str)); |
485 EXPECT_EQ(base::Int64ToString(id1), primary_id_str); | 485 EXPECT_EQ(base::Int64ToString(id1), primary_id_str); |
486 | 486 |
487 // Best resolution should not be saved. | 487 // Best resolution should not be saved. |
488 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); | 488 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); |
489 EXPECT_FALSE(property->GetInteger("width", &width)); | 489 EXPECT_FALSE(property->GetInteger("width", &width)); |
490 EXPECT_FALSE(property->GetInteger("height", &height)); | 490 EXPECT_FALSE(property->GetInteger("height", &height)); |
491 | 491 |
492 // Set yet another new display's selected resolution. | 492 // Set yet another new display's selected resolution. |
493 display_manager->RegisterDisplayProperty(id2 + 1, gfx::Display::ROTATE_0, | 493 display_manager->RegisterDisplayProperty(id2 + 1, display::Display::ROTATE_0, |
494 1.0f, nullptr, gfx::Size(500, 400), | 494 1.0f, nullptr, gfx::Size(500, 400), |
495 1.0f, ui::COLOR_PROFILE_STANDARD); | 495 1.0f, ui::COLOR_PROFILE_STANDARD); |
496 // Disconnect 2nd display first to generate new id for external display. | 496 // Disconnect 2nd display first to generate new id for external display. |
497 UpdateDisplay("200x200*2"); | 497 UpdateDisplay("200x200*2"); |
498 UpdateDisplay("200x200*2, 500x400#600x500|500x400%60.0f"); | 498 UpdateDisplay("200x200*2, 500x400#600x500|500x400%60.0f"); |
499 // Update key as the 2nd display gets new id. | 499 // Update key as the 2nd display gets new id. |
500 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); | 500 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); |
501 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); | 501 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); |
502 EXPECT_TRUE(displays->GetDictionary(key, &layout_value)); | 502 EXPECT_TRUE(displays->GetDictionary(key, &layout_value)); |
503 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position)); | 503 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position)); |
(...skipping 11 matching lines...) Expand all Loading... |
515 EXPECT_TRUE(property->GetInteger("width", &width)); | 515 EXPECT_TRUE(property->GetInteger("width", &width)); |
516 EXPECT_TRUE(property->GetInteger("height", &height)); | 516 EXPECT_TRUE(property->GetInteger("height", &height)); |
517 EXPECT_EQ(500, width); | 517 EXPECT_EQ(500, width); |
518 EXPECT_EQ(400, height); | 518 EXPECT_EQ(400, height); |
519 } | 519 } |
520 | 520 |
521 TEST_F(DisplayPreferencesTest, PreventStore) { | 521 TEST_F(DisplayPreferencesTest, PreventStore) { |
522 ResolutionNotificationController::SuppressTimerForTest(); | 522 ResolutionNotificationController::SuppressTimerForTest(); |
523 LoggedInAsUser(); | 523 LoggedInAsUser(); |
524 UpdateDisplay("400x300#500x400|400x300|300x200"); | 524 UpdateDisplay("400x300#500x400|400x300|300x200"); |
525 int64_t id = gfx::Screen::GetScreen()->GetPrimaryDisplay().id(); | 525 int64_t id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
526 // Set display's resolution in single display. It creates the notification and | 526 // Set display's resolution in single display. It creates the notification and |
527 // display preferences should not stored meanwhile. | 527 // display preferences should not stored meanwhile. |
528 ash::Shell* shell = ash::Shell::GetInstance(); | 528 ash::Shell* shell = ash::Shell::GetInstance(); |
529 ash::DisplayMode old_mode; | 529 ash::DisplayMode old_mode; |
530 ash::DisplayMode new_mode; | 530 ash::DisplayMode new_mode; |
531 old_mode.size = gfx::Size(400, 300); | 531 old_mode.size = gfx::Size(400, 300); |
532 new_mode.size = gfx::Size(500, 400); | 532 new_mode.size = gfx::Size(500, 400); |
533 if (shell->display_manager()->SetDisplayMode(id, new_mode)) { | 533 if (shell->display_manager()->SetDisplayMode(id, new_mode)) { |
534 shell->resolution_notification_controller()->PrepareNotification( | 534 shell->resolution_notification_controller()->PrepareNotification( |
535 id, old_mode, new_mode, base::Closure()); | 535 id, old_mode, new_mode, base::Closure()); |
(...skipping 25 matching lines...) Expand all Loading... |
561 property = nullptr; | 561 property = nullptr; |
562 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id), &property)); | 562 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id), &property)); |
563 EXPECT_TRUE(property->GetInteger("width", &width)); | 563 EXPECT_TRUE(property->GetInteger("width", &width)); |
564 EXPECT_TRUE(property->GetInteger("height", &height)); | 564 EXPECT_TRUE(property->GetInteger("height", &height)); |
565 EXPECT_EQ(300, width); | 565 EXPECT_EQ(300, width); |
566 EXPECT_EQ(200, height); | 566 EXPECT_EQ(200, height); |
567 } | 567 } |
568 | 568 |
569 TEST_F(DisplayPreferencesTest, StoreForSwappedDisplay) { | 569 TEST_F(DisplayPreferencesTest, StoreForSwappedDisplay) { |
570 UpdateDisplay("100x100,200x200"); | 570 UpdateDisplay("100x100,200x200"); |
571 int64_t id1 = gfx::Screen::GetScreen()->GetPrimaryDisplay().id(); | 571 int64_t id1 = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
572 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); | 572 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); |
573 | 573 |
574 LoggedInAsUser(); | 574 LoggedInAsUser(); |
575 | 575 |
576 ash::test::SwapPrimaryDisplay(); | 576 ash::test::SwapPrimaryDisplay(); |
577 ASSERT_EQ(id1, ash::ScreenUtil::GetSecondaryDisplay().id()); | 577 ASSERT_EQ(id1, ash::ScreenUtil::GetSecondaryDisplay().id()); |
578 | 578 |
579 std::string key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); | 579 std::string key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); |
580 const base::DictionaryValue* displays = | 580 const base::DictionaryValue* displays = |
581 local_state()->GetDictionary(prefs::kSecondaryDisplays); | 581 local_state()->GetDictionary(prefs::kSecondaryDisplays); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
630 EXPECT_EQ(id2, stored_placement.display_id); | 630 EXPECT_EQ(id2, stored_placement.display_id); |
631 EXPECT_EQ(id1, stored_placement.parent_display_id); | 631 EXPECT_EQ(id1, stored_placement.parent_display_id); |
632 EXPECT_EQ(id1, stored_layout.primary_id); | 632 EXPECT_EQ(id1, stored_layout.primary_id); |
633 } | 633 } |
634 } | 634 } |
635 | 635 |
636 TEST_F(DisplayPreferencesTest, RestoreColorProfiles) { | 636 TEST_F(DisplayPreferencesTest, RestoreColorProfiles) { |
637 ash::DisplayManager* display_manager = | 637 ash::DisplayManager* display_manager = |
638 ash::Shell::GetInstance()->display_manager(); | 638 ash::Shell::GetInstance()->display_manager(); |
639 | 639 |
640 int64_t id1 = gfx::Screen::GetScreen()->GetPrimaryDisplay().id(); | 640 int64_t id1 = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
641 | 641 |
642 StoreColorProfile(id1, "dynamic"); | 642 StoreColorProfile(id1, "dynamic"); |
643 | 643 |
644 LoggedInAsUser(); | 644 LoggedInAsUser(); |
645 LoadDisplayPreferences(false); | 645 LoadDisplayPreferences(false); |
646 | 646 |
647 // id1's available color profiles list is empty, means somehow the color | 647 // id1's available color profiles list is empty, means somehow the color |
648 // profile suport is temporary in trouble. | 648 // profile suport is temporary in trouble. |
649 EXPECT_NE(ui::COLOR_PROFILE_DYNAMIC, | 649 EXPECT_NE(ui::COLOR_PROFILE_DYNAMIC, |
650 display_manager->GetDisplayInfo(id1).color_profile()); | 650 display_manager->GetDisplayInfo(id1).color_profile()); |
(...skipping 11 matching lines...) Expand all Loading... |
662 display_manager->GetDisplayInfo(id1).color_profile()); | 662 display_manager->GetDisplayInfo(id1).color_profile()); |
663 } | 663 } |
664 | 664 |
665 TEST_F(DisplayPreferencesTest, DontStoreInGuestMode) { | 665 TEST_F(DisplayPreferencesTest, DontStoreInGuestMode) { |
666 ash::WindowTreeHostManager* window_tree_host_manager = | 666 ash::WindowTreeHostManager* window_tree_host_manager = |
667 ash::Shell::GetInstance()->window_tree_host_manager(); | 667 ash::Shell::GetInstance()->window_tree_host_manager(); |
668 | 668 |
669 UpdateDisplay("200x200*2,200x200"); | 669 UpdateDisplay("200x200*2,200x200"); |
670 | 670 |
671 LoggedInAsGuest(); | 671 LoggedInAsGuest(); |
672 int64_t id1 = gfx::Screen::GetScreen()->GetPrimaryDisplay().id(); | 672 int64_t id1 = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
673 ash::test::ScopedSetInternalDisplayId set_internal(id1); | 673 ash::test::ScopedSetInternalDisplayId set_internal(id1); |
674 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); | 674 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); |
675 ash::DisplayManager* display_manager = | 675 ash::DisplayManager* display_manager = |
676 ash::Shell::GetInstance()->display_manager(); | 676 ash::Shell::GetInstance()->display_manager(); |
677 display_manager->SetLayoutForCurrentDisplays( | 677 display_manager->SetLayoutForCurrentDisplays( |
678 ash::test::CreateDisplayLayout(display::DisplayPlacement::TOP, 10)); | 678 ash::test::CreateDisplayLayout(display::DisplayPlacement::TOP, 10)); |
679 ash::SetDisplayUIScale(id1, 1.25f); | 679 ash::SetDisplayUIScale(id1, 1.25f); |
680 window_tree_host_manager->SetPrimaryDisplayId(id2); | 680 window_tree_host_manager->SetPrimaryDisplayId(id2); |
681 int64_t new_primary = gfx::Screen::GetScreen()->GetPrimaryDisplay().id(); | 681 int64_t new_primary = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
682 window_tree_host_manager->SetOverscanInsets(new_primary, | 682 window_tree_host_manager->SetOverscanInsets(new_primary, |
683 gfx::Insets(10, 11, 12, 13)); | 683 gfx::Insets(10, 11, 12, 13)); |
684 display_manager->SetDisplayRotation(new_primary, gfx::Display::ROTATE_90, | 684 display_manager->SetDisplayRotation(new_primary, display::Display::ROTATE_90, |
685 gfx::Display::ROTATION_SOURCE_USER); | 685 display::Display::ROTATION_SOURCE_USER); |
686 | 686 |
687 // Does not store the preferences locally. | 687 // Does not store the preferences locally. |
688 EXPECT_FALSE(local_state()->FindPreference( | 688 EXPECT_FALSE(local_state()->FindPreference( |
689 prefs::kSecondaryDisplays)->HasUserSetting()); | 689 prefs::kSecondaryDisplays)->HasUserSetting()); |
690 EXPECT_FALSE(local_state()->FindPreference( | 690 EXPECT_FALSE(local_state()->FindPreference( |
691 prefs::kDisplayProperties)->HasUserSetting()); | 691 prefs::kDisplayProperties)->HasUserSetting()); |
692 | 692 |
693 // Settings are still notified to the system. | 693 // Settings are still notified to the system. |
694 gfx::Screen* screen = gfx::Screen::GetScreen(); | 694 display::Screen* screen = display::Screen::GetScreen(); |
695 EXPECT_EQ(id2, screen->GetPrimaryDisplay().id()); | 695 EXPECT_EQ(id2, screen->GetPrimaryDisplay().id()); |
696 const display::DisplayPlacement& placement = | 696 const display::DisplayPlacement& placement = |
697 display_manager->GetCurrentDisplayLayout().placement_list[0]; | 697 display_manager->GetCurrentDisplayLayout().placement_list[0]; |
698 EXPECT_EQ(display::DisplayPlacement::BOTTOM, placement.position); | 698 EXPECT_EQ(display::DisplayPlacement::BOTTOM, placement.position); |
699 EXPECT_EQ(-10, placement.offset); | 699 EXPECT_EQ(-10, placement.offset); |
700 const gfx::Display& primary_display = screen->GetPrimaryDisplay(); | 700 const display::Display& primary_display = screen->GetPrimaryDisplay(); |
701 EXPECT_EQ("178x176", primary_display.bounds().size().ToString()); | 701 EXPECT_EQ("178x176", primary_display.bounds().size().ToString()); |
702 EXPECT_EQ(gfx::Display::ROTATE_90, primary_display.rotation()); | 702 EXPECT_EQ(display::Display::ROTATE_90, primary_display.rotation()); |
703 | 703 |
704 const ash::DisplayInfo& info1 = display_manager->GetDisplayInfo(id1); | 704 const ash::DisplayInfo& info1 = display_manager->GetDisplayInfo(id1); |
705 EXPECT_EQ(1.25f, info1.configured_ui_scale()); | 705 EXPECT_EQ(1.25f, info1.configured_ui_scale()); |
706 | 706 |
707 const ash::DisplayInfo& info_primary = | 707 const ash::DisplayInfo& info_primary = |
708 display_manager->GetDisplayInfo(new_primary); | 708 display_manager->GetDisplayInfo(new_primary); |
709 EXPECT_EQ(gfx::Display::ROTATE_90, info_primary.GetActiveRotation()); | 709 EXPECT_EQ(display::Display::ROTATE_90, info_primary.GetActiveRotation()); |
710 EXPECT_EQ(1.0f, info_primary.configured_ui_scale()); | 710 EXPECT_EQ(1.0f, info_primary.configured_ui_scale()); |
711 } | 711 } |
712 | 712 |
713 TEST_F(DisplayPreferencesTest, StorePowerStateNoLogin) { | 713 TEST_F(DisplayPreferencesTest, StorePowerStateNoLogin) { |
714 EXPECT_FALSE(local_state()->HasPrefPath(prefs::kDisplayPowerState)); | 714 EXPECT_FALSE(local_state()->HasPrefPath(prefs::kDisplayPowerState)); |
715 | 715 |
716 // Stores display prefs without login, which still stores the power state. | 716 // Stores display prefs without login, which still stores the power state. |
717 StoreDisplayPrefs(); | 717 StoreDisplayPrefs(); |
718 EXPECT_TRUE(local_state()->HasPrefPath(prefs::kDisplayPowerState)); | 718 EXPECT_TRUE(local_state()->HasPrefPath(prefs::kDisplayPowerState)); |
719 } | 719 } |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
763 local_state()->SetString(prefs::kDisplayPowerState, "all_off"); | 763 local_state()->SetString(prefs::kDisplayPowerState, "all_off"); |
764 LoadDisplayPreferences(false); | 764 LoadDisplayPreferences(false); |
765 EXPECT_EQ(chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON, | 765 EXPECT_EQ(chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON, |
766 shell->display_configurator()->requested_power_state()); | 766 shell->display_configurator()->requested_power_state()); |
767 } | 767 } |
768 | 768 |
769 // Tests that display configuration changes caused by MaximizeModeController | 769 // Tests that display configuration changes caused by MaximizeModeController |
770 // are not saved. | 770 // are not saved. |
771 TEST_F(DisplayPreferencesTest, DontSaveMaximizeModeControllerRotations) { | 771 TEST_F(DisplayPreferencesTest, DontSaveMaximizeModeControllerRotations) { |
772 ash::Shell* shell = ash::Shell::GetInstance(); | 772 ash::Shell* shell = ash::Shell::GetInstance(); |
773 gfx::Display::SetInternalDisplayId( | 773 display::Display::SetInternalDisplayId( |
774 gfx::Screen::GetScreen()->GetPrimaryDisplay().id()); | 774 display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
775 ash::DisplayManager* display_manager = shell->display_manager(); | 775 ash::DisplayManager* display_manager = shell->display_manager(); |
776 LoggedInAsUser(); | 776 LoggedInAsUser(); |
777 // Populate the properties. | 777 // Populate the properties. |
778 display_manager->SetDisplayRotation(gfx::Display::InternalDisplayId(), | 778 display_manager->SetDisplayRotation(display::Display::InternalDisplayId(), |
779 gfx::Display::ROTATE_180, | 779 display::Display::ROTATE_180, |
780 gfx::Display::ROTATION_SOURCE_USER); | 780 display::Display::ROTATION_SOURCE_USER); |
781 // Reset property to avoid rotation lock | 781 // Reset property to avoid rotation lock |
782 display_manager->SetDisplayRotation(gfx::Display::InternalDisplayId(), | 782 display_manager->SetDisplayRotation(display::Display::InternalDisplayId(), |
783 gfx::Display::ROTATE_0, | 783 display::Display::ROTATE_0, |
784 gfx::Display::ROTATION_SOURCE_USER); | 784 display::Display::ROTATION_SOURCE_USER); |
785 | 785 |
786 // Open up 270 degrees to trigger maximize mode | 786 // Open up 270 degrees to trigger maximize mode |
787 scoped_refptr<chromeos::AccelerometerUpdate> update( | 787 scoped_refptr<chromeos::AccelerometerUpdate> update( |
788 new chromeos::AccelerometerUpdate()); | 788 new chromeos::AccelerometerUpdate()); |
789 update->Set(chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD, 0.0f, 0.0f, | 789 update->Set(chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD, 0.0f, 0.0f, |
790 kMeanGravity); | 790 kMeanGravity); |
791 update->Set(chromeos::ACCELEROMETER_SOURCE_SCREEN, 0.0f, -kMeanGravity, 0.0f); | 791 update->Set(chromeos::ACCELEROMETER_SOURCE_SCREEN, 0.0f, -kMeanGravity, 0.0f); |
792 ash::MaximizeModeController* controller = shell->maximize_mode_controller(); | 792 ash::MaximizeModeController* controller = shell->maximize_mode_controller(); |
793 controller->OnAccelerometerUpdated(update); | 793 controller->OnAccelerometerUpdated(update); |
794 EXPECT_TRUE(controller->IsMaximizeModeWindowManagerEnabled()); | 794 EXPECT_TRUE(controller->IsMaximizeModeWindowManagerEnabled()); |
795 | 795 |
796 // Trigger 90 degree rotation | 796 // Trigger 90 degree rotation |
797 update->Set(chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD, -kMeanGravity, | 797 update->Set(chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD, -kMeanGravity, |
798 0.0f, 0.0f); | 798 0.0f, 0.0f); |
799 update->Set(chromeos::ACCELEROMETER_SOURCE_SCREEN, -kMeanGravity, 0.0f, 0.0f); | 799 update->Set(chromeos::ACCELEROMETER_SOURCE_SCREEN, -kMeanGravity, 0.0f, 0.0f); |
800 controller->OnAccelerometerUpdated(update); | 800 controller->OnAccelerometerUpdated(update); |
801 shell->screen_orientation_controller()->OnAccelerometerUpdated(update); | 801 shell->screen_orientation_controller()->OnAccelerometerUpdated(update); |
802 EXPECT_EQ(gfx::Display::ROTATE_90, GetCurrentInternalDisplayRotation()); | 802 EXPECT_EQ(display::Display::ROTATE_90, GetCurrentInternalDisplayRotation()); |
803 | 803 |
804 const base::DictionaryValue* properties = | 804 const base::DictionaryValue* properties = |
805 local_state()->GetDictionary(prefs::kDisplayProperties); | 805 local_state()->GetDictionary(prefs::kDisplayProperties); |
806 const base::DictionaryValue* property = nullptr; | 806 const base::DictionaryValue* property = nullptr; |
807 EXPECT_TRUE(properties->GetDictionary( | 807 EXPECT_TRUE(properties->GetDictionary( |
808 base::Int64ToString(gfx::Display::InternalDisplayId()), &property)); | 808 base::Int64ToString(display::Display::InternalDisplayId()), &property)); |
809 int rotation = -1; | 809 int rotation = -1; |
810 EXPECT_TRUE(property->GetInteger("rotation", &rotation)); | 810 EXPECT_TRUE(property->GetInteger("rotation", &rotation)); |
811 EXPECT_EQ(gfx::Display::ROTATE_0, rotation); | 811 EXPECT_EQ(display::Display::ROTATE_0, rotation); |
812 | 812 |
813 // Trigger a save, the acceleration rotation should not be saved as the user | 813 // Trigger a save, the acceleration rotation should not be saved as the user |
814 // rotation. | 814 // rotation. |
815 StoreDisplayPrefs(); | 815 StoreDisplayPrefs(); |
816 properties = local_state()->GetDictionary(prefs::kDisplayProperties); | 816 properties = local_state()->GetDictionary(prefs::kDisplayProperties); |
817 property = nullptr; | 817 property = nullptr; |
818 EXPECT_TRUE(properties->GetDictionary( | 818 EXPECT_TRUE(properties->GetDictionary( |
819 base::Int64ToString(gfx::Display::InternalDisplayId()), &property)); | 819 base::Int64ToString(display::Display::InternalDisplayId()), &property)); |
820 rotation = -1; | 820 rotation = -1; |
821 EXPECT_TRUE(property->GetInteger("rotation", &rotation)); | 821 EXPECT_TRUE(property->GetInteger("rotation", &rotation)); |
822 EXPECT_EQ(gfx::Display::ROTATE_0, rotation); | 822 EXPECT_EQ(display::Display::ROTATE_0, rotation); |
823 } | 823 } |
824 | 824 |
825 // Tests that the rotation state is saved without a user being logged in. | 825 // Tests that the rotation state is saved without a user being logged in. |
826 TEST_F(DisplayPreferencesTest, StoreRotationStateNoLogin) { | 826 TEST_F(DisplayPreferencesTest, StoreRotationStateNoLogin) { |
827 gfx::Display::SetInternalDisplayId( | 827 display::Display::SetInternalDisplayId( |
828 gfx::Screen::GetScreen()->GetPrimaryDisplay().id()); | 828 display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
829 EXPECT_FALSE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); | 829 EXPECT_FALSE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); |
830 | 830 |
831 bool current_rotation_lock = IsRotationLocked(); | 831 bool current_rotation_lock = IsRotationLocked(); |
832 StoreDisplayRotationPrefs(current_rotation_lock); | 832 StoreDisplayRotationPrefs(current_rotation_lock); |
833 EXPECT_TRUE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); | 833 EXPECT_TRUE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); |
834 | 834 |
835 const base::DictionaryValue* properties = | 835 const base::DictionaryValue* properties = |
836 local_state()->GetDictionary(prefs::kDisplayRotationLock); | 836 local_state()->GetDictionary(prefs::kDisplayRotationLock); |
837 bool rotation_lock; | 837 bool rotation_lock; |
838 EXPECT_TRUE(properties->GetBoolean("lock", &rotation_lock)); | 838 EXPECT_TRUE(properties->GetBoolean("lock", &rotation_lock)); |
839 EXPECT_EQ(current_rotation_lock, rotation_lock); | 839 EXPECT_EQ(current_rotation_lock, rotation_lock); |
840 | 840 |
841 int orientation; | 841 int orientation; |
842 gfx::Display::Rotation current_rotation = GetCurrentInternalDisplayRotation(); | 842 display::Display::Rotation current_rotation = |
| 843 GetCurrentInternalDisplayRotation(); |
843 EXPECT_TRUE(properties->GetInteger("orientation", &orientation)); | 844 EXPECT_TRUE(properties->GetInteger("orientation", &orientation)); |
844 EXPECT_EQ(current_rotation, orientation); | 845 EXPECT_EQ(current_rotation, orientation); |
845 } | 846 } |
846 | 847 |
847 // Tests that the rotation state is saved when a guest is logged in. | 848 // Tests that the rotation state is saved when a guest is logged in. |
848 TEST_F(DisplayPreferencesTest, StoreRotationStateGuest) { | 849 TEST_F(DisplayPreferencesTest, StoreRotationStateGuest) { |
849 gfx::Display::SetInternalDisplayId( | 850 display::Display::SetInternalDisplayId( |
850 gfx::Screen::GetScreen()->GetPrimaryDisplay().id()); | 851 display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
851 EXPECT_FALSE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); | 852 EXPECT_FALSE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); |
852 LoggedInAsGuest(); | 853 LoggedInAsGuest(); |
853 | 854 |
854 bool current_rotation_lock = IsRotationLocked(); | 855 bool current_rotation_lock = IsRotationLocked(); |
855 StoreDisplayRotationPrefs(current_rotation_lock); | 856 StoreDisplayRotationPrefs(current_rotation_lock); |
856 EXPECT_TRUE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); | 857 EXPECT_TRUE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); |
857 | 858 |
858 const base::DictionaryValue* properties = | 859 const base::DictionaryValue* properties = |
859 local_state()->GetDictionary(prefs::kDisplayRotationLock); | 860 local_state()->GetDictionary(prefs::kDisplayRotationLock); |
860 bool rotation_lock; | 861 bool rotation_lock; |
861 EXPECT_TRUE(properties->GetBoolean("lock", &rotation_lock)); | 862 EXPECT_TRUE(properties->GetBoolean("lock", &rotation_lock)); |
862 EXPECT_EQ(current_rotation_lock, rotation_lock); | 863 EXPECT_EQ(current_rotation_lock, rotation_lock); |
863 | 864 |
864 int orientation; | 865 int orientation; |
865 gfx::Display::Rotation current_rotation = GetCurrentInternalDisplayRotation(); | 866 display::Display::Rotation current_rotation = |
| 867 GetCurrentInternalDisplayRotation(); |
866 EXPECT_TRUE(properties->GetInteger("orientation", &orientation)); | 868 EXPECT_TRUE(properties->GetInteger("orientation", &orientation)); |
867 EXPECT_EQ(current_rotation, orientation); | 869 EXPECT_EQ(current_rotation, orientation); |
868 } | 870 } |
869 | 871 |
870 // Tests that the rotation state is saved when a normal user is logged in. | 872 // Tests that the rotation state is saved when a normal user is logged in. |
871 TEST_F(DisplayPreferencesTest, StoreRotationStateNormalUser) { | 873 TEST_F(DisplayPreferencesTest, StoreRotationStateNormalUser) { |
872 gfx::Display::SetInternalDisplayId( | 874 display::Display::SetInternalDisplayId( |
873 gfx::Screen::GetScreen()->GetPrimaryDisplay().id()); | 875 display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
874 EXPECT_FALSE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); | 876 EXPECT_FALSE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); |
875 LoggedInAsGuest(); | 877 LoggedInAsGuest(); |
876 | 878 |
877 bool current_rotation_lock = IsRotationLocked(); | 879 bool current_rotation_lock = IsRotationLocked(); |
878 StoreDisplayRotationPrefs(current_rotation_lock); | 880 StoreDisplayRotationPrefs(current_rotation_lock); |
879 EXPECT_TRUE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); | 881 EXPECT_TRUE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); |
880 | 882 |
881 const base::DictionaryValue* properties = | 883 const base::DictionaryValue* properties = |
882 local_state()->GetDictionary(prefs::kDisplayRotationLock); | 884 local_state()->GetDictionary(prefs::kDisplayRotationLock); |
883 bool rotation_lock; | 885 bool rotation_lock; |
884 EXPECT_TRUE(properties->GetBoolean("lock", &rotation_lock)); | 886 EXPECT_TRUE(properties->GetBoolean("lock", &rotation_lock)); |
885 EXPECT_EQ(current_rotation_lock, rotation_lock); | 887 EXPECT_EQ(current_rotation_lock, rotation_lock); |
886 | 888 |
887 int orientation; | 889 int orientation; |
888 gfx::Display::Rotation current_rotation = GetCurrentInternalDisplayRotation(); | 890 display::Display::Rotation current_rotation = |
| 891 GetCurrentInternalDisplayRotation(); |
889 EXPECT_TRUE(properties->GetInteger("orientation", &orientation)); | 892 EXPECT_TRUE(properties->GetInteger("orientation", &orientation)); |
890 EXPECT_EQ(current_rotation, orientation); | 893 EXPECT_EQ(current_rotation, orientation); |
891 } | 894 } |
892 | 895 |
893 // Tests that rotation state is loaded without a user being logged in, and that | 896 // Tests that rotation state is loaded without a user being logged in, and that |
894 // entering maximize mode applies the state. | 897 // entering maximize mode applies the state. |
895 TEST_F(DisplayPreferencesTest, LoadRotationNoLogin) { | 898 TEST_F(DisplayPreferencesTest, LoadRotationNoLogin) { |
896 gfx::Display::SetInternalDisplayId( | 899 display::Display::SetInternalDisplayId( |
897 gfx::Screen::GetScreen()->GetPrimaryDisplay().id()); | 900 display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
898 ASSERT_FALSE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); | 901 ASSERT_FALSE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); |
899 | 902 |
900 ash::Shell* shell = ash::Shell::GetInstance(); | 903 ash::Shell* shell = ash::Shell::GetInstance(); |
901 bool initial_rotation_lock = IsRotationLocked(); | 904 bool initial_rotation_lock = IsRotationLocked(); |
902 ASSERT_FALSE(initial_rotation_lock); | 905 ASSERT_FALSE(initial_rotation_lock); |
903 ash::DisplayManager* display_manager = shell->display_manager(); | 906 ash::DisplayManager* display_manager = shell->display_manager(); |
904 gfx::Display::Rotation initial_rotation = GetCurrentInternalDisplayRotation(); | 907 display::Display::Rotation initial_rotation = |
905 ASSERT_EQ(gfx::Display::ROTATE_0, initial_rotation); | 908 GetCurrentInternalDisplayRotation(); |
| 909 ASSERT_EQ(display::Display::ROTATE_0, initial_rotation); |
906 | 910 |
907 StoreDisplayRotationPrefs(initial_rotation_lock); | 911 StoreDisplayRotationPrefs(initial_rotation_lock); |
908 ASSERT_TRUE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); | 912 ASSERT_TRUE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); |
909 | 913 |
910 StoreDisplayRotationPrefsForTest(true, gfx::Display::ROTATE_90); | 914 StoreDisplayRotationPrefsForTest(true, display::Display::ROTATE_90); |
911 LoadDisplayPreferences(false); | 915 LoadDisplayPreferences(false); |
912 | 916 |
913 bool display_rotation_lock = | 917 bool display_rotation_lock = |
914 display_manager->registered_internal_display_rotation_lock(); | 918 display_manager->registered_internal_display_rotation_lock(); |
915 bool display_rotation = | 919 bool display_rotation = |
916 display_manager->registered_internal_display_rotation(); | 920 display_manager->registered_internal_display_rotation(); |
917 EXPECT_TRUE(display_rotation_lock); | 921 EXPECT_TRUE(display_rotation_lock); |
918 EXPECT_EQ(gfx::Display::ROTATE_90, display_rotation); | 922 EXPECT_EQ(display::Display::ROTATE_90, display_rotation); |
919 | 923 |
920 bool rotation_lock = IsRotationLocked(); | 924 bool rotation_lock = IsRotationLocked(); |
921 gfx::Display::Rotation before_maximize_mode_rotation = | 925 display::Display::Rotation before_maximize_mode_rotation = |
922 GetCurrentInternalDisplayRotation(); | 926 GetCurrentInternalDisplayRotation(); |
923 | 927 |
924 // Settings should not be applied until maximize mode activates | 928 // Settings should not be applied until maximize mode activates |
925 EXPECT_FALSE(rotation_lock); | 929 EXPECT_FALSE(rotation_lock); |
926 EXPECT_EQ(gfx::Display::ROTATE_0, before_maximize_mode_rotation); | 930 EXPECT_EQ(display::Display::ROTATE_0, before_maximize_mode_rotation); |
927 | 931 |
928 // Open up 270 degrees to trigger maximize mode | 932 // Open up 270 degrees to trigger maximize mode |
929 scoped_refptr<chromeos::AccelerometerUpdate> update( | 933 scoped_refptr<chromeos::AccelerometerUpdate> update( |
930 new chromeos::AccelerometerUpdate()); | 934 new chromeos::AccelerometerUpdate()); |
931 update->Set(chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD, 0.0f, 0.0f, | 935 update->Set(chromeos::ACCELEROMETER_SOURCE_ATTACHED_KEYBOARD, 0.0f, 0.0f, |
932 kMeanGravity); | 936 kMeanGravity); |
933 update->Set(chromeos::ACCELEROMETER_SOURCE_SCREEN, 0.0f, -kMeanGravity, 0.0f); | 937 update->Set(chromeos::ACCELEROMETER_SOURCE_SCREEN, 0.0f, -kMeanGravity, 0.0f); |
934 ash::MaximizeModeController* maximize_mode_controller = | 938 ash::MaximizeModeController* maximize_mode_controller = |
935 shell->maximize_mode_controller(); | 939 shell->maximize_mode_controller(); |
936 maximize_mode_controller->OnAccelerometerUpdated(update); | 940 maximize_mode_controller->OnAccelerometerUpdated(update); |
937 EXPECT_TRUE(maximize_mode_controller->IsMaximizeModeWindowManagerEnabled()); | 941 EXPECT_TRUE(maximize_mode_controller->IsMaximizeModeWindowManagerEnabled()); |
938 bool screen_orientation_rotation_lock = IsRotationLocked(); | 942 bool screen_orientation_rotation_lock = IsRotationLocked(); |
939 gfx::Display::Rotation maximize_mode_rotation = | 943 display::Display::Rotation maximize_mode_rotation = |
940 GetCurrentInternalDisplayRotation(); | 944 GetCurrentInternalDisplayRotation(); |
941 EXPECT_TRUE(screen_orientation_rotation_lock); | 945 EXPECT_TRUE(screen_orientation_rotation_lock); |
942 EXPECT_EQ(gfx::Display::ROTATE_90, maximize_mode_rotation); | 946 EXPECT_EQ(display::Display::ROTATE_90, maximize_mode_rotation); |
943 } | 947 } |
944 | 948 |
945 // Tests that rotation lock being set causes the rotation state to be saved. | 949 // Tests that rotation lock being set causes the rotation state to be saved. |
946 TEST_F(DisplayPreferencesTest, RotationLockTriggersStore) { | 950 TEST_F(DisplayPreferencesTest, RotationLockTriggersStore) { |
947 gfx::Display::SetInternalDisplayId( | 951 display::Display::SetInternalDisplayId( |
948 gfx::Screen::GetScreen()->GetPrimaryDisplay().id()); | 952 display::Screen::GetScreen()->GetPrimaryDisplay().id()); |
949 ASSERT_FALSE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); | 953 ASSERT_FALSE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); |
950 | 954 |
951 ash::Shell::GetInstance()->screen_orientation_controller()->SetRotationLocked( | 955 ash::Shell::GetInstance()->screen_orientation_controller()->SetRotationLocked( |
952 true); | 956 true); |
953 | 957 |
954 EXPECT_TRUE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); | 958 EXPECT_TRUE(local_state()->HasPrefPath(prefs::kDisplayRotationLock)); |
955 | 959 |
956 const base::DictionaryValue* properties = | 960 const base::DictionaryValue* properties = |
957 local_state()->GetDictionary(prefs::kDisplayRotationLock); | 961 local_state()->GetDictionary(prefs::kDisplayRotationLock); |
958 bool rotation_lock; | 962 bool rotation_lock; |
959 EXPECT_TRUE(properties->GetBoolean("lock", &rotation_lock)); | 963 EXPECT_TRUE(properties->GetBoolean("lock", &rotation_lock)); |
960 } | 964 } |
961 | 965 |
962 TEST_F(DisplayPreferencesTest, SaveUnifiedMode) { | 966 TEST_F(DisplayPreferencesTest, SaveUnifiedMode) { |
963 | 967 |
964 LoggedInAsUser(); | 968 LoggedInAsUser(); |
965 ash::DisplayManager* display_manager = | 969 ash::DisplayManager* display_manager = |
966 ash::Shell::GetInstance()->display_manager(); | 970 ash::Shell::GetInstance()->display_manager(); |
967 display_manager->SetUnifiedDesktopEnabled(true); | 971 display_manager->SetUnifiedDesktopEnabled(true); |
968 | 972 |
969 UpdateDisplay("200x200,100x100"); | 973 UpdateDisplay("200x200,100x100"); |
970 display::DisplayIdList list = display_manager->GetCurrentDisplayIdList(); | 974 display::DisplayIdList list = display_manager->GetCurrentDisplayIdList(); |
971 EXPECT_EQ("400x200", | 975 EXPECT_EQ( |
972 gfx::Screen::GetScreen()->GetPrimaryDisplay().size().ToString()); | 976 "400x200", |
| 977 display::Screen::GetScreen()->GetPrimaryDisplay().size().ToString()); |
973 | 978 |
974 const base::DictionaryValue* secondary_displays = | 979 const base::DictionaryValue* secondary_displays = |
975 local_state()->GetDictionary(prefs::kSecondaryDisplays); | 980 local_state()->GetDictionary(prefs::kSecondaryDisplays); |
976 const base::DictionaryValue* new_value = nullptr; | 981 const base::DictionaryValue* new_value = nullptr; |
977 EXPECT_TRUE(secondary_displays->GetDictionary( | 982 EXPECT_TRUE(secondary_displays->GetDictionary( |
978 ash::DisplayIdListToString(list), &new_value)); | 983 ash::DisplayIdListToString(list), &new_value)); |
979 | 984 |
980 display::DisplayLayout stored_layout; | 985 display::DisplayLayout stored_layout; |
981 EXPECT_TRUE(ash::JsonToDisplayLayout(*new_value, &stored_layout)); | 986 EXPECT_TRUE(ash::JsonToDisplayLayout(*new_value, &stored_layout)); |
982 EXPECT_TRUE(stored_layout.default_unified); | 987 EXPECT_TRUE(stored_layout.default_unified); |
983 EXPECT_FALSE(stored_layout.mirrored); | 988 EXPECT_FALSE(stored_layout.mirrored); |
984 | 989 |
985 const base::DictionaryValue* displays = | 990 const base::DictionaryValue* displays = |
986 local_state()->GetDictionary(prefs::kDisplayProperties); | 991 local_state()->GetDictionary(prefs::kDisplayProperties); |
987 int64_t unified_id = gfx::Screen::GetScreen()->GetPrimaryDisplay().id(); | 992 int64_t unified_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
988 EXPECT_FALSE( | 993 EXPECT_FALSE( |
989 displays->GetDictionary(base::Int64ToString(unified_id), &new_value)); | 994 displays->GetDictionary(base::Int64ToString(unified_id), &new_value)); |
990 | 995 |
991 ash::test::SetDisplayResolution(unified_id, gfx::Size(200, 100)); | 996 ash::test::SetDisplayResolution(unified_id, gfx::Size(200, 100)); |
992 EXPECT_EQ("200x100", | 997 EXPECT_EQ( |
993 gfx::Screen::GetScreen()->GetPrimaryDisplay().size().ToString()); | 998 "200x100", |
| 999 display::Screen::GetScreen()->GetPrimaryDisplay().size().ToString()); |
994 EXPECT_FALSE( | 1000 EXPECT_FALSE( |
995 displays->GetDictionary(base::Int64ToString(unified_id), &new_value)); | 1001 displays->GetDictionary(base::Int64ToString(unified_id), &new_value)); |
996 | 1002 |
997 // Mirror mode should remember if the default mode was unified. | 1003 // Mirror mode should remember if the default mode was unified. |
998 display_manager->SetMirrorMode(true); | 1004 display_manager->SetMirrorMode(true); |
999 ASSERT_TRUE(secondary_displays->GetDictionary( | 1005 ASSERT_TRUE(secondary_displays->GetDictionary( |
1000 ash::DisplayIdListToString(list), &new_value)); | 1006 ash::DisplayIdListToString(list), &new_value)); |
1001 EXPECT_TRUE(ash::JsonToDisplayLayout(*new_value, &stored_layout)); | 1007 EXPECT_TRUE(ash::JsonToDisplayLayout(*new_value, &stored_layout)); |
1002 EXPECT_TRUE(stored_layout.default_unified); | 1008 EXPECT_TRUE(stored_layout.default_unified); |
1003 EXPECT_TRUE(stored_layout.mirrored); | 1009 EXPECT_TRUE(stored_layout.mirrored); |
1004 | 1010 |
1005 display_manager->SetMirrorMode(false); | 1011 display_manager->SetMirrorMode(false); |
1006 ASSERT_TRUE(secondary_displays->GetDictionary( | 1012 ASSERT_TRUE(secondary_displays->GetDictionary( |
1007 ash::DisplayIdListToString(list), &new_value)); | 1013 ash::DisplayIdListToString(list), &new_value)); |
1008 EXPECT_TRUE(ash::JsonToDisplayLayout(*new_value, &stored_layout)); | 1014 EXPECT_TRUE(ash::JsonToDisplayLayout(*new_value, &stored_layout)); |
1009 EXPECT_TRUE(stored_layout.default_unified); | 1015 EXPECT_TRUE(stored_layout.default_unified); |
1010 EXPECT_FALSE(stored_layout.mirrored); | 1016 EXPECT_FALSE(stored_layout.mirrored); |
1011 | 1017 |
1012 // Exit unified mode. | 1018 // Exit unified mode. |
1013 display_manager->SetDefaultMultiDisplayModeForCurrentDisplays( | 1019 display_manager->SetDefaultMultiDisplayModeForCurrentDisplays( |
1014 ash::DisplayManager::EXTENDED); | 1020 ash::DisplayManager::EXTENDED); |
1015 ASSERT_TRUE(secondary_displays->GetDictionary( | 1021 ASSERT_TRUE(secondary_displays->GetDictionary( |
1016 ash::DisplayIdListToString(list), &new_value)); | 1022 ash::DisplayIdListToString(list), &new_value)); |
1017 EXPECT_TRUE(ash::JsonToDisplayLayout(*new_value, &stored_layout)); | 1023 EXPECT_TRUE(ash::JsonToDisplayLayout(*new_value, &stored_layout)); |
1018 EXPECT_FALSE(stored_layout.default_unified); | 1024 EXPECT_FALSE(stored_layout.default_unified); |
1019 EXPECT_FALSE(stored_layout.mirrored); | 1025 EXPECT_FALSE(stored_layout.mirrored); |
1020 } | 1026 } |
1021 | 1027 |
1022 TEST_F(DisplayPreferencesTest, RestoreUnifiedMode) { | 1028 TEST_F(DisplayPreferencesTest, RestoreUnifiedMode) { |
1023 int64_t id1 = gfx::Screen::GetScreen()->GetPrimaryDisplay().id(); | 1029 int64_t id1 = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
1024 display::DisplayIdList list = ash::test::CreateDisplayIdList2(id1, id1 + 1); | 1030 display::DisplayIdList list = ash::test::CreateDisplayIdList2(id1, id1 + 1); |
1025 StoreDisplayBoolPropertyForList(list, "default_unified", true); | 1031 StoreDisplayBoolPropertyForList(list, "default_unified", true); |
1026 StoreDisplayPropertyForList( | 1032 StoreDisplayPropertyForList( |
1027 list, "primary-id", | 1033 list, "primary-id", |
1028 base::WrapUnique(new base::StringValue(base::Int64ToString(id1)))); | 1034 base::WrapUnique(new base::StringValue(base::Int64ToString(id1)))); |
1029 LoadDisplayPreferences(false); | 1035 LoadDisplayPreferences(false); |
1030 | 1036 |
1031 // Should not restore to unified unless unified desktop is enabled. | 1037 // Should not restore to unified unless unified desktop is enabled. |
1032 UpdateDisplay("100x100,200x200"); | 1038 UpdateDisplay("100x100,200x200"); |
1033 ash::DisplayManager* display_manager = | 1039 ash::DisplayManager* display_manager = |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1080 local_state()->GetDictionary(prefs::kSecondaryDisplays); | 1086 local_state()->GetDictionary(prefs::kSecondaryDisplays); |
1081 const base::DictionaryValue* new_value = nullptr; | 1087 const base::DictionaryValue* new_value = nullptr; |
1082 EXPECT_TRUE(secondary_displays->GetDictionary( | 1088 EXPECT_TRUE(secondary_displays->GetDictionary( |
1083 ash::DisplayIdListToString(list), &new_value)); | 1089 ash::DisplayIdListToString(list), &new_value)); |
1084 } | 1090 } |
1085 | 1091 |
1086 TEST_F(DisplayPreferencesTest, RestoreThreeDisplays) { | 1092 TEST_F(DisplayPreferencesTest, RestoreThreeDisplays) { |
1087 LoggedInAsUser(); | 1093 LoggedInAsUser(); |
1088 ash::DisplayManager* display_manager = | 1094 ash::DisplayManager* display_manager = |
1089 ash::Shell::GetInstance()->display_manager(); | 1095 ash::Shell::GetInstance()->display_manager(); |
1090 int64_t id1 = gfx::Screen::GetScreen()->GetPrimaryDisplay().id(); | 1096 int64_t id1 = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
1091 display::DisplayIdList list = | 1097 display::DisplayIdList list = |
1092 ash::test::CreateDisplayIdListN(3, id1, id1 + 1, id1 + 2); | 1098 ash::test::CreateDisplayIdListN(3, id1, id1 + 1, id1 + 2); |
1093 | 1099 |
1094 display::DisplayLayoutBuilder builder(list[0]); | 1100 display::DisplayLayoutBuilder builder(list[0]); |
1095 builder.AddDisplayPlacement(list[1], list[0], display::DisplayPlacement::LEFT, | 1101 builder.AddDisplayPlacement(list[1], list[0], display::DisplayPlacement::LEFT, |
1096 0); | 1102 0); |
1097 builder.AddDisplayPlacement(list[2], list[1], | 1103 builder.AddDisplayPlacement(list[2], list[1], |
1098 display::DisplayPlacement::BOTTOM, 100); | 1104 display::DisplayPlacement::BOTTOM, 100); |
1099 StoreDisplayLayoutPrefForTest(list, *builder.Build()); | 1105 StoreDisplayLayoutPrefForTest(list, *builder.Build()); |
1100 LoadDisplayPreferences(false); | 1106 LoadDisplayPreferences(false); |
1101 | 1107 |
1102 UpdateDisplay("200x200,200x200,300x300"); | 1108 UpdateDisplay("200x200,200x200,300x300"); |
1103 display::DisplayIdList new_list = display_manager->GetCurrentDisplayIdList(); | 1109 display::DisplayIdList new_list = display_manager->GetCurrentDisplayIdList(); |
1104 ASSERT_EQ(3u, list.size()); | 1110 ASSERT_EQ(3u, list.size()); |
1105 ASSERT_EQ(list[0], new_list[0]); | 1111 ASSERT_EQ(list[0], new_list[0]); |
1106 ASSERT_EQ(list[1], new_list[1]); | 1112 ASSERT_EQ(list[1], new_list[1]); |
1107 ASSERT_EQ(list[2], new_list[2]); | 1113 ASSERT_EQ(list[2], new_list[2]); |
1108 | 1114 |
1109 EXPECT_EQ(gfx::Rect(0, 0, 200, 200), | 1115 EXPECT_EQ(gfx::Rect(0, 0, 200, 200), |
1110 display_manager->GetDisplayForId(list[0]).bounds()); | 1116 display_manager->GetDisplayForId(list[0]).bounds()); |
1111 EXPECT_EQ(gfx::Rect(-200, 0, 200, 200), | 1117 EXPECT_EQ(gfx::Rect(-200, 0, 200, 200), |
1112 display_manager->GetDisplayForId(list[1]).bounds()); | 1118 display_manager->GetDisplayForId(list[1]).bounds()); |
1113 EXPECT_EQ(gfx::Rect(-100, 200, 300, 300), | 1119 EXPECT_EQ(gfx::Rect(-100, 200, 300, 300), |
1114 display_manager->GetDisplayForId(list[2]).bounds()); | 1120 display_manager->GetDisplayForId(list[2]).bounds()); |
1115 } | 1121 } |
1116 | 1122 |
1117 } // namespace chromeos | 1123 } // namespace chromeos |
OLD | NEW |