| 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> |
| 8 |
| 7 #include <string> | 9 #include <string> |
| 8 #include <vector> | 10 #include <vector> |
| 9 | 11 |
| 10 #include "ash/display/display_layout_store.h" | 12 #include "ash/display/display_layout_store.h" |
| 11 #include "ash/display/display_manager.h" | 13 #include "ash/display/display_manager.h" |
| 12 #include "ash/display/display_util.h" | 14 #include "ash/display/display_util.h" |
| 13 #include "ash/display/resolution_notification_controller.h" | 15 #include "ash/display/resolution_notification_controller.h" |
| 14 #include "ash/display/screen_orientation_controller_chromeos.h" | 16 #include "ash/display/screen_orientation_controller_chromeos.h" |
| 15 #include "ash/display/window_tree_host_manager.h" | 17 #include "ash/display/window_tree_host_manager.h" |
| 16 #include "ash/screen_util.h" | 18 #include "ash/screen_util.h" |
| 17 #include "ash/shell.h" | 19 #include "ash/shell.h" |
| 18 #include "ash/test/ash_test_base.h" | 20 #include "ash/test/ash_test_base.h" |
| 19 #include "ash/test/display_manager_test_api.h" | 21 #include "ash/test/display_manager_test_api.h" |
| 20 #include "ash/wm/maximize_mode/maximize_mode_controller.h" | 22 #include "ash/wm/maximize_mode/maximize_mode_controller.h" |
| 23 #include "base/macros.h" |
| 21 #include "base/memory/ref_counted.h" | 24 #include "base/memory/ref_counted.h" |
| 22 #include "base/prefs/scoped_user_pref_update.h" | 25 #include "base/prefs/scoped_user_pref_update.h" |
| 23 #include "base/prefs/testing_pref_service.h" | 26 #include "base/prefs/testing_pref_service.h" |
| 24 #include "base/strings/string_number_conversions.h" | 27 #include "base/strings/string_number_conversions.h" |
| 25 #include "base/values.h" | 28 #include "base/values.h" |
| 26 #include "chrome/browser/chromeos/display/display_configuration_observer.h" | 29 #include "chrome/browser/chromeos/display/display_configuration_observer.h" |
| 27 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" | 30 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" |
| 28 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" | 31 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" |
| 29 #include "chrome/common/pref_names.h" | 32 #include "chrome/common/pref_names.h" |
| 30 #include "chrome/test/base/testing_browser_process.h" | 33 #include "chrome/test/base/testing_browser_process.h" |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 .WillRepeatedly(testing::Return(false)); | 98 .WillRepeatedly(testing::Return(false)); |
| 96 EXPECT_CALL(*mock_user_manager_, IsLoggedInAsSupervisedUser()) | 99 EXPECT_CALL(*mock_user_manager_, IsLoggedInAsSupervisedUser()) |
| 97 .WillRepeatedly(testing::Return(false)); | 100 .WillRepeatedly(testing::Return(false)); |
| 98 } | 101 } |
| 99 | 102 |
| 100 // Do not use the implementation of display_preferences.cc directly to avoid | 103 // Do not use the implementation of display_preferences.cc directly to avoid |
| 101 // notifying the update to the system. | 104 // notifying the update to the system. |
| 102 void StoreDisplayLayoutPrefForPair(const ash::DisplayIdPair& pair, | 105 void StoreDisplayLayoutPrefForPair(const ash::DisplayIdPair& pair, |
| 103 ash::DisplayLayout::Position layout, | 106 ash::DisplayLayout::Position layout, |
| 104 int offset, | 107 int offset, |
| 105 int64 primary_id) { | 108 int64_t primary_id) { |
| 106 std::string name = ToPairString(pair); | 109 std::string name = ToPairString(pair); |
| 107 DictionaryPrefUpdate update(&local_state_, prefs::kSecondaryDisplays); | 110 DictionaryPrefUpdate update(&local_state_, prefs::kSecondaryDisplays); |
| 108 ash::DisplayLayout display_layout(layout, offset); | 111 ash::DisplayLayout display_layout(layout, offset); |
| 109 display_layout.primary_id = primary_id; | 112 display_layout.primary_id = primary_id; |
| 110 | 113 |
| 111 DCHECK(!name.empty()); | 114 DCHECK(!name.empty()); |
| 112 | 115 |
| 113 base::DictionaryValue* pref_data = update.Get(); | 116 base::DictionaryValue* pref_data = update.Get(); |
| 114 scoped_ptr<base::Value>layout_value(new base::DictionaryValue()); | 117 scoped_ptr<base::Value>layout_value(new base::DictionaryValue()); |
| 115 if (pref_data->HasKey(name)) { | 118 if (pref_data->HasKey(name)) { |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 StoreDisplayPropertyForPair( | 152 StoreDisplayPropertyForPair( |
| 150 pair, key, make_scoped_ptr(new base::FundamentalValue(value))); | 153 pair, key, make_scoped_ptr(new base::FundamentalValue(value))); |
| 151 } | 154 } |
| 152 | 155 |
| 153 void StoreDisplayLayoutPrefForPair(const ash::DisplayIdPair& pair, | 156 void StoreDisplayLayoutPrefForPair(const ash::DisplayIdPair& pair, |
| 154 ash::DisplayLayout::Position layout, | 157 ash::DisplayLayout::Position layout, |
| 155 int offset) { | 158 int offset) { |
| 156 StoreDisplayLayoutPrefForPair(pair, layout, offset, pair.first); | 159 StoreDisplayLayoutPrefForPair(pair, layout, offset, pair.first); |
| 157 } | 160 } |
| 158 | 161 |
| 159 void StoreDisplayOverscan(int64 id, const gfx::Insets& insets) { | 162 void StoreDisplayOverscan(int64_t id, const gfx::Insets& insets) { |
| 160 DictionaryPrefUpdate update(&local_state_, prefs::kDisplayProperties); | 163 DictionaryPrefUpdate update(&local_state_, prefs::kDisplayProperties); |
| 161 const std::string name = base::Int64ToString(id); | 164 const std::string name = base::Int64ToString(id); |
| 162 | 165 |
| 163 base::DictionaryValue* pref_data = update.Get(); | 166 base::DictionaryValue* pref_data = update.Get(); |
| 164 base::DictionaryValue* insets_value = new base::DictionaryValue(); | 167 base::DictionaryValue* insets_value = new base::DictionaryValue(); |
| 165 insets_value->SetInteger("insets_top", insets.top()); | 168 insets_value->SetInteger("insets_top", insets.top()); |
| 166 insets_value->SetInteger("insets_left", insets.left()); | 169 insets_value->SetInteger("insets_left", insets.left()); |
| 167 insets_value->SetInteger("insets_bottom", insets.bottom()); | 170 insets_value->SetInteger("insets_bottom", insets.bottom()); |
| 168 insets_value->SetInteger("insets_right", insets.right()); | 171 insets_value->SetInteger("insets_right", insets.right()); |
| 169 pref_data->Set(name, insets_value); | 172 pref_data->Set(name, insets_value); |
| 170 } | 173 } |
| 171 | 174 |
| 172 void StoreColorProfile(int64 id, const std::string& profile) { | 175 void StoreColorProfile(int64_t id, const std::string& profile) { |
| 173 DictionaryPrefUpdate update(&local_state_, prefs::kDisplayProperties); | 176 DictionaryPrefUpdate update(&local_state_, prefs::kDisplayProperties); |
| 174 const std::string name = base::Int64ToString(id); | 177 const std::string name = base::Int64ToString(id); |
| 175 | 178 |
| 176 base::DictionaryValue* pref_data = update.Get(); | 179 base::DictionaryValue* pref_data = update.Get(); |
| 177 base::DictionaryValue* property = new base::DictionaryValue(); | 180 base::DictionaryValue* property = new base::DictionaryValue(); |
| 178 property->SetString("color_profile_name", profile); | 181 property->SetString("color_profile_name", profile); |
| 179 pref_data->Set(name, property); | 182 pref_data->Set(name, property); |
| 180 } | 183 } |
| 181 | 184 |
| 182 void StoreDisplayRotationPrefsForTest(bool rotation_lock, | 185 void StoreDisplayRotationPrefsForTest(bool rotation_lock, |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 EXPECT_EQ("left, 30", GetRegisteredDisplayLayoutStr(dummy_pair)); | 240 EXPECT_EQ("left, 30", GetRegisteredDisplayLayoutStr(dummy_pair)); |
| 238 } | 241 } |
| 239 | 242 |
| 240 TEST_F(DisplayPreferencesTest, BasicStores) { | 243 TEST_F(DisplayPreferencesTest, BasicStores) { |
| 241 ash::WindowTreeHostManager* window_tree_host_manager = | 244 ash::WindowTreeHostManager* window_tree_host_manager = |
| 242 ash::Shell::GetInstance()->window_tree_host_manager(); | 245 ash::Shell::GetInstance()->window_tree_host_manager(); |
| 243 ash::DisplayManager* display_manager = | 246 ash::DisplayManager* display_manager = |
| 244 ash::Shell::GetInstance()->display_manager(); | 247 ash::Shell::GetInstance()->display_manager(); |
| 245 | 248 |
| 246 UpdateDisplay("200x200*2, 400x300#400x400|300x200*1.25"); | 249 UpdateDisplay("200x200*2, 400x300#400x400|300x200*1.25"); |
| 247 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); | 250 int64_t id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); |
| 248 ash::test::ScopedSetInternalDisplayId set_internal(id1); | 251 ash::test::ScopedSetInternalDisplayId set_internal(id1); |
| 249 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); | 252 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); |
| 250 int64 dummy_id = id2 + 1; | 253 int64_t dummy_id = id2 + 1; |
| 251 ASSERT_NE(id1, dummy_id); | 254 ASSERT_NE(id1, dummy_id); |
| 252 std::vector<ui::ColorCalibrationProfile> profiles; | 255 std::vector<ui::ColorCalibrationProfile> profiles; |
| 253 profiles.push_back(ui::COLOR_PROFILE_STANDARD); | 256 profiles.push_back(ui::COLOR_PROFILE_STANDARD); |
| 254 profiles.push_back(ui::COLOR_PROFILE_DYNAMIC); | 257 profiles.push_back(ui::COLOR_PROFILE_DYNAMIC); |
| 255 profiles.push_back(ui::COLOR_PROFILE_MOVIE); | 258 profiles.push_back(ui::COLOR_PROFILE_MOVIE); |
| 256 profiles.push_back(ui::COLOR_PROFILE_READING); | 259 profiles.push_back(ui::COLOR_PROFILE_READING); |
| 257 // Allows only |id1|. | 260 // Allows only |id1|. |
| 258 ash::test::DisplayManagerTestApi().SetAvailableColorProfiles(id1, profiles); | 261 ash::test::DisplayManagerTestApi().SetAvailableColorProfiles(id1, profiles); |
| 259 display_manager->SetColorCalibrationProfile(id1, ui::COLOR_PROFILE_DYNAMIC); | 262 display_manager->SetColorCalibrationProfile(id1, ui::COLOR_PROFILE_DYNAMIC); |
| 260 display_manager->SetColorCalibrationProfile(id2, ui::COLOR_PROFILE_DYNAMIC); | 263 display_manager->SetColorCalibrationProfile(id2, ui::COLOR_PROFILE_DYNAMIC); |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 464 EXPECT_TRUE(property->GetInteger("width", &width)); | 467 EXPECT_TRUE(property->GetInteger("width", &width)); |
| 465 EXPECT_TRUE(property->GetInteger("height", &height)); | 468 EXPECT_TRUE(property->GetInteger("height", &height)); |
| 466 EXPECT_EQ(500, width); | 469 EXPECT_EQ(500, width); |
| 467 EXPECT_EQ(400, height); | 470 EXPECT_EQ(400, height); |
| 468 } | 471 } |
| 469 | 472 |
| 470 TEST_F(DisplayPreferencesTest, PreventStore) { | 473 TEST_F(DisplayPreferencesTest, PreventStore) { |
| 471 ResolutionNotificationController::SuppressTimerForTest(); | 474 ResolutionNotificationController::SuppressTimerForTest(); |
| 472 LoggedInAsUser(); | 475 LoggedInAsUser(); |
| 473 UpdateDisplay("400x300#500x400|400x300|300x200"); | 476 UpdateDisplay("400x300#500x400|400x300|300x200"); |
| 474 int64 id = ash::Shell::GetScreen()->GetPrimaryDisplay().id(); | 477 int64_t id = ash::Shell::GetScreen()->GetPrimaryDisplay().id(); |
| 475 // Set display's resolution in single display. It creates the notification and | 478 // Set display's resolution in single display. It creates the notification and |
| 476 // display preferences should not stored meanwhile. | 479 // display preferences should not stored meanwhile. |
| 477 ash::Shell* shell = ash::Shell::GetInstance(); | 480 ash::Shell* shell = ash::Shell::GetInstance(); |
| 478 ash::DisplayMode old_mode; | 481 ash::DisplayMode old_mode; |
| 479 ash::DisplayMode new_mode; | 482 ash::DisplayMode new_mode; |
| 480 old_mode.size = gfx::Size(400, 300); | 483 old_mode.size = gfx::Size(400, 300); |
| 481 new_mode.size = gfx::Size(500, 400); | 484 new_mode.size = gfx::Size(500, 400); |
| 482 if (shell->display_manager()->SetDisplayMode(id, new_mode)) { | 485 if (shell->display_manager()->SetDisplayMode(id, new_mode)) { |
| 483 shell->resolution_notification_controller()->PrepareNotification( | 486 shell->resolution_notification_controller()->PrepareNotification( |
| 484 id, old_mode, new_mode, base::Closure()); | 487 id, old_mode, new_mode, base::Closure()); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 510 property = NULL; | 513 property = NULL; |
| 511 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id), &property)); | 514 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id), &property)); |
| 512 EXPECT_TRUE(property->GetInteger("width", &width)); | 515 EXPECT_TRUE(property->GetInteger("width", &width)); |
| 513 EXPECT_TRUE(property->GetInteger("height", &height)); | 516 EXPECT_TRUE(property->GetInteger("height", &height)); |
| 514 EXPECT_EQ(300, width); | 517 EXPECT_EQ(300, width); |
| 515 EXPECT_EQ(200, height); | 518 EXPECT_EQ(200, height); |
| 516 } | 519 } |
| 517 | 520 |
| 518 TEST_F(DisplayPreferencesTest, StoreForSwappedDisplay) { | 521 TEST_F(DisplayPreferencesTest, StoreForSwappedDisplay) { |
| 519 UpdateDisplay("100x100,200x200"); | 522 UpdateDisplay("100x100,200x200"); |
| 520 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); | 523 int64_t id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); |
| 521 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); | 524 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); |
| 522 | 525 |
| 523 ash::WindowTreeHostManager* window_tree_host_manager = | 526 ash::WindowTreeHostManager* window_tree_host_manager = |
| 524 ash::Shell::GetInstance()->window_tree_host_manager(); | 527 ash::Shell::GetInstance()->window_tree_host_manager(); |
| 525 window_tree_host_manager->SwapPrimaryDisplay(); | 528 window_tree_host_manager->SwapPrimaryDisplay(); |
| 526 ASSERT_EQ(id1, ash::ScreenUtil::GetSecondaryDisplay().id()); | 529 ASSERT_EQ(id1, ash::ScreenUtil::GetSecondaryDisplay().id()); |
| 527 | 530 |
| 528 LoggedInAsUser(); | 531 LoggedInAsUser(); |
| 529 ash::DisplayLayout layout(ash::DisplayLayout::TOP, 10); | 532 ash::DisplayLayout layout(ash::DisplayLayout::TOP, 10); |
| 530 SetCurrentDisplayLayout(layout); | 533 SetCurrentDisplayLayout(layout); |
| 531 layout = layout.Invert(); | 534 layout = layout.Invert(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 547 EXPECT_TRUE(ash::DisplayLayout::ConvertFromValue(*new_value, &stored_layout)); | 550 EXPECT_TRUE(ash::DisplayLayout::ConvertFromValue(*new_value, &stored_layout)); |
| 548 EXPECT_EQ(layout.position, stored_layout.position); | 551 EXPECT_EQ(layout.position, stored_layout.position); |
| 549 EXPECT_EQ(layout.offset, stored_layout.offset); | 552 EXPECT_EQ(layout.offset, stored_layout.offset); |
| 550 EXPECT_EQ(id1, stored_layout.primary_id); | 553 EXPECT_EQ(id1, stored_layout.primary_id); |
| 551 } | 554 } |
| 552 | 555 |
| 553 TEST_F(DisplayPreferencesTest, RestoreColorProfiles) { | 556 TEST_F(DisplayPreferencesTest, RestoreColorProfiles) { |
| 554 ash::DisplayManager* display_manager = | 557 ash::DisplayManager* display_manager = |
| 555 ash::Shell::GetInstance()->display_manager(); | 558 ash::Shell::GetInstance()->display_manager(); |
| 556 | 559 |
| 557 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); | 560 int64_t id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); |
| 558 | 561 |
| 559 StoreColorProfile(id1, "dynamic"); | 562 StoreColorProfile(id1, "dynamic"); |
| 560 | 563 |
| 561 LoggedInAsUser(); | 564 LoggedInAsUser(); |
| 562 LoadDisplayPreferences(false); | 565 LoadDisplayPreferences(false); |
| 563 | 566 |
| 564 // id1's available color profiles list is empty, means somehow the color | 567 // id1's available color profiles list is empty, means somehow the color |
| 565 // profile suport is temporary in trouble. | 568 // profile suport is temporary in trouble. |
| 566 EXPECT_NE(ui::COLOR_PROFILE_DYNAMIC, | 569 EXPECT_NE(ui::COLOR_PROFILE_DYNAMIC, |
| 567 display_manager->GetDisplayInfo(id1).color_profile()); | 570 display_manager->GetDisplayInfo(id1).color_profile()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 579 display_manager->GetDisplayInfo(id1).color_profile()); | 582 display_manager->GetDisplayInfo(id1).color_profile()); |
| 580 } | 583 } |
| 581 | 584 |
| 582 TEST_F(DisplayPreferencesTest, DontStoreInGuestMode) { | 585 TEST_F(DisplayPreferencesTest, DontStoreInGuestMode) { |
| 583 ash::WindowTreeHostManager* window_tree_host_manager = | 586 ash::WindowTreeHostManager* window_tree_host_manager = |
| 584 ash::Shell::GetInstance()->window_tree_host_manager(); | 587 ash::Shell::GetInstance()->window_tree_host_manager(); |
| 585 | 588 |
| 586 UpdateDisplay("200x200*2,200x200"); | 589 UpdateDisplay("200x200*2,200x200"); |
| 587 | 590 |
| 588 LoggedInAsGuest(); | 591 LoggedInAsGuest(); |
| 589 int64 id1 = ash::Shell::GetScreen()->GetPrimaryDisplay().id(); | 592 int64_t id1 = ash::Shell::GetScreen()->GetPrimaryDisplay().id(); |
| 590 ash::test::ScopedSetInternalDisplayId set_internal(id1); | 593 ash::test::ScopedSetInternalDisplayId set_internal(id1); |
| 591 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); | 594 int64_t id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); |
| 592 ash::DisplayLayout layout(ash::DisplayLayout::TOP, 10); | 595 ash::DisplayLayout layout(ash::DisplayLayout::TOP, 10); |
| 593 SetCurrentDisplayLayout(layout); | 596 SetCurrentDisplayLayout(layout); |
| 594 ash::DisplayManager* display_manager = | 597 ash::DisplayManager* display_manager = |
| 595 ash::Shell::GetInstance()->display_manager(); | 598 ash::Shell::GetInstance()->display_manager(); |
| 596 ash::SetDisplayUIScale(id1, 1.25f); | 599 ash::SetDisplayUIScale(id1, 1.25f); |
| 597 window_tree_host_manager->SetPrimaryDisplayId(id2); | 600 window_tree_host_manager->SetPrimaryDisplayId(id2); |
| 598 int64 new_primary = ash::Shell::GetScreen()->GetPrimaryDisplay().id(); | 601 int64_t new_primary = ash::Shell::GetScreen()->GetPrimaryDisplay().id(); |
| 599 window_tree_host_manager->SetOverscanInsets(new_primary, | 602 window_tree_host_manager->SetOverscanInsets(new_primary, |
| 600 gfx::Insets(10, 11, 12, 13)); | 603 gfx::Insets(10, 11, 12, 13)); |
| 601 display_manager->SetDisplayRotation(new_primary, gfx::Display::ROTATE_90, | 604 display_manager->SetDisplayRotation(new_primary, gfx::Display::ROTATE_90, |
| 602 gfx::Display::ROTATION_SOURCE_USER); | 605 gfx::Display::ROTATION_SOURCE_USER); |
| 603 | 606 |
| 604 // Does not store the preferences locally. | 607 // Does not store the preferences locally. |
| 605 EXPECT_FALSE(local_state()->FindPreference( | 608 EXPECT_FALSE(local_state()->FindPreference( |
| 606 prefs::kSecondaryDisplays)->HasUserSetting()); | 609 prefs::kSecondaryDisplays)->HasUserSetting()); |
| 607 EXPECT_FALSE(local_state()->FindPreference( | 610 EXPECT_FALSE(local_state()->FindPreference( |
| 608 prefs::kDisplayProperties)->HasUserSetting()); | 611 prefs::kDisplayProperties)->HasUserSetting()); |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 894 EXPECT_TRUE( | 897 EXPECT_TRUE( |
| 895 secondary_displays->GetDictionary(ToPairString(pair), &new_value)); | 898 secondary_displays->GetDictionary(ToPairString(pair), &new_value)); |
| 896 | 899 |
| 897 ash::DisplayLayout stored_layout; | 900 ash::DisplayLayout stored_layout; |
| 898 EXPECT_TRUE(ash::DisplayLayout::ConvertFromValue(*new_value, &stored_layout)); | 901 EXPECT_TRUE(ash::DisplayLayout::ConvertFromValue(*new_value, &stored_layout)); |
| 899 EXPECT_TRUE(stored_layout.default_unified); | 902 EXPECT_TRUE(stored_layout.default_unified); |
| 900 EXPECT_FALSE(stored_layout.mirrored); | 903 EXPECT_FALSE(stored_layout.mirrored); |
| 901 | 904 |
| 902 const base::DictionaryValue* displays = | 905 const base::DictionaryValue* displays = |
| 903 local_state()->GetDictionary(prefs::kDisplayProperties); | 906 local_state()->GetDictionary(prefs::kDisplayProperties); |
| 904 int64 unified_id = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); | 907 int64_t unified_id = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); |
| 905 EXPECT_FALSE( | 908 EXPECT_FALSE( |
| 906 displays->GetDictionary(base::Int64ToString(unified_id), &new_value)); | 909 displays->GetDictionary(base::Int64ToString(unified_id), &new_value)); |
| 907 | 910 |
| 908 ash::test::SetDisplayResolution(unified_id, gfx::Size(200, 100)); | 911 ash::test::SetDisplayResolution(unified_id, gfx::Size(200, 100)); |
| 909 EXPECT_EQ( | 912 EXPECT_EQ( |
| 910 "200x100", | 913 "200x100", |
| 911 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().size().ToString()); | 914 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().size().ToString()); |
| 912 EXPECT_FALSE( | 915 EXPECT_FALSE( |
| 913 displays->GetDictionary(base::Int64ToString(unified_id), &new_value)); | 916 displays->GetDictionary(base::Int64ToString(unified_id), &new_value)); |
| 914 | 917 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 932 ash::DisplayManager::EXTENDED); | 935 ash::DisplayManager::EXTENDED); |
| 933 display_manager->ReconfigureDisplays(); | 936 display_manager->ReconfigureDisplays(); |
| 934 ASSERT_TRUE( | 937 ASSERT_TRUE( |
| 935 secondary_displays->GetDictionary(ToPairString(pair), &new_value)); | 938 secondary_displays->GetDictionary(ToPairString(pair), &new_value)); |
| 936 EXPECT_TRUE(ash::DisplayLayout::ConvertFromValue(*new_value, &stored_layout)); | 939 EXPECT_TRUE(ash::DisplayLayout::ConvertFromValue(*new_value, &stored_layout)); |
| 937 EXPECT_FALSE(stored_layout.default_unified); | 940 EXPECT_FALSE(stored_layout.default_unified); |
| 938 EXPECT_FALSE(stored_layout.mirrored); | 941 EXPECT_FALSE(stored_layout.mirrored); |
| 939 } | 942 } |
| 940 | 943 |
| 941 TEST_F(DisplayPreferencesTest, RestoreUnifiedMode) { | 944 TEST_F(DisplayPreferencesTest, RestoreUnifiedMode) { |
| 942 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); | 945 int64_t id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); |
| 943 ash::DisplayIdPair pair = std::make_pair(id1, id1 + 1); | 946 ash::DisplayIdPair pair = std::make_pair(id1, id1 + 1); |
| 944 StoreDisplayBoolPropertyForPair(pair, "default_unified", true); | 947 StoreDisplayBoolPropertyForPair(pair, "default_unified", true); |
| 945 StoreDisplayPropertyForPair( | 948 StoreDisplayPropertyForPair( |
| 946 pair, "primary-id", | 949 pair, "primary-id", |
| 947 make_scoped_ptr(new base::StringValue(base::Int64ToString(id1)))); | 950 make_scoped_ptr(new base::StringValue(base::Int64ToString(id1)))); |
| 948 LoadDisplayPreferences(false); | 951 LoadDisplayPreferences(false); |
| 949 | 952 |
| 950 // Should not restore to unified unless unified desktop is enabled. | 953 // Should not restore to unified unless unified desktop is enabled. |
| 951 UpdateDisplay("100x100,200x200"); | 954 UpdateDisplay("100x100,200x200"); |
| 952 ash::DisplayManager* display_manager = | 955 ash::DisplayManager* display_manager = |
| (...skipping 20 matching lines...) Expand all Loading... |
| 973 // Sanity check. Restore to extended. | 976 // Sanity check. Restore to extended. |
| 974 StoreDisplayBoolPropertyForPair(pair, "default_unified", false); | 977 StoreDisplayBoolPropertyForPair(pair, "default_unified", false); |
| 975 StoreDisplayBoolPropertyForPair(pair, "mirrored", false); | 978 StoreDisplayBoolPropertyForPair(pair, "mirrored", false); |
| 976 LoadDisplayPreferences(false); | 979 LoadDisplayPreferences(false); |
| 977 UpdateDisplay("100x100,200x200"); | 980 UpdateDisplay("100x100,200x200"); |
| 978 EXPECT_FALSE(display_manager->IsInMirrorMode()); | 981 EXPECT_FALSE(display_manager->IsInMirrorMode()); |
| 979 EXPECT_FALSE(display_manager->IsInUnifiedMode()); | 982 EXPECT_FALSE(display_manager->IsInUnifiedMode()); |
| 980 } | 983 } |
| 981 | 984 |
| 982 } // namespace chromeos | 985 } // namespace chromeos |
| OLD | NEW |