| 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 "ash/display/display_controller.h" | 7 #include "ash/display/display_controller.h" |
| 8 #include "ash/display/display_manager.h" |
| 8 #include "ash/screen_ash.h" | 9 #include "ash/screen_ash.h" |
| 9 #include "ash/shell.h" | 10 #include "ash/shell.h" |
| 10 #include "ash/test/ash_test_base.h" | 11 #include "ash/test/ash_test_base.h" |
| 11 #include "base/prefs/testing_pref_service.h" | 12 #include "base/prefs/testing_pref_service.h" |
| 12 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
| 13 #include "base/values.h" | 14 #include "base/values.h" |
| 14 #include "chrome/browser/chromeos/display/display_configuration_observer.h" | 15 #include "chrome/browser/chromeos/display/display_configuration_observer.h" |
| 15 #include "chrome/browser/chromeos/login/mock_user_manager.h" | 16 #include "chrome/browser/chromeos/login/mock_user_manager.h" |
| 16 #include "chrome/browser/chromeos/login/user_manager.h" | 17 #include "chrome/browser/chromeos/login/user_manager.h" |
| 17 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 18 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
| 18 #include "chrome/common/pref_names.h" | 19 #include "chrome/common/pref_names.h" |
| 19 #include "chrome/test/base/testing_browser_process.h" | 20 #include "chrome/test/base/testing_browser_process.h" |
| 20 | 21 |
| 21 namespace chromeos { | 22 namespace chromeos { |
| 22 namespace { | 23 namespace { |
| 23 | 24 |
| 24 ash::DisplayController* GetDisplayController() { | |
| 25 return ash::Shell::GetInstance()->display_controller(); | |
| 26 } | |
| 27 | |
| 28 class DisplayPreferencesTest : public ash::test::AshTestBase { | 25 class DisplayPreferencesTest : public ash::test::AshTestBase { |
| 29 protected: | 26 protected: |
| 30 DisplayPreferencesTest() : ash::test::AshTestBase() {} | 27 DisplayPreferencesTest() : ash::test::AshTestBase() {} |
| 31 virtual ~DisplayPreferencesTest() {} | 28 virtual ~DisplayPreferencesTest() {} |
| 32 | 29 |
| 33 virtual void SetUp() OVERRIDE { | 30 virtual void SetUp() OVERRIDE { |
| 34 ash::test::AshTestBase::SetUp(); | 31 ash::test::AshTestBase::SetUp(); |
| 35 RegisterDisplayLocalStatePrefs(local_state_.registry()); | 32 RegisterDisplayLocalStatePrefs(local_state_.registry()); |
| 36 TestingBrowserProcess::GetGlobal()->SetLocalState(&local_state_); | 33 TestingBrowserProcess::GetGlobal()->SetLocalState(&local_state_); |
| 37 observer_.reset(new DisplayConfigurationObserver()); | 34 observer_.reset(new DisplayConfigurationObserver()); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 local_state_.SetInteger( | 103 local_state_.SetInteger( |
| 107 prefs::kSecondaryDisplayLayout, static_cast<int>(layout)); | 104 prefs::kSecondaryDisplayLayout, static_cast<int>(layout)); |
| 108 local_state_.SetInteger(prefs::kSecondaryDisplayOffset, offset); | 105 local_state_.SetInteger(prefs::kSecondaryDisplayOffset, offset); |
| 109 } | 106 } |
| 110 | 107 |
| 111 void StorePrimaryDisplayId(int64 display_id) { | 108 void StorePrimaryDisplayId(int64 display_id) { |
| 112 local_state_.SetInt64(prefs::kPrimaryDisplayID, display_id); | 109 local_state_.SetInt64(prefs::kPrimaryDisplayID, display_id); |
| 113 } | 110 } |
| 114 | 111 |
| 115 void StoreDisplayOverscan(int64 id, const gfx::Insets& insets) { | 112 void StoreDisplayOverscan(int64 id, const gfx::Insets& insets) { |
| 116 DictionaryPrefUpdate update(&local_state_, prefs::kDisplayOverscans); | 113 DictionaryPrefUpdate update(&local_state_, prefs::kDisplayProperties); |
| 117 const std::string name = base::Int64ToString(id); | 114 const std::string name = base::Int64ToString(id); |
| 118 | 115 |
| 119 base::DictionaryValue* pref_data = update.Get(); | 116 base::DictionaryValue* pref_data = update.Get(); |
| 120 base::DictionaryValue* insets_value = new base::DictionaryValue(); | 117 base::DictionaryValue* insets_value = new base::DictionaryValue(); |
| 121 insets_value->SetInteger("top", insets.top()); | 118 insets_value->SetInteger("insets_top", insets.top()); |
| 122 insets_value->SetInteger("left", insets.left()); | 119 insets_value->SetInteger("insets_left", insets.left()); |
| 123 insets_value->SetInteger("bottom", insets.bottom()); | 120 insets_value->SetInteger("insets_bottom", insets.bottom()); |
| 124 insets_value->SetInteger("right", insets.right()); | 121 insets_value->SetInteger("insets_right", insets.right()); |
| 125 pref_data->Set(name, insets_value); | 122 pref_data->Set(name, insets_value); |
| 126 } | 123 } |
| 127 | 124 |
| 128 std::string GetRegisteredDisplayLayoutStr(int64 id1, int64 id2) { | 125 std::string GetRegisteredDisplayLayoutStr(int64 id1, int64 id2) { |
| 129 ash::DisplayIdPair pair; | 126 ash::DisplayIdPair pair; |
| 130 pair.first = id1; | 127 pair.first = id1; |
| 131 pair.second = id2; | 128 pair.second = id2; |
| 132 return ash::Shell::GetInstance()->display_controller()-> | 129 return ash::Shell::GetInstance()->display_controller()-> |
| 133 GetRegisteredDisplayLayout(pair).ToString(); | 130 GetRegisteredDisplayLayout(pair).ToString(); |
| 134 } | 131 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 150 int64 dummy_id = id2 + 1; | 147 int64 dummy_id = id2 + 1; |
| 151 ASSERT_NE(id1, dummy_id); | 148 ASSERT_NE(id1, dummy_id); |
| 152 | 149 |
| 153 StoreDisplayLayoutPrefForSecondary(id2, ash::DisplayLayout::BOTTOM, 20); | 150 StoreDisplayLayoutPrefForSecondary(id2, ash::DisplayLayout::BOTTOM, 20); |
| 154 StoreDisplayLayoutPrefForSecondary(dummy_id, ash::DisplayLayout::TOP, -10); | 151 StoreDisplayLayoutPrefForSecondary(dummy_id, ash::DisplayLayout::TOP, -10); |
| 155 StoreDefaultLayoutPref(ash::DisplayLayout::LEFT, 50); | 152 StoreDefaultLayoutPref(ash::DisplayLayout::LEFT, 50); |
| 156 StorePrimaryDisplayId(id2); | 153 StorePrimaryDisplayId(id2); |
| 157 StoreDisplayOverscan(id1, gfx::Insets(10, 10, 10, 10)); | 154 StoreDisplayOverscan(id1, gfx::Insets(10, 10, 10, 10)); |
| 158 StoreDisplayOverscan(id2, gfx::Insets(20, 20, 20, 20)); | 155 StoreDisplayOverscan(id2, gfx::Insets(20, 20, 20, 20)); |
| 159 | 156 |
| 160 NotifyDisplayLocalStatePrefChanged(); | 157 LoadDisplayPreferences(); |
| 161 // Check if the layout settings are notified to the system properly. | 158 // Check if the layout settings are notified to the system properly. |
| 162 ash::DisplayController* display_controller = | 159 ash::DisplayController* display_controller = |
| 163 ash::Shell::GetInstance()->display_controller(); | 160 ash::Shell::GetInstance()->display_controller(); |
| 164 gfx::Screen* screen = gfx::Screen::GetNativeScreen(); | 161 gfx::Screen* screen = gfx::Screen::GetNativeScreen(); |
| 165 EXPECT_EQ(id2, screen->GetPrimaryDisplay().id()); | 162 EXPECT_EQ(id2, screen->GetPrimaryDisplay().id()); |
| 166 // Display was swapped, so the layout was inverted. | 163 // Display was swapped, so the layout was inverted. |
| 167 EXPECT_EQ("top, -20", | 164 EXPECT_EQ("top, -20", |
| 168 display_controller->GetCurrentDisplayLayout().ToString()); | 165 display_controller->GetCurrentDisplayLayout().ToString()); |
| 169 | 166 |
| 170 EXPECT_EQ("bottom, 20", GetRegisteredDisplayLayoutStr(id1, id2)); | 167 EXPECT_EQ("bottom, 20", GetRegisteredDisplayLayoutStr(id1, id2)); |
| 171 EXPECT_EQ("top, -10", GetRegisteredDisplayLayoutStr(id1, dummy_id)); | 168 EXPECT_EQ("top, -10", GetRegisteredDisplayLayoutStr(id1, dummy_id)); |
| 172 EXPECT_EQ("left, 50", | 169 EXPECT_EQ("left, 50", |
| 173 display_controller->default_display_layout().ToString()); | 170 display_controller->default_display_layout().ToString()); |
| 174 EXPECT_EQ("160x160", screen->GetPrimaryDisplay().bounds().size().ToString()); | 171 EXPECT_EQ("160x160", screen->GetPrimaryDisplay().bounds().size().ToString()); |
| 175 EXPECT_EQ("80x80", | 172 EXPECT_EQ("80x80", |
| 176 ash::ScreenAsh::GetSecondaryDisplay().bounds().size().ToString()); | 173 ash::ScreenAsh::GetSecondaryDisplay().bounds().size().ToString()); |
| 177 } | 174 } |
| 178 | 175 |
| 179 TEST_F(DisplayPreferencesTest, PairedLayoutOverrides) { | 176 TEST_F(DisplayPreferencesTest, PairedLayoutOverrides) { |
| 180 UpdateDisplay("100x100,200x200"); | 177 UpdateDisplay("100x100,200x200"); |
| 181 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); | 178 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); |
| 182 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id(); | 179 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id(); |
| 183 int64 dummy_id = id2 + 1; | 180 int64 dummy_id = id2 + 1; |
| 184 ASSERT_NE(id1, dummy_id); | 181 ASSERT_NE(id1, dummy_id); |
| 185 | 182 |
| 186 StoreDisplayLayoutPrefForPair(id1, id2, ash::DisplayLayout::TOP, 20); | 183 StoreDisplayLayoutPrefForPair(id1, id2, ash::DisplayLayout::TOP, 20); |
| 187 StoreDisplayLayoutPrefForPair(id1, dummy_id, ash::DisplayLayout::LEFT, 30); | 184 StoreDisplayLayoutPrefForPair(id1, dummy_id, ash::DisplayLayout::LEFT, 30); |
| 188 StoreDefaultLayoutPref(ash::DisplayLayout::LEFT, 50); | 185 StoreDefaultLayoutPref(ash::DisplayLayout::LEFT, 50); |
| 189 | 186 |
| 190 NotifyDisplayLocalStatePrefChanged(); | 187 LoadDisplayPreferences(); |
| 191 // Check if the layout settings are notified to the system properly. | 188 // Check if the layout settings are notified to the system properly. |
| 192 // The paired layout overrides old layout. | 189 // The paired layout overrides old layout. |
| 193 ash::DisplayController* display_controller = | 190 ash::DisplayController* display_controller = |
| 194 ash::Shell::GetInstance()->display_controller(); | 191 ash::Shell::GetInstance()->display_controller(); |
| 195 // Inverted one of for specified pair (id1, id2). Not used for the pair | 192 // Inverted one of for specified pair (id1, id2). Not used for the pair |
| 196 // (id1, dummy_id) since dummy_id is not connected right now. | 193 // (id1, dummy_id) since dummy_id is not connected right now. |
| 197 EXPECT_EQ("top, 20", | 194 EXPECT_EQ("top, 20", |
| 198 display_controller->GetCurrentDisplayLayout().ToString()); | 195 display_controller->GetCurrentDisplayLayout().ToString()); |
| 199 EXPECT_EQ("top, 20", GetRegisteredDisplayLayoutStr(id1, id2)); | 196 EXPECT_EQ("top, 20", GetRegisteredDisplayLayoutStr(id1, id2)); |
| 200 EXPECT_EQ("left, 30", GetRegisteredDisplayLayoutStr(id1, dummy_id)); | 197 EXPECT_EQ("left, 30", GetRegisteredDisplayLayoutStr(id1, dummy_id)); |
| 201 } | 198 } |
| 202 | 199 |
| 203 TEST_F(DisplayPreferencesTest, BasicStores) { | 200 TEST_F(DisplayPreferencesTest, BasicStores) { |
| 204 UpdateDisplay("100x100,200x200"); | 201 ash::DisplayController* display_controller = |
| 202 ash::Shell::GetInstance()->display_controller(); |
| 203 ash::internal::DisplayManager* display_manager = |
| 204 ash::Shell::GetInstance()->display_manager(); |
| 205 |
| 206 UpdateDisplay("200x200*2,200x200"); |
| 205 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); | 207 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); |
| 206 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id(); | 208 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id(); |
| 207 int64 dummy_id = id2 + 1; | 209 int64 dummy_id = id2 + 1; |
| 208 ASSERT_NE(id1, dummy_id); | 210 ASSERT_NE(id1, dummy_id); |
| 209 | 211 |
| 210 LoggedInAsUser(); | 212 LoggedInAsUser(); |
| 211 ash::DisplayLayout layout(ash::DisplayLayout::TOP, 10); | 213 ash::DisplayLayout layout(ash::DisplayLayout::TOP, 10); |
| 212 SetCurrentAndDefaultDisplayLayout(layout); | 214 SetCurrentAndDefaultDisplayLayout(layout); |
| 213 StoreDisplayLayoutPrefForTest( | 215 StoreDisplayLayoutPrefForTest( |
| 214 id1, dummy_id, ash::DisplayLayout(ash::DisplayLayout::LEFT, 20)); | 216 id1, dummy_id, ash::DisplayLayout(ash::DisplayLayout::LEFT, 20)); |
| 215 // Can't switch to a display that does not exist. | 217 // Can't switch to a display that does not exist. |
| 216 GetDisplayController()->SetPrimaryDisplayId(dummy_id); | 218 display_controller->SetPrimaryDisplayId(dummy_id); |
| 217 EXPECT_NE(dummy_id, local_state()->GetInt64(prefs::kPrimaryDisplayID)); | 219 EXPECT_NE(dummy_id, local_state()->GetInt64(prefs::kPrimaryDisplayID)); |
| 218 | 220 |
| 219 SetAndStoreDisplayOverscan( | 221 display_controller->SetOverscanInsets(id1, gfx::Insets(10, 11, 12, 13)); |
| 220 ash::ScreenAsh::GetNativeScreen()->GetPrimaryDisplay(), | 222 display_manager->SetDisplayRotation(id1, gfx::Display::ROTATE_90); |
| 221 gfx::Insets(10, 11, 12, 13)); | 223 display_manager->SetDisplayUIScale(id1, 1.25f); |
| 224 display_manager->SetDisplayUIScale(id2, 1.25f); |
| 222 | 225 |
| 223 scoped_ptr<base::DictionaryValue> serialized_value( | 226 scoped_ptr<base::DictionaryValue> serialized_value( |
| 224 new base::DictionaryValue()); | 227 new base::DictionaryValue()); |
| 225 ASSERT_TRUE(ash::DisplayLayout::ConvertToValue(layout, | 228 ASSERT_TRUE(ash::DisplayLayout::ConvertToValue(layout, |
| 226 serialized_value.get())); | 229 serialized_value.get())); |
| 227 | 230 |
| 228 const base::DictionaryValue* displays = | 231 const base::DictionaryValue* displays = |
| 229 local_state()->GetDictionary(prefs::kSecondaryDisplays); | 232 local_state()->GetDictionary(prefs::kSecondaryDisplays); |
| 230 const base::DictionaryValue* display_layout = NULL; | 233 const base::DictionaryValue* display_layout = NULL; |
| 231 std::string key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); | 234 std::string key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); |
| 232 EXPECT_TRUE(displays->GetDictionary(key, &display_layout)); | 235 EXPECT_TRUE(displays->GetDictionary(key, &display_layout)); |
| 233 EXPECT_TRUE(serialized_value->Equals(display_layout)); | 236 EXPECT_TRUE(serialized_value->Equals(display_layout)); |
| 234 | 237 |
| 235 // The default value is set for the last call of | 238 // The default value is set for the last call of |
| 236 // SetCurrentAndDefaultDisplayLayout | 239 // SetCurrentAndDefaultDisplayLayout |
| 237 EXPECT_EQ(ash::DisplayLayout::TOP, | 240 EXPECT_EQ(ash::DisplayLayout::TOP, |
| 238 local_state()->GetInteger(prefs::kSecondaryDisplayLayout)); | 241 local_state()->GetInteger(prefs::kSecondaryDisplayLayout)); |
| 239 EXPECT_EQ(10, local_state()->GetInteger(prefs::kSecondaryDisplayOffset)); | 242 EXPECT_EQ(10, local_state()->GetInteger(prefs::kSecondaryDisplayOffset)); |
| 240 | 243 |
| 241 const base::DictionaryValue* overscans = | 244 const base::DictionaryValue* properties = |
| 242 local_state()->GetDictionary(prefs::kDisplayOverscans); | 245 local_state()->GetDictionary(prefs::kDisplayProperties); |
| 243 const base::DictionaryValue* overscan = NULL; | 246 const base::DictionaryValue* property = NULL; |
| 244 EXPECT_TRUE(overscans->GetDictionary(base::Int64ToString(id1), &overscan)); | 247 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property)); |
| 248 int ui_scale = 0; |
| 249 int rotation = 0; |
| 250 EXPECT_TRUE(property->GetInteger("rotation", &rotation)); |
| 251 EXPECT_TRUE(property->GetInteger("ui-scale", &ui_scale)); |
| 252 EXPECT_EQ(1, rotation); |
| 253 EXPECT_EQ(1250, ui_scale); |
| 254 |
| 245 int top = 0, left = 0, bottom = 0, right = 0; | 255 int top = 0, left = 0, bottom = 0, right = 0; |
| 246 EXPECT_TRUE(overscan->GetInteger("top", &top)); | 256 EXPECT_TRUE(property->GetInteger("insets_top", &top)); |
| 247 EXPECT_TRUE(overscan->GetInteger("left", &left)); | 257 EXPECT_TRUE(property->GetInteger("insets_left", &left)); |
| 248 EXPECT_TRUE(overscan->GetInteger("bottom", &bottom)); | 258 EXPECT_TRUE(property->GetInteger("insets_bottom", &bottom)); |
| 249 EXPECT_TRUE(overscan->GetInteger("right", &right)); | 259 EXPECT_TRUE(property->GetInteger("insets_right", &right)); |
| 250 EXPECT_EQ(10, top); | 260 EXPECT_EQ(10, top); |
| 251 EXPECT_EQ(11, left); | 261 EXPECT_EQ(11, left); |
| 252 EXPECT_EQ(12, bottom); | 262 EXPECT_EQ(12, bottom); |
| 253 EXPECT_EQ(13, right); | 263 EXPECT_EQ(13, right); |
| 254 | 264 |
| 255 GetDisplayController()->SetPrimaryDisplayId(id2); | 265 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); |
| 266 EXPECT_TRUE(property->GetInteger("rotation", &rotation)); |
| 267 EXPECT_TRUE(property->GetInteger("ui-scale", &ui_scale)); |
| 268 EXPECT_EQ(0, rotation); |
| 269 // ui_scale works only on 2x scale factor/1st display. |
| 270 EXPECT_EQ(1000, ui_scale); |
| 271 EXPECT_FALSE(property->GetInteger("insets_top", &top)); |
| 272 EXPECT_FALSE(property->GetInteger("insets_left", &left)); |
| 273 EXPECT_FALSE(property->GetInteger("insets_bottom", &bottom)); |
| 274 EXPECT_FALSE(property->GetInteger("insets_right", &right)); |
| 275 |
| 276 display_controller->SetPrimaryDisplayId(id2); |
| 256 EXPECT_EQ(id2, local_state()->GetInt64(prefs::kPrimaryDisplayID)); | 277 EXPECT_EQ(id2, local_state()->GetInt64(prefs::kPrimaryDisplayID)); |
| 257 // The layout remains the same. | 278 // The layout remains the same. |
| 258 EXPECT_TRUE(displays->GetDictionary(key, &display_layout)); | 279 EXPECT_TRUE(displays->GetDictionary(key, &display_layout)); |
| 259 EXPECT_TRUE(serialized_value->Equals(display_layout)); | 280 EXPECT_TRUE(serialized_value->Equals(display_layout)); |
| 260 // Default value should changte. | 281 // Default value should changte. |
| 261 EXPECT_EQ(ash::DisplayLayout::TOP, | 282 EXPECT_EQ(ash::DisplayLayout::TOP, |
| 262 local_state()->GetInteger(prefs::kSecondaryDisplayLayout)); | 283 local_state()->GetInteger(prefs::kSecondaryDisplayLayout)); |
| 263 EXPECT_EQ(10, local_state()->GetInteger(prefs::kSecondaryDisplayOffset)); | 284 EXPECT_EQ(10, local_state()->GetInteger(prefs::kSecondaryDisplayOffset)); |
| 264 | 285 |
| 265 SetCurrentAndDefaultDisplayLayout( | 286 SetCurrentAndDefaultDisplayLayout( |
| (...skipping 29 matching lines...) Expand all Loading... |
| 295 std::string key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); | 316 std::string key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); |
| 296 EXPECT_TRUE(displays->GetDictionary(key, &new_value)); | 317 EXPECT_TRUE(displays->GetDictionary(key, &new_value)); |
| 297 EXPECT_TRUE(layout_value->Equals(new_value)); | 318 EXPECT_TRUE(layout_value->Equals(new_value)); |
| 298 | 319 |
| 299 display_controller->SwapPrimaryDisplay(); | 320 display_controller->SwapPrimaryDisplay(); |
| 300 EXPECT_TRUE(displays->GetDictionary(key, &new_value)); | 321 EXPECT_TRUE(displays->GetDictionary(key, &new_value)); |
| 301 EXPECT_TRUE(layout_value->Equals(new_value)); | 322 EXPECT_TRUE(layout_value->Equals(new_value)); |
| 302 } | 323 } |
| 303 | 324 |
| 304 TEST_F(DisplayPreferencesTest, DontStoreInGuestMode) { | 325 TEST_F(DisplayPreferencesTest, DontStoreInGuestMode) { |
| 305 UpdateDisplay("100x100,200x200"); | 326 ash::DisplayController* display_controller = |
| 327 ash::Shell::GetInstance()->display_controller(); |
| 328 ash::internal::DisplayManager* display_manager = |
| 329 ash::Shell::GetInstance()->display_manager(); |
| 330 |
| 331 UpdateDisplay("200x200*2,200x200"); |
| 306 | 332 |
| 307 LoggedInAsGuest(); | 333 LoggedInAsGuest(); |
| 334 int64 id1 = ash::ScreenAsh::GetNativeScreen()->GetPrimaryDisplay().id(); |
| 308 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id(); | 335 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id(); |
| 309 ash::DisplayLayout layout(ash::DisplayLayout::TOP, 10); | 336 ash::DisplayLayout layout(ash::DisplayLayout::TOP, 10); |
| 310 SetCurrentAndDefaultDisplayLayout(layout); | 337 SetCurrentAndDefaultDisplayLayout(layout); |
| 311 GetDisplayController()->SetPrimaryDisplayId(id2); | 338 display_manager->SetDisplayUIScale(id1, 1.25f); |
| 312 SetAndStoreDisplayOverscan( | 339 display_controller->SetPrimaryDisplayId(id2); |
| 313 ash::ScreenAsh::GetNativeScreen()->GetPrimaryDisplay(), | 340 int64 new_primary = |
| 341 ash::ScreenAsh::GetNativeScreen()->GetPrimaryDisplay().id(); |
| 342 display_controller->SetOverscanInsets( |
| 343 new_primary, |
| 314 gfx::Insets(10, 11, 12, 13)); | 344 gfx::Insets(10, 11, 12, 13)); |
| 345 display_manager->SetDisplayRotation(new_primary, gfx::Display::ROTATE_90); |
| 315 | 346 |
| 316 // Does not store the preferences locally. | 347 // Does not store the preferences locally. |
| 317 EXPECT_FALSE(local_state()->FindPreference( | 348 EXPECT_FALSE(local_state()->FindPreference( |
| 318 prefs::kSecondaryDisplays)->HasUserSetting()); | 349 prefs::kSecondaryDisplays)->HasUserSetting()); |
| 319 EXPECT_FALSE(local_state()->FindPreference( | 350 EXPECT_FALSE(local_state()->FindPreference( |
| 320 prefs::kSecondaryDisplayLayout)->HasUserSetting()); | 351 prefs::kSecondaryDisplayLayout)->HasUserSetting()); |
| 321 EXPECT_FALSE(local_state()->FindPreference( | 352 EXPECT_FALSE(local_state()->FindPreference( |
| 322 prefs::kSecondaryDisplayOffset)->HasUserSetting()); | 353 prefs::kSecondaryDisplayOffset)->HasUserSetting()); |
| 323 EXPECT_FALSE(local_state()->FindPreference( | 354 EXPECT_FALSE(local_state()->FindPreference( |
| 324 prefs::kPrimaryDisplayID)->HasUserSetting()); | 355 prefs::kPrimaryDisplayID)->HasUserSetting()); |
| 325 EXPECT_FALSE(local_state()->FindPreference( | 356 EXPECT_FALSE(local_state()->FindPreference( |
| 326 prefs::kDisplayOverscans)->HasUserSetting()); | 357 prefs::kDisplayProperties)->HasUserSetting()); |
| 327 | 358 |
| 328 // Settings are still notified to the system. | 359 // Settings are still notified to the system. |
| 329 ash::DisplayController* display_controller = | |
| 330 ash::Shell::GetInstance()->display_controller(); | |
| 331 gfx::Screen* screen = gfx::Screen::GetNativeScreen(); | 360 gfx::Screen* screen = gfx::Screen::GetNativeScreen(); |
| 332 EXPECT_EQ(id2, screen->GetPrimaryDisplay().id()); | 361 EXPECT_EQ(id2, screen->GetPrimaryDisplay().id()); |
| 333 EXPECT_EQ(ash::DisplayLayout::BOTTOM, | 362 EXPECT_EQ(ash::DisplayLayout::BOTTOM, |
| 334 display_controller->GetCurrentDisplayLayout().position); | 363 display_controller->GetCurrentDisplayLayout().position); |
| 335 EXPECT_EQ(-10, display_controller->GetCurrentDisplayLayout().offset); | 364 EXPECT_EQ(-10, display_controller->GetCurrentDisplayLayout().offset); |
| 336 EXPECT_EQ("176x178", screen->GetPrimaryDisplay().bounds().size().ToString()); | 365 const gfx::Display& primary_display = screen->GetPrimaryDisplay(); |
| 366 EXPECT_EQ("178x176", primary_display.bounds().size().ToString()); |
| 367 EXPECT_EQ(gfx::Display::ROTATE_90, primary_display.rotation()); |
| 368 |
| 369 const ash::internal::DisplayInfo& info1 = |
| 370 display_manager->GetDisplayInfo(id1); |
| 371 EXPECT_EQ(1.25f, info1.ui_scale()); |
| 372 |
| 373 const ash::internal::DisplayInfo& info_primary = |
| 374 display_manager->GetDisplayInfo(new_primary); |
| 375 EXPECT_EQ(gfx::Display::ROTATE_90, info_primary.rotation()); |
| 376 EXPECT_EQ(1.0f, info_primary.ui_scale()); |
| 337 } | 377 } |
| 338 | 378 |
| 339 } // namespace | 379 } // namespace |
| 340 } // namespace chromeos | 380 } // namespace chromeos |
| OLD | NEW |