Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(300)

Side by Side Diff: chrome/browser/chromeos/display/display_preferences_unittest.cc

Issue 21297003: Add ability to set resolution on external display (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: adraddressed comment, adjusted test Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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_layout_store.h" 8 #include "ash/display/display_layout_store.h"
9 #include "ash/display/display_manager.h" 9 #include "ash/display/display_manager.h"
10 #include "ash/screen_ash.h" 10 #include "ash/screen_ash.h"
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 EXPECT_EQ("top, 20", GetRegisteredDisplayLayoutStr(id1, id2)); 176 EXPECT_EQ("top, 20", GetRegisteredDisplayLayoutStr(id1, id2));
177 EXPECT_EQ("left, 30", GetRegisteredDisplayLayoutStr(id1, dummy_id)); 177 EXPECT_EQ("left, 30", GetRegisteredDisplayLayoutStr(id1, dummy_id));
178 } 178 }
179 179
180 TEST_F(DisplayPreferencesTest, BasicStores) { 180 TEST_F(DisplayPreferencesTest, BasicStores) {
181 ash::DisplayController* display_controller = 181 ash::DisplayController* display_controller =
182 ash::Shell::GetInstance()->display_controller(); 182 ash::Shell::GetInstance()->display_controller();
183 ash::internal::DisplayManager* display_manager = 183 ash::internal::DisplayManager* display_manager =
184 ash::Shell::GetInstance()->display_manager(); 184 ash::Shell::GetInstance()->display_manager();
185 185
186 UpdateDisplay("200x200*2,200x200"); 186 UpdateDisplay("200x200*2,400x300");
187 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); 187 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id();
188 gfx::Display::SetInternalDisplayId(id1); 188 gfx::Display::SetInternalDisplayId(id1);
189 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id(); 189 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id();
190 int64 dummy_id = id2 + 1; 190 int64 dummy_id = id2 + 1;
191 ASSERT_NE(id1, dummy_id); 191 ASSERT_NE(id1, dummy_id);
192 192
193 LoggedInAsUser(); 193 LoggedInAsUser();
194 ash::DisplayLayout layout(ash::DisplayLayout::TOP, 10); 194 ash::DisplayLayout layout(ash::DisplayLayout::TOP, 10);
195 SetCurrentDisplayLayout(layout); 195 SetCurrentDisplayLayout(layout);
196 StoreDisplayLayoutPrefForTest( 196 StoreDisplayLayoutPrefForTest(
(...skipping 27 matching lines...) Expand all
224 local_state()->GetDictionary(prefs::kDisplayProperties); 224 local_state()->GetDictionary(prefs::kDisplayProperties);
225 const base::DictionaryValue* property = NULL; 225 const base::DictionaryValue* property = NULL;
226 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property)); 226 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property));
227 int ui_scale = 0; 227 int ui_scale = 0;
228 int rotation = 0; 228 int rotation = 0;
229 EXPECT_TRUE(property->GetInteger("rotation", &rotation)); 229 EXPECT_TRUE(property->GetInteger("rotation", &rotation));
230 EXPECT_TRUE(property->GetInteger("ui-scale", &ui_scale)); 230 EXPECT_TRUE(property->GetInteger("ui-scale", &ui_scale));
231 EXPECT_EQ(1, rotation); 231 EXPECT_EQ(1, rotation);
232 EXPECT_EQ(1250, ui_scale); 232 EXPECT_EQ(1250, ui_scale);
233 233
234 // Internal display never registere the resolution.
235 int width = 0, height = 0;
236 EXPECT_FALSE(property->GetInteger("width", &width));
237 EXPECT_FALSE(property->GetInteger("height", &height));
238
234 int top = 0, left = 0, bottom = 0, right = 0; 239 int top = 0, left = 0, bottom = 0, right = 0;
235 EXPECT_TRUE(property->GetInteger("insets_top", &top)); 240 EXPECT_TRUE(property->GetInteger("insets_top", &top));
236 EXPECT_TRUE(property->GetInteger("insets_left", &left)); 241 EXPECT_TRUE(property->GetInteger("insets_left", &left));
237 EXPECT_TRUE(property->GetInteger("insets_bottom", &bottom)); 242 EXPECT_TRUE(property->GetInteger("insets_bottom", &bottom));
238 EXPECT_TRUE(property->GetInteger("insets_right", &right)); 243 EXPECT_TRUE(property->GetInteger("insets_right", &right));
239 EXPECT_EQ(10, top); 244 EXPECT_EQ(10, top);
240 EXPECT_EQ(11, left); 245 EXPECT_EQ(11, left);
241 EXPECT_EQ(12, bottom); 246 EXPECT_EQ(12, bottom);
242 EXPECT_EQ(13, right); 247 EXPECT_EQ(13, right);
243 248
244 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); 249 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property));
245 EXPECT_TRUE(property->GetInteger("rotation", &rotation)); 250 EXPECT_TRUE(property->GetInteger("rotation", &rotation));
246 EXPECT_TRUE(property->GetInteger("ui-scale", &ui_scale)); 251 EXPECT_TRUE(property->GetInteger("ui-scale", &ui_scale));
247 EXPECT_EQ(0, rotation); 252 EXPECT_EQ(0, rotation);
248 // ui_scale works only on 2x scale factor/1st display. 253 // ui_scale works only on 2x scale factor/1st display.
249 EXPECT_EQ(1000, ui_scale); 254 EXPECT_EQ(1000, ui_scale);
250 EXPECT_FALSE(property->GetInteger("insets_top", &top)); 255 EXPECT_FALSE(property->GetInteger("insets_top", &top));
251 EXPECT_FALSE(property->GetInteger("insets_left", &left)); 256 EXPECT_FALSE(property->GetInteger("insets_left", &left));
252 EXPECT_FALSE(property->GetInteger("insets_bottom", &bottom)); 257 EXPECT_FALSE(property->GetInteger("insets_bottom", &bottom));
253 EXPECT_FALSE(property->GetInteger("insets_right", &right)); 258 EXPECT_FALSE(property->GetInteger("insets_right", &right));
254 259
260 // Resolution is saved only when the resolution is set
261 // by DisplayManager::SetDisplayResolution
262 width = 0;
263 height = 0;
264 EXPECT_FALSE(property->GetInteger("width", &width));
265 EXPECT_FALSE(property->GetInteger("height", &height));
266
267 display_manager->SetDisplayResolution(id2, gfx::Size(400, 300));
268
255 display_controller->SetPrimaryDisplayId(id2); 269 display_controller->SetPrimaryDisplayId(id2);
256 270
271 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property));
272 width = 0;
273 height = 0;
274 // Internal dispaly shouldn't store its resolution.
275 EXPECT_FALSE(property->GetInteger("width", &width));
276 EXPECT_FALSE(property->GetInteger("height", &height));
277
278 // External dispaly's resolution must be stored this time.
279 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property));
280 EXPECT_TRUE(property->GetInteger("width", &width));
281 EXPECT_TRUE(property->GetInteger("height", &height));
282 EXPECT_EQ(400, width);
283 EXPECT_EQ(300, height);
284
257 // The layout remains the same. 285 // The layout remains the same.
258 EXPECT_TRUE(displays->GetDictionary(key, &layout_value)); 286 EXPECT_TRUE(displays->GetDictionary(key, &layout_value));
259 EXPECT_TRUE(ash::DisplayLayout::ConvertFromValue(*layout_value, 287 EXPECT_TRUE(ash::DisplayLayout::ConvertFromValue(*layout_value,
260 &stored_layout)); 288 &stored_layout));
261 EXPECT_EQ(layout.position, stored_layout.position); 289 EXPECT_EQ(layout.position, stored_layout.position);
262 EXPECT_EQ(layout.offset, stored_layout.offset); 290 EXPECT_EQ(layout.offset, stored_layout.offset);
263 EXPECT_EQ(id2, stored_layout.primary_id); 291 EXPECT_EQ(id2, stored_layout.primary_id);
264 292
265 mirrored = true; 293 mirrored = true;
266 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored)); 294 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored));
(...skipping 13 matching lines...) Expand all
280 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position)); 308 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position));
281 EXPECT_EQ("top", position); 309 EXPECT_EQ("top", position);
282 EXPECT_TRUE(layout_value->GetInteger(kOffsetKey, &offset)); 310 EXPECT_TRUE(layout_value->GetInteger(kOffsetKey, &offset));
283 EXPECT_EQ(-20, offset); 311 EXPECT_EQ(-20, offset);
284 mirrored = false; 312 mirrored = false;
285 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored)); 313 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored));
286 EXPECT_TRUE(mirrored); 314 EXPECT_TRUE(mirrored);
287 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str)); 315 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str));
288 EXPECT_EQ(base::Int64ToString(id2), primary_id_str); 316 EXPECT_EQ(base::Int64ToString(id2), primary_id_str);
289 317
290 UpdateDisplay("200x200*2,200x200"); 318 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property));
319 EXPECT_FALSE(property->GetInteger("width", &width));
320 EXPECT_FALSE(property->GetInteger("height", &height));
321
322 // External dispaly's selected resolution must not change
323 // by mirroring.
324 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property));
325 EXPECT_TRUE(property->GetInteger("width", &width));
326 EXPECT_TRUE(property->GetInteger("height", &height));
327 EXPECT_EQ(400, width);
328 EXPECT_EQ(300, height);
329
330 // Set new display's selected resolution.
331 display_manager->SetDisplayResolution(id2 + 1, gfx::Size(500, 400));
332 UpdateDisplay("200x200*2,500x400");
291 // Update key as the 2nd display gets new id. 333 // Update key as the 2nd display gets new id.
292 id2 = ash::ScreenAsh::GetSecondaryDisplay().id(); 334 id2 = ash::ScreenAsh::GetSecondaryDisplay().id();
293 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); 335 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2);
294 EXPECT_TRUE(displays->GetDictionary(key, &layout_value)); 336 EXPECT_TRUE(displays->GetDictionary(key, &layout_value));
295 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position)); 337 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position));
296 EXPECT_EQ("right", position); 338 EXPECT_EQ("right", position);
297 EXPECT_TRUE(layout_value->GetInteger(kOffsetKey, &offset)); 339 EXPECT_TRUE(layout_value->GetInteger(kOffsetKey, &offset));
298 EXPECT_EQ(0, offset); 340 EXPECT_EQ(0, offset);
299 mirrored = true; 341 mirrored = true;
300 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored)); 342 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored));
301 EXPECT_FALSE(mirrored); 343 EXPECT_FALSE(mirrored);
302 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str)); 344 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str));
303 EXPECT_EQ(base::Int64ToString(id1), primary_id_str); 345 EXPECT_EQ(base::Int64ToString(id1), primary_id_str);
346
347 // External dispaly's selected resolution must be updated.
348 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property));
349 EXPECT_TRUE(property->GetInteger("width", &width));
350 EXPECT_TRUE(property->GetInteger("height", &height));
351 EXPECT_EQ(500, width);
352 EXPECT_EQ(400, height);
304 } 353 }
305 354
306 TEST_F(DisplayPreferencesTest, StoreForSwappedDisplay) { 355 TEST_F(DisplayPreferencesTest, StoreForSwappedDisplay) {
307 UpdateDisplay("100x100,200x200"); 356 UpdateDisplay("100x100,200x200");
308 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); 357 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id();
309 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id(); 358 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id();
310 359
311 ash::DisplayController* display_controller = 360 ash::DisplayController* display_controller =
312 ash::Shell::GetInstance()->display_controller(); 361 ash::Shell::GetInstance()->display_controller();
313 display_controller->SwapPrimaryDisplay(); 362 display_controller->SwapPrimaryDisplay();
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 StoreDisplayPowerStateForTest( 440 StoreDisplayPowerStateForTest(
392 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON); 441 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON);
393 LoadDisplayPreferences(false); 442 LoadDisplayPreferences(false);
394 EXPECT_EQ( 443 EXPECT_EQ(
395 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON, 444 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON,
396 ash::Shell::GetInstance()->output_configurator()->power_state()); 445 ash::Shell::GetInstance()->output_configurator()->power_state());
397 } 446 }
398 447
399 } // namespace 448 } // namespace
400 } // namespace chromeos 449 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/display/display_preferences.cc ('k') | chromeos/display/output_configurator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698