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

Side by Side Diff: chromeos/dbus/power_policy_controller_unittest.cc

Issue 14134004: chromeos: Move default power management policy into Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: change char pointers in PrefNames to std::strings Created 7 years, 8 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "chromeos/dbus/power_policy_controller.h" 5 #include "chromeos/dbus/power_policy_controller.h"
6 6
7 #include "base/prefs/pref_registry_simple.h"
8 #include "base/prefs/testing_pref_service.h"
7 #include "chromeos/dbus/dbus_thread_manager.h" 9 #include "chromeos/dbus/dbus_thread_manager.h"
8 #include "chromeos/dbus/mock_dbus_thread_manager.h" 10 #include "chromeos/dbus/mock_dbus_thread_manager.h"
9 #include "chromeos/dbus/mock_power_manager_client.h" 11 #include "chromeos/dbus/mock_power_manager_client.h"
10 #include "testing/gmock/include/gmock/gmock.h" 12 #include "testing/gmock/include/gmock/gmock.h"
11 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
12 14
13 using ::testing::_; 15 using ::testing::_;
14 using ::testing::SaveArg; 16 using ::testing::SaveArg;
15 17
16 namespace chromeos { 18 namespace chromeos {
17 19
18 class PowerPolicyControllerTest : public testing::Test { 20 class PowerPolicyControllerTest : public testing::Test {
19 public: 21 public:
20 PowerPolicyControllerTest() {} 22 PowerPolicyControllerTest() {}
21 virtual ~PowerPolicyControllerTest() {} 23 virtual ~PowerPolicyControllerTest() {}
22 24
23 virtual void SetUp() OVERRIDE { 25 virtual void SetUp() OVERRIDE {
24 dbus_manager_ = new MockDBusThreadManager; 26 dbus_manager_ = new MockDBusThreadManager;
25 DBusThreadManager::InitializeForTesting(dbus_manager_); // Takes ownership. 27 DBusThreadManager::InitializeForTesting(dbus_manager_); // Takes ownership.
26 power_client_ = dbus_manager_->mock_power_manager_client(); 28 power_client_ = dbus_manager_->mock_power_manager_client();
27 EXPECT_CALL(*power_client_, SetPolicy(_)) 29 EXPECT_CALL(*power_client_, SetPolicy(_))
28 .WillRepeatedly(SaveArg<0>(&last_policy_)); 30 .WillRepeatedly(SaveArg<0>(&last_policy_));
29 31
30 policy_controller_ = dbus_manager_->GetPowerPolicyController(); 32 policy_controller_ = dbus_manager_->GetPowerPolicyController();
31 33
32 // TODO(derat): Write what looks like it will be a ridiculously large 34 prefs_.registry()->RegisterIntegerPref(kAcScreenDimDelay, 0);
33 // amount of code to register prefs so that UpdatePolicyFromPrefs() can 35 prefs_.registry()->RegisterIntegerPref(kAcScreenOffDelay, 0);
34 // be tested. 36 prefs_.registry()->RegisterIntegerPref(kAcScreenLockDelay, 0);
37 prefs_.registry()->RegisterIntegerPref(kAcIdleWarningDelay, 0);
38 prefs_.registry()->RegisterIntegerPref(kAcIdleDelay, 0);
39 prefs_.registry()->RegisterIntegerPref(kBatteryScreenDimDelay, 0);
40 prefs_.registry()->RegisterIntegerPref(kBatteryScreenOffDelay, 0);
41 prefs_.registry()->RegisterIntegerPref(kBatteryScreenLockDelay, 0);
42 prefs_.registry()->RegisterIntegerPref(kBatteryIdleWarningDelay, 0);
43 prefs_.registry()->RegisterIntegerPref(kBatteryIdleDelay, 0);
44 prefs_.registry()->RegisterIntegerPref(kIdleAction, 0);
45 prefs_.registry()->RegisterIntegerPref(kLidClosedAction, 0);
46 prefs_.registry()->RegisterBooleanPref(kUseAudioActivity, false);
47 prefs_.registry()->RegisterBooleanPref(kUseVideoActivity, false);
48 prefs_.registry()->RegisterBooleanPref(kEnableScreenLock, false);
49 prefs_.registry()->RegisterDoublePref(kPresentationIdleDelayFactor, 0.0);
35 } 50 }
36 51
37 virtual void TearDown() OVERRIDE { 52 virtual void TearDown() OVERRIDE {
38 DBusThreadManager::Shutdown(); 53 DBusThreadManager::Shutdown();
39 } 54 }
40 55
41 protected: 56 protected:
57 // Names for various prefs.
58 static const char kAcScreenDimDelay[];
59 static const char kAcScreenOffDelay[];
60 static const char kAcScreenLockDelay[];
61 static const char kAcIdleWarningDelay[];
62 static const char kAcIdleDelay[];
63 static const char kBatteryScreenDimDelay[];
64 static const char kBatteryScreenOffDelay[];
65 static const char kBatteryScreenLockDelay[];
66 static const char kBatteryIdleWarningDelay[];
67 static const char kBatteryIdleDelay[];
68 static const char kIdleAction[];
69 static const char kLidClosedAction[];
70 static const char kUseAudioActivity[];
71 static const char kUseVideoActivity[];
72 static const char kEnableScreenLock[];
73 static const char kPresentationIdleDelayFactor[];
74
75 void InitControllerPrefs() {
76 PowerPolicyController::PrefNames names;
77 names.ac_screen_dim_delay_ms = kAcScreenDimDelay;
78 names.ac_screen_off_delay_ms = kAcScreenOffDelay;
79 names.ac_screen_lock_delay_ms =kAcScreenLockDelay;
bartfab (slow) 2013/04/17 11:51:12 Nit: Space after =
Daniel Erat 2013/04/18 03:59:16 n/a
80 names.ac_idle_warning_delay_ms = kAcIdleWarningDelay;
81 names.ac_idle_delay_ms = kAcIdleDelay;
82 names.battery_screen_dim_delay_ms = kBatteryScreenDimDelay;
83 names.battery_screen_off_delay_ms = kBatteryScreenOffDelay;
84 names.battery_screen_lock_delay_ms = kBatteryScreenLockDelay;
85 names.battery_idle_warning_delay_ms = kBatteryIdleWarningDelay;
86 names.battery_idle_delay_ms = kBatteryIdleDelay;
87 names.idle_action = kIdleAction;
88 names.lid_closed_action = kLidClosedAction;
89 names.use_audio_activity = kUseAudioActivity;
90 names.use_video_activity = kUseVideoActivity;
91 names.enable_screen_lock = kEnableScreenLock;
92 names.presentation_idle_delay_factor = kPresentationIdleDelayFactor;
93 policy_controller_->InitPrefs(&prefs_, names);
94 }
95
42 MockDBusThreadManager* dbus_manager_; // Not owned. 96 MockDBusThreadManager* dbus_manager_; // Not owned.
43 MockPowerManagerClient* power_client_; // Not owned. 97 MockPowerManagerClient* power_client_; // Not owned.
44 PowerPolicyController* policy_controller_; // Not owned. 98 PowerPolicyController* policy_controller_; // Not owned.
45 99
100 TestingPrefServiceSimple prefs_;
101
46 power_manager::PowerManagementPolicy last_policy_; 102 power_manager::PowerManagementPolicy last_policy_;
47 }; 103 };
48 104
105 const char PowerPolicyControllerTest::kAcScreenDimDelay[] = "a_dim";
106 const char PowerPolicyControllerTest::kAcScreenOffDelay[] = "a_off";
107 const char PowerPolicyControllerTest::kAcScreenLockDelay[] = "a_lock";
108 const char PowerPolicyControllerTest::kAcIdleWarningDelay[] = "a_warning";
109 const char PowerPolicyControllerTest::kAcIdleDelay[] = "a_idle";
110 const char PowerPolicyControllerTest::kBatteryScreenDimDelay[] = "b_dim";
111 const char PowerPolicyControllerTest::kBatteryScreenOffDelay[] = "b_off";
112 const char PowerPolicyControllerTest::kBatteryScreenLockDelay[] = "b_lock";
113 const char PowerPolicyControllerTest::kBatteryIdleWarningDelay[] = "b_warning";
114 const char PowerPolicyControllerTest::kBatteryIdleDelay[] = "b_idle";
115 const char PowerPolicyControllerTest::kIdleAction[] = "idle_action";
116 const char PowerPolicyControllerTest::kLidClosedAction[] = "lid_closed_action";
117 const char PowerPolicyControllerTest::kUseAudioActivity[] = "use_audio";
118 const char PowerPolicyControllerTest::kUseVideoActivity[] = "use_video";
119 const char PowerPolicyControllerTest::kEnableScreenLock[] = "enable_lock";
120 const char PowerPolicyControllerTest::kPresentationIdleDelayFactor[] =
121 "presentation_idle_delay_factor";
122
123 TEST_F(PowerPolicyControllerTest, Prefs) {
124 prefs_.SetInteger(kAcScreenDimDelay, 600000);
125 prefs_.SetInteger(kAcScreenOffDelay, 660000);
126 prefs_.SetInteger(kAcIdleDelay, 720000);
127 prefs_.SetInteger(kBatteryScreenDimDelay, 300000);
128 prefs_.SetInteger(kBatteryScreenOffDelay, 360000);
129 prefs_.SetInteger(kBatteryIdleDelay, 420000);
130 prefs_.SetInteger(kIdleAction, PowerPolicyController::ACTION_SUSPEND);
131 prefs_.SetInteger(kLidClosedAction, PowerPolicyController::ACTION_SHUT_DOWN);
132 prefs_.SetBoolean(kUseAudioActivity, true);
133 prefs_.SetBoolean(kUseVideoActivity, true);
134 prefs_.SetBoolean(kEnableScreenLock, false);
135 prefs_.SetDouble(kPresentationIdleDelayFactor, 2.0);
136 InitControllerPrefs();
137
138 power_manager::PowerManagementPolicy expected_policy;
139 expected_policy.mutable_ac_delays()->set_screen_dim_ms(600000);
140 expected_policy.mutable_ac_delays()->set_screen_off_ms(660000);
141 expected_policy.mutable_ac_delays()->set_screen_lock_ms(0);
142 expected_policy.mutable_ac_delays()->set_idle_warning_ms(0);
143 expected_policy.mutable_ac_delays()->set_idle_ms(720000);
144 expected_policy.mutable_battery_delays()->set_screen_dim_ms(300000);
145 expected_policy.mutable_battery_delays()->set_screen_off_ms(360000);
146 expected_policy.mutable_battery_delays()->set_screen_lock_ms(0);
147 expected_policy.mutable_battery_delays()->set_idle_warning_ms(0);
148 expected_policy.mutable_battery_delays()->set_idle_ms(420000);
149 expected_policy.set_idle_action(
150 power_manager::PowerManagementPolicy_Action_SUSPEND);
151 expected_policy.set_lid_closed_action(
152 power_manager::PowerManagementPolicy_Action_SHUT_DOWN);
153 expected_policy.set_use_audio_activity(true);
154 expected_policy.set_use_video_activity(true);
155 expected_policy.set_presentation_idle_delay_factor(2.0);
156 EXPECT_EQ(expected_policy.SerializeAsString(),
157 last_policy_.SerializeAsString());
158
159 // Change some prefs and check that an updated policy is sent.
160 prefs_.SetInteger(kAcIdleWarningDelay, 700000);
161 prefs_.SetInteger(kBatteryIdleWarningDelay, 400000);
162 prefs_.SetInteger(kLidClosedAction, PowerPolicyController::ACTION_SUSPEND);
163 expected_policy.mutable_ac_delays()->set_idle_warning_ms(700000);
164 expected_policy.mutable_battery_delays()->set_idle_warning_ms(400000);
165 expected_policy.set_lid_closed_action(
166 power_manager::PowerManagementPolicy_Action_SUSPEND);
167 EXPECT_EQ(expected_policy.SerializeAsString(),
168 last_policy_.SerializeAsString());
169
170 // The enable-screen-lock pref should force the screen-lock delays to
171 // match the screen-off delays.
172 prefs_.SetBoolean(kEnableScreenLock, true);
173 expected_policy.mutable_ac_delays()->set_screen_lock_ms(660000);
174 expected_policy.mutable_battery_delays()->set_screen_lock_ms(360000);
175 EXPECT_EQ(expected_policy.SerializeAsString(),
176 last_policy_.SerializeAsString());
177
178 // If the screen-lock-delay prefs are set to lower values than the
179 // screen-off delays, the lock prefs should take precedence.
180 prefs_.SetInteger(kAcScreenLockDelay, 70000);
181 prefs_.SetInteger(kBatteryScreenLockDelay, 60000);
182 expected_policy.mutable_ac_delays()->set_screen_lock_ms(70000);
183 expected_policy.mutable_battery_delays()->set_screen_lock_ms(60000);
184 EXPECT_EQ(expected_policy.SerializeAsString(),
185 last_policy_.SerializeAsString());
186 }
187
49 TEST_F(PowerPolicyControllerTest, Blocks) { 188 TEST_F(PowerPolicyControllerTest, Blocks) {
50 const char kSuspendBlockReason[] = "suspend"; 189 const char kSuspendBlockReason[] = "suspend";
51 const int suspend_id = 190 const int suspend_id =
52 policy_controller_->AddSuspendBlock(kSuspendBlockReason); 191 policy_controller_->AddSuspendBlock(kSuspendBlockReason);
53 power_manager::PowerManagementPolicy expected_policy; 192 power_manager::PowerManagementPolicy expected_policy;
54 expected_policy.set_idle_action( 193 expected_policy.set_idle_action(
55 power_manager::PowerManagementPolicy_Action_DO_NOTHING); 194 power_manager::PowerManagementPolicy_Action_DO_NOTHING);
56 expected_policy.set_reason(kSuspendBlockReason); 195 expected_policy.set_reason(kSuspendBlockReason);
57 EXPECT_EQ(expected_policy.SerializeAsString(), 196 EXPECT_EQ(expected_policy.SerializeAsString(),
58 last_policy_.SerializeAsString()); 197 last_policy_.SerializeAsString());
(...skipping 14 matching lines...) Expand all
73 EXPECT_EQ(expected_policy.SerializeAsString(), 212 EXPECT_EQ(expected_policy.SerializeAsString(),
74 last_policy_.SerializeAsString()); 213 last_policy_.SerializeAsString());
75 214
76 policy_controller_->RemoveBlock(screen_id); 215 policy_controller_->RemoveBlock(screen_id);
77 expected_policy.Clear(); 216 expected_policy.Clear();
78 EXPECT_EQ(expected_policy.SerializeAsString(), 217 EXPECT_EQ(expected_policy.SerializeAsString(),
79 last_policy_.SerializeAsString()); 218 last_policy_.SerializeAsString());
80 } 219 }
81 220
82 } // namespace chromeos 221 } // namespace chromeos
OLDNEW
« chromeos/dbus/power_policy_controller.cc ('K') | « chromeos/dbus/power_policy_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698