OLD | NEW |
---|---|
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 Loading... | |
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 |
OLD | NEW |