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

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

Issue 138903025: Read compositor VSync information from platform, when possible (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 287efe04 Rebase, oshima@ nits. Created 6 years, 10 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/display/resolution_notification_controller.h" 10 #include "ash/display/resolution_notification_controller.h"
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
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. 234 // Internal display never registered the resolution.
235 int width = 0, height = 0; 235 int width = 0, height = 0;
236 EXPECT_FALSE(property->GetInteger("width", &width)); 236 EXPECT_FALSE(property->GetInteger("width", &width));
237 EXPECT_FALSE(property->GetInteger("height", &height)); 237 EXPECT_FALSE(property->GetInteger("height", &height));
238 238
239 int top = 0, left = 0, bottom = 0, right = 0; 239 int top = 0, left = 0, bottom = 0, right = 0;
240 EXPECT_TRUE(property->GetInteger("insets_top", &top)); 240 EXPECT_TRUE(property->GetInteger("insets_top", &top));
241 EXPECT_TRUE(property->GetInteger("insets_left", &left)); 241 EXPECT_TRUE(property->GetInteger("insets_left", &left));
242 EXPECT_TRUE(property->GetInteger("insets_bottom", &bottom)); 242 EXPECT_TRUE(property->GetInteger("insets_bottom", &bottom));
243 EXPECT_TRUE(property->GetInteger("insets_right", &right)); 243 EXPECT_TRUE(property->GetInteger("insets_right", &right));
244 EXPECT_EQ(10, top); 244 EXPECT_EQ(10, top);
(...skipping 19 matching lines...) Expand all
264 EXPECT_FALSE(property->GetInteger("width", &width)); 264 EXPECT_FALSE(property->GetInteger("width", &width));
265 EXPECT_FALSE(property->GetInteger("height", &height)); 265 EXPECT_FALSE(property->GetInteger("height", &height));
266 266
267 display_manager->SetDisplayResolution(id2, gfx::Size(300, 200)); 267 display_manager->SetDisplayResolution(id2, gfx::Size(300, 200));
268 268
269 display_controller->SetPrimaryDisplayId(id2); 269 display_controller->SetPrimaryDisplayId(id2);
270 270
271 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property)); 271 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property));
272 width = 0; 272 width = 0;
273 height = 0; 273 height = 0;
274 // Internal dispaly shouldn't store its resolution. 274 // Internal display shouldn't store its resolution.
275 EXPECT_FALSE(property->GetInteger("width", &width)); 275 EXPECT_FALSE(property->GetInteger("width", &width));
276 EXPECT_FALSE(property->GetInteger("height", &height)); 276 EXPECT_FALSE(property->GetInteger("height", &height));
277 277
278 // External dispaly's resolution must be stored this time because 278 // External display's resolution must be stored this time because
279 // it's not best. 279 // it's not best.
280 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); 280 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property));
281 EXPECT_TRUE(property->GetInteger("width", &width)); 281 EXPECT_TRUE(property->GetInteger("width", &width));
282 EXPECT_TRUE(property->GetInteger("height", &height)); 282 EXPECT_TRUE(property->GetInteger("height", &height));
283 EXPECT_EQ(300, width); 283 EXPECT_EQ(300, width);
284 EXPECT_EQ(200, height); 284 EXPECT_EQ(200, height);
285 285
286 // The layout remains the same. 286 // The layout remains the same.
287 EXPECT_TRUE(displays->GetDictionary(key, &layout_value)); 287 EXPECT_TRUE(displays->GetDictionary(key, &layout_value));
288 EXPECT_TRUE(ash::DisplayLayout::ConvertFromValue(*layout_value, 288 EXPECT_TRUE(ash::DisplayLayout::ConvertFromValue(*layout_value,
(...skipping 24 matching lines...) Expand all
313 mirrored = false; 313 mirrored = false;
314 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored)); 314 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored));
315 EXPECT_TRUE(mirrored); 315 EXPECT_TRUE(mirrored);
316 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str)); 316 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str));
317 EXPECT_EQ(base::Int64ToString(id2), primary_id_str); 317 EXPECT_EQ(base::Int64ToString(id2), primary_id_str);
318 318
319 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property)); 319 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id1), &property));
320 EXPECT_FALSE(property->GetInteger("width", &width)); 320 EXPECT_FALSE(property->GetInteger("width", &width));
321 EXPECT_FALSE(property->GetInteger("height", &height)); 321 EXPECT_FALSE(property->GetInteger("height", &height));
322 322
323 // External dispaly's selected resolution must not change 323 // External display's selected resolution must not change
324 // by mirroring. 324 // by mirroring.
325 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); 325 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property));
326 EXPECT_TRUE(property->GetInteger("width", &width)); 326 EXPECT_TRUE(property->GetInteger("width", &width));
327 EXPECT_TRUE(property->GetInteger("height", &height)); 327 EXPECT_TRUE(property->GetInteger("height", &height));
328 EXPECT_EQ(300, width); 328 EXPECT_EQ(300, width);
329 EXPECT_EQ(200, height); 329 EXPECT_EQ(200, height);
330 330
331 // Set new display's selected resolution. 331 // Set new display's selected resolution.
332 display_manager->RegisterDisplayProperty(id2 + 1, 332 display_manager->RegisterDisplayProperty(
333 gfx::Display::ROTATE_0, 333 id2 + 1, gfx::Display::ROTATE_0, 1.0f, NULL, gfx::Size(500, 400));
334 1.0f,
335 NULL,
336 gfx::Size(500, 400));
337 334
338 UpdateDisplay("200x200*2, 600x500#600x500|500x400"); 335 UpdateDisplay("200x200*2, 600x500#600x500|500x400");
339 336
340 // Update key as the 2nd display gets new id. 337 // Update key as the 2nd display gets new id.
341 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 338 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
342 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); 339 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2);
343 EXPECT_TRUE(displays->GetDictionary(key, &layout_value)); 340 EXPECT_TRUE(displays->GetDictionary(key, &layout_value));
344 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position)); 341 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position));
345 EXPECT_EQ("right", position); 342 EXPECT_EQ("right", position);
346 EXPECT_TRUE(layout_value->GetInteger(kOffsetKey, &offset)); 343 EXPECT_TRUE(layout_value->GetInteger(kOffsetKey, &offset));
347 EXPECT_EQ(0, offset); 344 EXPECT_EQ(0, offset);
348 mirrored = true; 345 mirrored = true;
349 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored)); 346 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored));
350 EXPECT_FALSE(mirrored); 347 EXPECT_FALSE(mirrored);
351 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str)); 348 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str));
352 EXPECT_EQ(base::Int64ToString(id1), primary_id_str); 349 EXPECT_EQ(base::Int64ToString(id1), primary_id_str);
353 350
354 // Best resolution should not be saved. 351 // Best resolution should not be saved.
355 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); 352 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property));
356 EXPECT_FALSE(property->GetInteger("width", &width)); 353 EXPECT_FALSE(property->GetInteger("width", &width));
357 EXPECT_FALSE(property->GetInteger("height", &height)); 354 EXPECT_FALSE(property->GetInteger("height", &height));
358 355
359 // Set yet another new display's selected resolution. 356 // Set yet another new display's selected resolution.
360 display_manager->RegisterDisplayProperty(id2 + 1, 357 display_manager->RegisterDisplayProperty(
361 gfx::Display::ROTATE_0, 358 id2 + 1, gfx::Display::ROTATE_0, 1.0f, NULL, gfx::Size(500, 400));
362 1.0f,
363 NULL,
364 gfx::Size(500, 400));
365 // Disconnect 2nd display first to generate new id for external display. 359 // Disconnect 2nd display first to generate new id for external display.
366 UpdateDisplay("200x200*2"); 360 UpdateDisplay("200x200*2");
367 UpdateDisplay("200x200*2, 500x400#600x500|500x400"); 361 UpdateDisplay("200x200*2, 500x400#600x500|500x400%60.0f");
368 // Update key as the 2nd display gets new id. 362 // Update key as the 2nd display gets new id.
369 id2 = ash::ScreenUtil::GetSecondaryDisplay().id(); 363 id2 = ash::ScreenUtil::GetSecondaryDisplay().id();
370 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2); 364 key = base::Int64ToString(id1) + "," + base::Int64ToString(id2);
371 EXPECT_TRUE(displays->GetDictionary(key, &layout_value)); 365 EXPECT_TRUE(displays->GetDictionary(key, &layout_value));
372 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position)); 366 EXPECT_TRUE(layout_value->GetString(kPositionKey, &position));
373 EXPECT_EQ("right", position); 367 EXPECT_EQ("right", position);
374 EXPECT_TRUE(layout_value->GetInteger(kOffsetKey, &offset)); 368 EXPECT_TRUE(layout_value->GetInteger(kOffsetKey, &offset));
375 EXPECT_EQ(0, offset); 369 EXPECT_EQ(0, offset);
376 mirrored = true; 370 mirrored = true;
377 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored)); 371 EXPECT_TRUE(layout_value->GetBoolean(kMirroredKey, &mirrored));
378 EXPECT_FALSE(mirrored); 372 EXPECT_FALSE(mirrored);
379 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str)); 373 EXPECT_TRUE(layout_value->GetString(kPrimaryIdKey, &primary_id_str));
380 EXPECT_EQ(base::Int64ToString(id1), primary_id_str); 374 EXPECT_EQ(base::Int64ToString(id1), primary_id_str);
381 375
382 // External dispaly's selected resolution must be updated. 376 // External display's selected resolution must be updated.
383 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); 377 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property));
384 EXPECT_TRUE(property->GetInteger("width", &width)); 378 EXPECT_TRUE(property->GetInteger("width", &width));
385 EXPECT_TRUE(property->GetInteger("height", &height)); 379 EXPECT_TRUE(property->GetInteger("height", &height));
386 EXPECT_EQ(500, width); 380 EXPECT_EQ(500, width);
387 EXPECT_EQ(400, height); 381 EXPECT_EQ(400, height);
388 } 382 }
389 383
390 TEST_F(DisplayPreferencesTest, PreventStore) { 384 TEST_F(DisplayPreferencesTest, PreventStore) {
391 ResolutionNotificationController::SuppressTimerForTest(); 385 ResolutionNotificationController::SuppressTimerForTest();
392 LoggedInAsUser(); 386 LoggedInAsUser();
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 local_state()->GetString(prefs::kDisplayPowerState)); 555 local_state()->GetString(prefs::kDisplayPowerState));
562 556
563 // Don't try to load 557 // Don't try to load
564 local_state()->SetString(prefs::kDisplayPowerState, "all_off"); 558 local_state()->SetString(prefs::kDisplayPowerState, "all_off");
565 LoadDisplayPreferences(false); 559 LoadDisplayPreferences(false);
566 EXPECT_EQ(chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON, 560 EXPECT_EQ(chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON,
567 shell->output_configurator()->power_state()); 561 shell->output_configurator()->power_state());
568 } 562 }
569 563
570 } // namespace chromeos 564 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698