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

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

Issue 22703004: Creates notifications for display resolution change. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix on display_preferences_unittest 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/display/resolution_notification_controller.h"
10 #include "ash/screen_ash.h" 11 #include "ash/screen_ash.h"
11 #include "ash/shell.h" 12 #include "ash/shell.h"
12 #include "ash/test/ash_test_base.h" 13 #include "ash/test/ash_test_base.h"
13 #include "base/prefs/testing_pref_service.h" 14 #include "base/prefs/testing_pref_service.h"
14 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
15 #include "base/values.h" 16 #include "base/values.h"
16 #include "chrome/browser/chromeos/display/display_configuration_observer.h" 17 #include "chrome/browser/chromeos/display/display_configuration_observer.h"
17 #include "chrome/browser/chromeos/login/mock_user_manager.h" 18 #include "chrome/browser/chromeos/login/mock_user_manager.h"
18 #include "chrome/browser/chromeos/login/user_manager.h" 19 #include "chrome/browser/chromeos/login/user_manager.h"
19 #include "chrome/browser/prefs/scoped_user_pref_update.h" 20 #include "chrome/browser/prefs/scoped_user_pref_update.h"
20 #include "chrome/common/pref_names.h" 21 #include "chrome/common/pref_names.h"
21 #include "chrome/test/base/testing_browser_process.h" 22 #include "chrome/test/base/testing_browser_process.h"
22 #include "chromeos/display/output_configurator.h" 23 #include "chromeos/display/output_configurator.h"
24 #include "ui/message_center/message_center.h"
25
26 using ash::internal::ResolutionNotificationController;
23 27
24 namespace chromeos { 28 namespace chromeos {
25 namespace { 29 namespace {
26 const char kPrimaryIdKey[] = "primary-id"; 30 const char kPrimaryIdKey[] = "primary-id";
27 const char kMirroredKey[] = "mirrored"; 31 const char kMirroredKey[] = "mirrored";
28 const char kPositionKey[] = "position"; 32 const char kPositionKey[] = "position";
29 const char kOffsetKey[] = "offset"; 33 const char kOffsetKey[] = "offset";
30 34
31 class DisplayPreferencesTest : public ash::test::AshTestBase { 35 class DisplayPreferencesTest : public ash::test::AshTestBase {
32 protected: 36 protected:
33 DisplayPreferencesTest() : ash::test::AshTestBase(), 37 DisplayPreferencesTest() : ash::test::AshTestBase(),
34 mock_user_manager_(new MockUserManager), 38 mock_user_manager_(new MockUserManager),
35 user_manager_enabler_(mock_user_manager_) { 39 user_manager_enabler_(mock_user_manager_) {
36 } 40 }
37 41
38 virtual ~DisplayPreferencesTest() {} 42 virtual ~DisplayPreferencesTest() {}
39 43
40 virtual void SetUp() OVERRIDE { 44 virtual void SetUp() OVERRIDE {
41 EXPECT_CALL(*mock_user_manager_, IsUserLoggedIn()) 45 EXPECT_CALL(*mock_user_manager_, IsUserLoggedIn())
42 .WillRepeatedly(testing::Return(false)); 46 .WillRepeatedly(testing::Return(false));
47 EXPECT_CALL(*mock_user_manager_, Shutdown());
43 ash::test::AshTestBase::SetUp(); 48 ash::test::AshTestBase::SetUp();
44 RegisterDisplayLocalStatePrefs(local_state_.registry()); 49 RegisterDisplayLocalStatePrefs(local_state_.registry());
45 TestingBrowserProcess::GetGlobal()->SetLocalState(&local_state_); 50 TestingBrowserProcess::GetGlobal()->SetLocalState(&local_state_);
46 observer_.reset(new DisplayConfigurationObserver()); 51 observer_.reset(new DisplayConfigurationObserver());
47 } 52 }
48 53
49 virtual void TearDown() OVERRIDE { 54 virtual void TearDown() OVERRIDE {
50 observer_.reset(); 55 observer_.reset();
51 TestingBrowserProcess::GetGlobal()->SetLocalState(NULL); 56 TestingBrowserProcess::GetGlobal()->SetLocalState(NULL);
52 ash::test::AshTestBase::TearDown(); 57 ash::test::AshTestBase::TearDown();
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 144
140 private: 145 private:
141 MockUserManager* mock_user_manager_; // Not owned. 146 MockUserManager* mock_user_manager_; // Not owned.
142 ScopedUserManagerEnabler user_manager_enabler_; 147 ScopedUserManagerEnabler user_manager_enabler_;
143 TestingPrefServiceSimple local_state_; 148 TestingPrefServiceSimple local_state_;
144 scoped_ptr<DisplayConfigurationObserver> observer_; 149 scoped_ptr<DisplayConfigurationObserver> observer_;
145 150
146 DISALLOW_COPY_AND_ASSIGN(DisplayPreferencesTest); 151 DISALLOW_COPY_AND_ASSIGN(DisplayPreferencesTest);
147 }; 152 };
148 153
154 } // namespace
155
149 TEST_F(DisplayPreferencesTest, PairedLayoutOverrides) { 156 TEST_F(DisplayPreferencesTest, PairedLayoutOverrides) {
150 UpdateDisplay("100x100,200x200"); 157 UpdateDisplay("100x100,200x200");
151 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); 158 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id();
152 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id(); 159 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id();
153 int64 dummy_id = id2 + 1; 160 int64 dummy_id = id2 + 1;
154 ASSERT_NE(id1, dummy_id); 161 ASSERT_NE(id1, dummy_id);
155 162
156 StoreDisplayLayoutPrefForPair(id1, id2, ash::DisplayLayout::TOP, 20); 163 StoreDisplayLayoutPrefForPair(id1, id2, ash::DisplayLayout::TOP, 20);
157 StoreDisplayLayoutPrefForPair(id1, dummy_id, ash::DisplayLayout::LEFT, 30); 164 StoreDisplayLayoutPrefForPair(id1, dummy_id, ash::DisplayLayout::LEFT, 30);
158 StoreDisplayPowerStateForTest( 165 StoreDisplayPowerStateForTest(
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 EXPECT_EQ(base::Int64ToString(id1), primary_id_str); 352 EXPECT_EQ(base::Int64ToString(id1), primary_id_str);
346 353
347 // External dispaly's selected resolution must be updated. 354 // External dispaly's selected resolution must be updated.
348 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property)); 355 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id2), &property));
349 EXPECT_TRUE(property->GetInteger("width", &width)); 356 EXPECT_TRUE(property->GetInteger("width", &width));
350 EXPECT_TRUE(property->GetInteger("height", &height)); 357 EXPECT_TRUE(property->GetInteger("height", &height));
351 EXPECT_EQ(500, width); 358 EXPECT_EQ(500, width);
352 EXPECT_EQ(400, height); 359 EXPECT_EQ(400, height);
353 } 360 }
354 361
362 TEST_F(DisplayPreferencesTest, PreventStore) {
363 ResolutionNotificationController::SuppressTimerForTest();
364 LoggedInAsUser();
365 UpdateDisplay("400x300");
366 int64 id = ash::Shell::GetScreen()->GetPrimaryDisplay().id();
367 // Set display's resolution in single display. It creates the notification and
368 // display preferences should not stored meanwhile.
369 ash::Shell::GetInstance()->resolution_notification_controller()->
370 SetDisplayResolutionAndNotify(
371 id, gfx::Size(400, 300), gfx::Size(500, 400), base::Closure());
372 UpdateDisplay("500x400");
373
374 const base::DictionaryValue* properties =
375 local_state()->GetDictionary(prefs::kDisplayProperties);
376 const base::DictionaryValue* property = NULL;
377 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id), &property));
378 int width = 0, height = 0;
379 EXPECT_FALSE(property->GetInteger("width", &width));
380 EXPECT_FALSE(property->GetInteger("height", &height));
381
382 // Revert the change. When timeout, 2nd button is revert.
383 message_center::MessageCenter::Get()->ClickOnNotificationButton(
384 ResolutionNotificationController::kNotificationId, 1);
385 RunAllPendingInMessageLoop();
386 EXPECT_FALSE(message_center::MessageCenter::Get()->HasNotification(
387 ResolutionNotificationController::kNotificationId));
388
389 // Once the notification is removed, the specified resolution will be stored
390 // by SetDisplayResolution.
391 ash::Shell::GetInstance()->display_manager()->SetDisplayResolution(
392 id, gfx::Size(300, 200));
393 UpdateDisplay("300x200");
394
395 property = NULL;
396 EXPECT_TRUE(properties->GetDictionary(base::Int64ToString(id), &property));
397 EXPECT_TRUE(property->GetInteger("width", &width));
398 EXPECT_TRUE(property->GetInteger("height", &height));
399 EXPECT_EQ(300, width);
400 EXPECT_EQ(200, height);
401 }
402
355 TEST_F(DisplayPreferencesTest, StoreForSwappedDisplay) { 403 TEST_F(DisplayPreferencesTest, StoreForSwappedDisplay) {
356 UpdateDisplay("100x100,200x200"); 404 UpdateDisplay("100x100,200x200");
357 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id(); 405 int64 id1 = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().id();
358 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id(); 406 int64 id2 = ash::ScreenAsh::GetSecondaryDisplay().id();
359 407
360 ash::DisplayController* display_controller = 408 ash::DisplayController* display_controller =
361 ash::Shell::GetInstance()->display_controller(); 409 ash::Shell::GetInstance()->display_controller();
362 display_controller->SwapPrimaryDisplay(); 410 display_controller->SwapPrimaryDisplay();
363 ASSERT_EQ(id1, ash::ScreenAsh::GetSecondaryDisplay().id()); 411 ASSERT_EQ(id1, ash::ScreenAsh::GetSecondaryDisplay().id());
364 412
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 486
439 TEST_F(DisplayPreferencesTest, DisplayPowerStateAfterRestart) { 487 TEST_F(DisplayPreferencesTest, DisplayPowerStateAfterRestart) {
440 StoreDisplayPowerStateForTest( 488 StoreDisplayPowerStateForTest(
441 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON); 489 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON);
442 LoadDisplayPreferences(false); 490 LoadDisplayPreferences(false);
443 EXPECT_EQ( 491 EXPECT_EQ(
444 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON, 492 chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON,
445 ash::Shell::GetInstance()->output_configurator()->power_state()); 493 ash::Shell::GetInstance()->output_configurator()->power_state());
446 } 494 }
447 495
448 } // namespace
449 } // namespace chromeos 496 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698