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

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

Issue 455443002: Remember the configured device scale factor for external displays. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 6 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
« no previous file with comments | « chrome/browser/chromeos/display/display_preferences.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "ash/display/display_controller.h" 10 #include "ash/display/display_controller.h"
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 EXPECT_EQ("top, 20", GetRegisteredDisplayLayoutStr(id1, id2)); 192 EXPECT_EQ("top, 20", GetRegisteredDisplayLayoutStr(id1, id2));
193 EXPECT_EQ("left, 30", GetRegisteredDisplayLayoutStr(id1, dummy_id)); 193 EXPECT_EQ("left, 30", GetRegisteredDisplayLayoutStr(id1, dummy_id));
194 } 194 }
195 195
196 TEST_F(DisplayPreferencesTest, BasicStores) { 196 TEST_F(DisplayPreferencesTest, BasicStores) {
197 ash::DisplayController* display_controller = 197 ash::DisplayController* display_controller =
198 ash::Shell::GetInstance()->display_controller(); 198 ash::Shell::GetInstance()->display_controller();
199 ash::DisplayManager* display_manager = 199 ash::DisplayManager* display_manager =
200 ash::Shell::GetInstance()->display_manager(); 200 ash::Shell::GetInstance()->display_manager();
201 201
202 UpdateDisplay("200x200*2, 400x300#400x400|300x200"); 202 UpdateDisplay("200x200*2, 400x300#400x400|300x200*1.25");
203 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); 203 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id();
204 gfx::Display::SetInternalDisplayId(id1); 204 gfx::Display::SetInternalDisplayId(id1);
205 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 205 int64 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
206 int64 dummy_id = id2 + 1; 206 int64 dummy_id = id2 + 1;
207 ASSERT_NE(id1, dummy_id); 207 ASSERT_NE(id1, dummy_id);
208 std::vector<ui::ColorCalibrationProfile> profiles; 208 std::vector<ui::ColorCalibrationProfile> profiles;
209 profiles.push_back(ui::COLOR_PROFILE_STANDARD); 209 profiles.push_back(ui::COLOR_PROFILE_STANDARD);
210 profiles.push_back(ui::COLOR_PROFILE_DYNAMIC); 210 profiles.push_back(ui::COLOR_PROFILE_DYNAMIC);
211 profiles.push_back(ui::COLOR_PROFILE_MOVIE); 211 profiles.push_back(ui::COLOR_PROFILE_MOVIE);
212 profiles.push_back(ui::COLOR_PROFILE_READING); 212 profiles.push_back(ui::COLOR_PROFILE_READING);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 EXPECT_FALSE(property->GetInteger("insets_top", &top)); 285 EXPECT_FALSE(property->GetInteger("insets_top", &top));
286 EXPECT_FALSE(property->GetInteger("insets_left", &left)); 286 EXPECT_FALSE(property->GetInteger("insets_left", &left));
287 EXPECT_FALSE(property->GetInteger("insets_bottom", &bottom)); 287 EXPECT_FALSE(property->GetInteger("insets_bottom", &bottom));
288 EXPECT_FALSE(property->GetInteger("insets_right", &right)); 288 EXPECT_FALSE(property->GetInteger("insets_right", &right));
289 289
290 // |id2| doesn't have the color_profile because it doesn't have 'dynamic' in 290 // |id2| doesn't have the color_profile because it doesn't have 'dynamic' in
291 // its available list. 291 // its available list.
292 EXPECT_FALSE(property->GetString("color_profile_name", &color_profile)); 292 EXPECT_FALSE(property->GetString("color_profile_name", &color_profile));
293 293
294 // Resolution is saved only when the resolution is set 294 // Resolution is saved only when the resolution is set
295 // by DisplayManager::SetDisplayResolution 295 // by DisplayManager::SetDisplayMode
296 width = 0; 296 width = 0;
297 height = 0; 297 height = 0;
298 EXPECT_FALSE(property->GetInteger("width", &width)); 298 EXPECT_FALSE(property->GetInteger("width", &width));
299 EXPECT_FALSE(property->GetInteger("height", &height)); 299 EXPECT_FALSE(property->GetInteger("height", &height));
300 300
301 display_manager->SetDisplayResolution(id2, gfx::Size(300, 200)); 301 ash::DisplayMode mode(gfx::Size(300, 200), 60.0f, false, true);
302 mode.device_scale_factor = 1.25f;
303 display_manager->SetDisplayMode(id2, mode);
302 304
303 display_controller->SetPrimaryDisplayId(id2); 305 display_controller->SetPrimaryDisplayId(id2);
304 306
305 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property)); 307 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property));
306 width = 0; 308 width = 0;
307 height = 0; 309 height = 0;
308 // Internal display shouldn't store its resolution. 310 // Internal display shouldn't store its resolution.
309 EXPECT_FALSE(property->GetInteger("width", &width)); 311 EXPECT_FALSE(property->GetInteger("width", &width));
310 EXPECT_FALSE(property->GetInteger("height", &height)); 312 EXPECT_FALSE(property->GetInteger("height", &height));
311 313
312 // External display's resolution must be stored this time because 314 // External display's resolution must be stored this time because
313 // it's not best. 315 // it's not best.
316 int device_scale_factor = 0;
314 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); 317 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property));
315 EXPECT_TRUE(property->GetInteger("width", &width)); 318 EXPECT_TRUE(property->GetInteger("width", &width));
316 EXPECT_TRUE(property->GetInteger("height", &height)); 319 EXPECT_TRUE(property->GetInteger("height", &height));
320 EXPECT_TRUE(property->GetInteger(
321 "device-scale-factor", &device_scale_factor));
317 EXPECT_EQ(300, width); 322 EXPECT_EQ(300, width);
318 EXPECT_EQ(200, height); 323 EXPECT_EQ(200, height);
324 EXPECT_EQ(1250, device_scale_factor);
319 325
320 // The layout remains the same. 326 // The layout remains the same.
321 EXPECT_TRUE(displays->GetDictionary(key, &layout_value)); 327 EXPECT_TRUE(displays->GetDictionary(key, &layout_value));
322 EXPECT_TRUE(ash::DisplayLayout::ConvertFromValue(*layout_value, 328 EXPECT_TRUE(ash::DisplayLayout::ConvertFromValue(*layout_value,
323 &stored_layout)); 329 &stored_layout));
324 EXPECT_EQ(layout.position, stored_layout.position); 330 EXPECT_EQ(layout.position, stored_layout.position);
325 EXPECT_EQ(layout.offset, stored_layout.offset); 331 EXPECT_EQ(layout.offset, stored_layout.offset);
326 EXPECT_EQ(id2, stored_layout.primary_id); 332 EXPECT_EQ(id2, stored_layout.primary_id);
327 333
328 mirrored = true; 334 mirrored = true;
(...skipping 28 matching lines...) Expand all
357 // External display's selected resolution must not change 363 // External display's selected resolution must not change
358 // by mirroring. 364 // by mirroring.
359 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); 365 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property));
360 EXPECT_TRUE(property->GetInteger("width", &width)); 366 EXPECT_TRUE(property->GetInteger("width", &width));
361 EXPECT_TRUE(property->GetInteger("height", &height)); 367 EXPECT_TRUE(property->GetInteger("height", &height));
362 EXPECT_EQ(300, width); 368 EXPECT_EQ(300, width);
363 EXPECT_EQ(200, height); 369 EXPECT_EQ(200, height);
364 370
365 // Set new display's selected resolution. 371 // Set new display's selected resolution.
366 display_manager->RegisterDisplayProperty( 372 display_manager->RegisterDisplayProperty(
367 id2 + 1, gfx::Display::ROTATE_0, 1.0f, NULL, gfx::Size(500, 400), 373 id2 + 1, gfx::Display::ROTATE_0, 1.0f, NULL, gfx::Size(500, 400), 1.0f,
368 ui::COLOR_PROFILE_STANDARD); 374 ui::COLOR_PROFILE_STANDARD);
369 375
370 UpdateDisplay("200x200*2, 600x500#600x500|500x400"); 376 UpdateDisplay("200x200*2, 600x500#600x500|500x400");
371 377
372 // Update key as the 2nd display gets new id. 378 // Update key as the 2nd display gets new id.
373 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 379 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
374 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); 380 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2);
375 EXPECT_TRUE(displays->GetDictionary(key, &layout_value)); 381 EXPECT_TRUE(displays->GetDictionary(key, &layout_value));
376 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position)); 382 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position));
377 EXPECT_EQ("right", position); 383 EXPECT_EQ("right", position);
378 EXPECT_TRUE(layout_value->GetInteger(kOffsetKey, &offset)); 384 EXPECT_TRUE(layout_value->GetInteger(kOffsetKey, &offset));
379 EXPECT_EQ(0, offset); 385 EXPECT_EQ(0, offset);
380 mirrored = true; 386 mirrored = true;
381 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored)); 387 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored));
382 EXPECT_FALSE(mirrored); 388 EXPECT_FALSE(mirrored);
383 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str)); 389 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str));
384 EXPECT_EQ(base::Int64ToString(id1), primary_id_str); 390 EXPECT_EQ(base::Int64ToString(id1), primary_id_str);
385 391
386 // Best resolution should not be saved. 392 // Best resolution should not be saved.
387 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); 393 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property));
388 EXPECT_FALSE(property->GetInteger("width", &width)); 394 EXPECT_FALSE(property->GetInteger("width", &width));
389 EXPECT_FALSE(property->GetInteger("height", &height)); 395 EXPECT_FALSE(property->GetInteger("height", &height));
390 396
391 // Set yet another new display's selected resolution. 397 // Set yet another new display's selected resolution.
392 display_manager->RegisterDisplayProperty( 398 display_manager->RegisterDisplayProperty(
393 id2 + 1, gfx::Display::ROTATE_0, 1.0f, NULL, gfx::Size(500, 400), 399 id2 + 1, gfx::Display::ROTATE_0, 1.0f, NULL, gfx::Size(500, 400), 1.0f,
394 ui::COLOR_PROFILE_STANDARD); 400 ui::COLOR_PROFILE_STANDARD);
395 // Disconnect 2nd display first to generate new id for external display. 401 // Disconnect 2nd display first to generate new id for external display.
396 UpdateDisplay("200x200*2"); 402 UpdateDisplay("200x200*2");
397 UpdateDisplay("200x200*2, 500x400#600x500|500x400%60.0f"); 403 UpdateDisplay("200x200*2, 500x400#600x500|500x400%60.0f");
398 // Update key as the 2nd display gets new id. 404 // Update key as the 2nd display gets new id.
399 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 405 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
400 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); 406 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2);
401 EXPECT_TRUE(displays->GetDictionary(key, &layout_value)); 407 EXPECT_TRUE(displays->GetDictionary(key, &layout_value));
402 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position)); 408 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position));
403 EXPECT_EQ("right", position); 409 EXPECT_EQ("right", position);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 451
446 // Revert the change. When timeout, 2nd button is revert. 452 // Revert the change. When timeout, 2nd button is revert.
447 message_center::MessageCenter::Get()->ClickOnNotificationButton( 453 message_center::MessageCenter::Get()->ClickOnNotificationButton(
448 ResolutionNotificationController::kNotificationId, 1); 454 ResolutionNotificationController::kNotificationId, 1);
449 RunAllPendingInMessageLoop(); 455 RunAllPendingInMessageLoop();
450 EXPECT_FALSE( 456 EXPECT_FALSE(
451 message_center::MessageCenter::Get()->FindVisibleNotificationById( 457 message_center::MessageCenter::Get()->FindVisibleNotificationById(
452 ResolutionNotificationController::kNotificationId)); 458 ResolutionNotificationController::kNotificationId));
453 459
454 // Once the notification is removed, the specified resolution will be stored 460 // Once the notification is removed, the specified resolution will be stored
455 // by SetDisplayResolution. 461 // by SetDisplayMode.
456 ash::Shell::GetInstance()->display_manager()->SetDisplayResolution( 462 ash::Shell::GetInstance()->display_manager()->SetDisplayMode(
457 id, gfx::Size(300, 200)); 463 id, ash::DisplayMode(gfx::Size(300, 200), 60.0f, false, true));
458 UpdateDisplay("300x200#500x400|400x300|300x200"); 464 UpdateDisplay("300x200#500x400|400x300|300x200");
459 465
460 property = NULL; 466 property = NULL;
461 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id), &property)); 467 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id), &property));
462 EXPECT_TRUE(property->GetInteger("width", &width)); 468 EXPECT_TRUE(property->GetInteger("width", &width));
463 EXPECT_TRUE(property->GetInteger("height", &height)); 469 EXPECT_TRUE(property->GetInteger("height", &height));
464 EXPECT_EQ(300, width); 470 EXPECT_EQ(300, width);
465 EXPECT_EQ(200, height); 471 EXPECT_EQ(200, height);
466 } 472 }
467 473
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 local_state()->GetDictionary(prefs::kDisplayProperties); 669 local_state()->GetDictionary(prefs::kDisplayProperties);
664 const base::DictionaryValue* property = NULL; 670 const base::DictionaryValue* property = NULL;
665 EXPECT_TRUE(properties->GetDictionary( 671 EXPECT_TRUE(properties->GetDictionary(
666 base::Int64ToString(gfx::Display::InternalDisplayId()), &property)); 672 base::Int64ToString(gfx::Display::InternalDisplayId()), &property));
667 int rotation = -1; 673 int rotation = -1;
668 EXPECT_TRUE(property->GetInteger("rotation", &rotation)); 674 EXPECT_TRUE(property->GetInteger("rotation", &rotation));
669 EXPECT_EQ(gfx::Display::ROTATE_0, rotation); 675 EXPECT_EQ(gfx::Display::ROTATE_0, rotation);
670 } 676 }
671 677
672 } // namespace chromeos 678 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/display/display_preferences.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698