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

Side by Side Diff: chrome/browser/chromeos/policy/power_policy_browsertest.cc

Issue 18153007: Add policies to control power management on the Chrome OS login screen (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comments addressed. Rebased. Created 7 years, 5 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 <string> 5 #include <string>
6 6 #include <vector>
7
8 #include "base/basictypes.h"
9 #include "base/bind.h"
10 #include "base/command_line.h"
7 #include "base/compiler_specific.h" 11 #include "base/compiler_specific.h"
12 #include "base/file_util.h"
13 #include "base/files/file_path.h"
14 #include "base/location.h"
15 #include "base/message_loop/message_loop.h"
16 #include "base/path_service.h"
8 #include "base/run_loop.h" 17 #include "base/run_loop.h"
9 #include "base/values.h" 18 #include "chrome/browser/browser_process.h"
19 #include "chrome/browser/chromeos/login/user_manager.h"
20 #include "chrome/browser/chromeos/policy/device_policy_builder.h"
21 #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h"
22 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h"
23 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chrom eos.h"
24 #include "chrome/browser/chromeos/profiles/profile_helper.h"
25 #include "chrome/browser/chromeos/settings/device_settings_service.h"
10 #include "chrome/browser/extensions/api/power/power_api_manager.h" 26 #include "chrome/browser/extensions/api/power/power_api_manager.h"
11 #include "chrome/browser/policy/browser_policy_connector.h" 27 #include "chrome/browser/lifetime/application_lifetime.h"
12 #include "chrome/browser/policy/mock_configuration_policy_provider.h" 28 #include "chrome/browser/policy/cloud/cloud_policy_core.h"
13 #include "chrome/browser/policy/policy_map.h" 29 #include "chrome/browser/policy/cloud/cloud_policy_store.h"
14 #include "chrome/browser/policy/policy_types.h" 30 #include "chrome/browser/policy/cloud/policy_builder.h"
31 #include "chrome/browser/policy/mock_policy_service.h"
32 #include "chrome/browser/policy/policy_service.h"
33 #include "chrome/browser/policy/profile_policy_connector.h"
34 #include "chrome/browser/policy/profile_policy_connector_factory.h"
35 #include "chrome/browser/policy/proto/chromeos/chrome_device_policy.pb.h"
36 #include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h"
37 #include "chrome/browser/profiles/profile.h"
38 #include "chrome/browser/profiles/profile_manager.h"
39 #include "chrome/common/chrome_notification_types.h"
15 #include "chrome/common/extensions/api/power.h" 40 #include "chrome/common/extensions/api/power.h"
16 #include "chrome/test/base/in_process_browser_test.h" 41 #include "chrome/test/base/testing_profile.h"
17 #include "chromeos/dbus/dbus_thread_manager.h" 42 #include "chromeos/chromeos_paths.h"
43 #include "chromeos/chromeos_switches.h"
18 #include "chromeos/dbus/fake_power_manager_client.h" 44 #include "chromeos/dbus/fake_power_manager_client.h"
45 #include "chromeos/dbus/fake_session_manager_client.h"
19 #include "chromeos/dbus/mock_dbus_thread_manager_without_gmock.h" 46 #include "chromeos/dbus/mock_dbus_thread_manager_without_gmock.h"
20 #include "chromeos/dbus/power_manager/policy.pb.h" 47 #include "chromeos/dbus/power_manager/policy.pb.h"
21 #include "chromeos/dbus/power_policy_controller.h" 48 #include "chromeos/dbus/power_policy_controller.h"
22 #include "policy/policy_constants.h" 49 #include "content/public/browser/notification_details.h"
50 #include "content/public/browser/notification_service.h"
51 #include "content/public/browser/notification_source.h"
52 #include "content/public/test/test_utils.h"
53 #include "crypto/rsa_private_key.h"
23 #include "testing/gmock/include/gmock/gmock.h" 54 #include "testing/gmock/include/gmock/gmock.h"
55 #include "testing/gtest/include/gtest/gtest.h"
56
57 namespace em = enterprise_management;
58 namespace pm = power_manager;
59
60 using ::testing::AnyNumber;
61 using ::testing::InvokeWithoutArgs;
62 using ::testing::_;
24 63
25 namespace policy { 64 namespace policy {
26 65
27 namespace { 66 class PowerPolicyBrowserTestBase : public DevicePolicyCrosBrowserTest {
28
29 using ::testing::AnyNumber;
30 using ::testing::Return;
31 using ::testing::_;
32
33 namespace pm = power_manager;
34
35 } // namespace
36
37 class PowerPolicyBrowserTest : public InProcessBrowserTest {
38 protected: 67 protected:
39 // InProcessBrowserTest: 68 PowerPolicyBrowserTestBase();
69
70 // DevicePolicyCrosBrowserTest:
40 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; 71 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE;
41 72 virtual void SetUpOnMainThread() OVERRIDE;
42 // Sets |user_policy_name| to |user_policy_value|. 73
43 void SetUserPolicy(const std::string& user_policy_name, 74 void InstallUserKey();
44 base::Value* user_policy_value); 75 void RefreshUserPolicy();
76
77 void RefreshDevicePolicyAndWaitForLoginProfileChanges();
45 78
46 // Returns a string describing |policy|. 79 // Returns a string describing |policy|.
47 std::string GetDebugString(const pm::PowerManagementPolicy& policy); 80 std::string GetDebugString(const pm::PowerManagementPolicy& policy);
48 81
82 UserPolicyBuilder user_policy_;
83
49 chromeos::FakePowerManagerClient* power_manager_client_; 84 chromeos::FakePowerManagerClient* power_manager_client_;
50 85
51 private: 86 DISALLOW_COPY_AND_ASSIGN(PowerPolicyBrowserTestBase);
52 MockConfigurationPolicyProvider provider_;
53 }; 87 };
54 88
55 void PowerPolicyBrowserTest::SetUpInProcessBrowserTestFixture() { 89 class PowerPolicyLoginScreenBrowserTest : public PowerPolicyBrowserTestBase {
56 chromeos::MockDBusThreadManagerWithoutGMock* dbus_thread_manager = 90 protected:
57 new chromeos::MockDBusThreadManagerWithoutGMock; 91 PowerPolicyLoginScreenBrowserTest();
58 power_manager_client_ = dbus_thread_manager->fake_power_manager_client(); 92
59 chromeos::DBusThreadManager::InitializeForTesting(dbus_thread_manager); 93 // PowerPolicyBrowserTestBase:
60 EXPECT_CALL(provider_, IsInitializationComplete(_)) 94 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE;
61 .WillRepeatedly(Return(true)); 95 virtual void SetUpOnMainThread() OVERRIDE;
62 EXPECT_CALL(provider_, RegisterPolicyDomain(_)).Times(AnyNumber()); 96 virtual void CleanUpOnMainThread() OVERRIDE;
63 BrowserPolicyConnector::SetPolicyProviderForTesting(&provider_); 97
64 } 98 DISALLOW_COPY_AND_ASSIGN(PowerPolicyLoginScreenBrowserTest);
65 99 };
66 void PowerPolicyBrowserTest::SetUserPolicy( 100
67 const std::string& user_policy_name, 101 class PowerPolicyInSessionBrowserTest : public PowerPolicyBrowserTestBase {
68 base::Value* user_policy_value) { 102 protected:
69 PolicyMap policy_map; 103 PowerPolicyInSessionBrowserTest();
70 policy_map.Set(user_policy_name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 104
71 user_policy_value); 105 // PowerPolicyBrowserTestBase:
72 provider_.UpdateChromePolicy(policy_map); 106 virtual void SetUpOnMainThread() OVERRIDE;
107
108 DISALLOW_COPY_AND_ASSIGN(PowerPolicyInSessionBrowserTest);
109 };
110
111 MockPolicyServiceObserver::MockPolicyServiceObserver() {
Mattias Nissler (ping if slow) 2013/07/04 11:53:04 These shouldn't be here?
bartfab (slow) 2013/07/05 13:52:57 Done.
112 }
113
114 MockPolicyServiceObserver::~MockPolicyServiceObserver() {
115 }
116
117 PowerPolicyBrowserTestBase::PowerPolicyBrowserTestBase()
118 : power_manager_client_(NULL) {
119 }
120
121 void PowerPolicyBrowserTestBase::SetUpInProcessBrowserTestFixture() {
122 DevicePolicyCrosBrowserTest::SetUpInProcessBrowserTestFixture();
123
124 // Initialize device policy.
125 InstallOwnerKey();
126 MarkAsEnterpriseOwned();
127
128 power_manager_client_ =
129 mock_dbus_thread_manager()->fake_power_manager_client();
130 }
131
132 void PowerPolicyBrowserTestBase::SetUpOnMainThread() {
133 DevicePolicyCrosBrowserTest::SetUpOnMainThread();
134
135 // Initialize user policy.
136 InstallUserKey();
137 user_policy_.policy_data().set_username(chromeos::UserManager::kStubUser);
138 }
139
140 void PowerPolicyBrowserTestBase::InstallUserKey() {
141 base::FilePath user_keys_dir;
142 ASSERT_TRUE(PathService::Get(chromeos::DIR_USER_POLICY_KEYS, &user_keys_dir));
143 base::FilePath user_key_file =
144 user_keys_dir.AppendASCII(chromeos::UserManager::kStubUser)
145 .AppendASCII("policy.pub");
146 std::vector<uint8> user_key_bits;
147 ASSERT_TRUE(user_policy_.signing_key()->ExportPublicKey(&user_key_bits));
148 ASSERT_TRUE(file_util::CreateDirectory(user_key_file.DirName()));
149 ASSERT_EQ(file_util::WriteFile(
150 user_key_file,
151 reinterpret_cast<const char*>(user_key_bits.data()),
152 user_key_bits.size()),
153 static_cast<int>(user_key_bits.size()));
154 }
155
156 void PowerPolicyBrowserTestBase::RefreshUserPolicy() {
157 ProfileManager* profile_manager = g_browser_process->profile_manager();
158 Profile* profile = profile_manager->GetProfileByPath(
159 profile_manager->user_data_dir().Append(
160 TestingProfile::kTestUserProfileDir));
161 ASSERT_TRUE(profile);
162
163 // Install the new user policy blob in session manager client.
164 user_policy_.Build();
165 session_manager_client()->set_user_policy(
166 user_policy_.policy_data().username(),
167 user_policy_.GetBlob());
168
169 // Reload user policy from session manager client.
170 base::RunLoop run_loop;
171 MockPolicyServiceObserver observer;
172 EXPECT_CALL(observer, OnPolicyUpdated(_, _, _))
173 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
174 EXPECT_CALL(observer, OnPolicyServiceInitialized(_)).Times(AnyNumber());
175 PolicyService* policy_service =
176 ProfilePolicyConnectorFactory::GetForProfile(profile)->policy_service();
177 ASSERT_TRUE(policy_service);
178 policy_service->AddObserver(POLICY_DOMAIN_CHROME, &observer);
179 UserCloudPolicyManagerChromeOS* policy_manager =
180 UserCloudPolicyManagerFactoryChromeOS::GetForProfile(profile);
181 ASSERT_TRUE(policy_manager);
182 policy_manager->core()->store()->Load();
183 run_loop.Run();
184 policy_service->RemoveObserver(POLICY_DOMAIN_CHROME, &observer);
185 }
186
187 void PowerPolicyBrowserTestBase::
188 RefreshDevicePolicyAndWaitForLoginProfileChanges() {
189 Profile* profile = chromeos::ProfileHelper::GetSigninProfile();
190 ASSERT_TRUE(profile);
191
192 // Install the new device policy blob in session manager client, reload device
193 // policy from session manager client and wait for a change in the login
194 // profile's policy to be observed.
195 base::RunLoop run_loop;
196 MockPolicyServiceObserver observer;
197 EXPECT_CALL(observer, OnPolicyUpdated(_, _, _))
198 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
199 EXPECT_CALL(observer, OnPolicyServiceInitialized(_)).Times(AnyNumber());
200 PolicyService* policy_service =
201 ProfilePolicyConnectorFactory::GetForProfile(profile)->policy_service();
202 ASSERT_TRUE(policy_service);
203 policy_service->AddObserver(POLICY_DOMAIN_CHROME, &observer);
204 RefreshDevicePolicy();
205 run_loop.Run();
206 policy_service->RemoveObserver(POLICY_DOMAIN_CHROME, &observer);
207
208 // Spin the loop until idle because more changes to the login profile's policy
209 // may be pending.
73 base::RunLoop().RunUntilIdle(); 210 base::RunLoop().RunUntilIdle();
74 } 211 }
75 212
76 std::string PowerPolicyBrowserTest::GetDebugString( 213 std::string PowerPolicyBrowserTestBase::GetDebugString(
77 const pm::PowerManagementPolicy& policy) { 214 const pm::PowerManagementPolicy& policy) {
78 return chromeos::PowerPolicyController::GetPolicyDebugString(policy); 215 return chromeos::PowerPolicyController::GetPolicyDebugString(policy);
79 } 216 }
80 217
81 IN_PROC_BROWSER_TEST_F(PowerPolicyBrowserTest, SetPowerPolicy) { 218 PowerPolicyLoginScreenBrowserTest::PowerPolicyLoginScreenBrowserTest() {
82 pm::PowerManagementPolicy original_power_management_policy = 219 }
220
221 void PowerPolicyLoginScreenBrowserTest::SetUpCommandLine(
222 CommandLine* command_line) {
223 PowerPolicyBrowserTestBase::SetUpCommandLine(command_line);
224 command_line->AppendSwitch(chromeos::switches::kLoginManager);
225 command_line->AppendSwitch(chromeos::switches::kForceLoginManagerInTests);
226 }
227
228 void PowerPolicyLoginScreenBrowserTest::SetUpOnMainThread() {
229 PowerPolicyBrowserTestBase::SetUpOnMainThread();
230
231 // Wait for the login screen to be shown.
232 content::WindowedNotificationObserver(
233 chrome::NOTIFICATION_LOGIN_WEBUI_VISIBLE,
234 content::NotificationService::AllSources()).Wait();
235 }
236
237 void PowerPolicyLoginScreenBrowserTest::CleanUpOnMainThread() {
238 base::MessageLoop::current()->PostTask(FROM_HERE,
239 base::Bind(&chrome::AttemptExit));
240 base::RunLoop().RunUntilIdle();
241 PowerPolicyBrowserTestBase::CleanUpOnMainThread();
242 }
243
244 PowerPolicyInSessionBrowserTest::PowerPolicyInSessionBrowserTest() {
245 }
246
247 void PowerPolicyInSessionBrowserTest::SetUpOnMainThread() {
248 PowerPolicyBrowserTestBase::SetUpOnMainThread();
249
250 // Tell the DeviceSettingsService that there is no local owner.
251 chromeos::DeviceSettingsService::Get()->SetUsername(std::string());
252 }
253
254 // Verifies that device policy is applied on the login screen.
255 IN_PROC_BROWSER_TEST_F(PowerPolicyLoginScreenBrowserTest, SetDevicePolicy) {
256 pm::PowerManagementPolicy power_management_policy =
83 power_manager_client_->get_policy(); 257 power_manager_client_->get_policy();
84 258 power_management_policy.mutable_ac_delays()->set_screen_dim_ms(5000);
259 power_management_policy.mutable_ac_delays()->set_screen_off_ms(7000);
260 power_management_policy.mutable_ac_delays()->set_idle_ms(9000);
261 power_management_policy.mutable_battery_delays()->set_screen_dim_ms(1000);
262 power_management_policy.mutable_battery_delays()->set_screen_off_ms(3000);
263 power_management_policy.mutable_battery_delays()->set_idle_ms(4000);
264 power_management_policy.set_ac_idle_action(
265 pm::PowerManagementPolicy::DO_NOTHING);
266 power_management_policy.set_battery_idle_action(
267 pm::PowerManagementPolicy::DO_NOTHING);
268 power_management_policy.set_lid_closed_action(
269 pm::PowerManagementPolicy::DO_NOTHING);
270 power_management_policy.set_user_activity_screen_dim_delay_factor(3.0);
271
272 em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
273 proto.mutable_power_management()->set_login_screen_screen_dim_delay_ac(5000);
274 proto.mutable_power_management()->set_login_screen_screen_off_delay_ac(7000);
275 proto.mutable_power_management()->set_login_screen_idle_delay_ac(9000);
276 proto.mutable_power_management()->set_login_screen_screen_dim_delay_battery(
277 1000);
278 proto.mutable_power_management()->set_login_screen_screen_off_delay_battery(
279 3000);
280 proto.mutable_power_management()->set_login_screen_idle_delay_battery(
281 4000);
282 proto.mutable_power_management()->set_login_screen_idle_action_ac(
283 em::PowerManagementProto_PowerManagementAction_ACTION_DO_NOTHING);
284 proto.mutable_power_management()->set_login_screen_idle_action_battery(
285 em::PowerManagementProto_PowerManagementAction_ACTION_DO_NOTHING);
286 proto.mutable_power_management()->set_login_screen_lid_close_action(
287 em::PowerManagementProto_PowerManagementAction_ACTION_DO_NOTHING);
288 proto.mutable_power_management()->
289 set_login_screen_user_activity_screen_dim_delay_scale(300);
290 RefreshDevicePolicyAndWaitForLoginProfileChanges();
291 EXPECT_EQ(GetDebugString(power_management_policy),
292 GetDebugString(power_manager_client_->get_policy()));
293 }
294
295 // Verifies that device policy is ignored during a session.
296 IN_PROC_BROWSER_TEST_F(PowerPolicyInSessionBrowserTest, SetDevicePolicy) {
85 pm::PowerManagementPolicy power_management_policy = 297 pm::PowerManagementPolicy power_management_policy =
86 original_power_management_policy; 298 power_manager_client_->get_policy();
299
300 em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
301 proto.mutable_power_management()->set_login_screen_screen_dim_delay_ac(5000);
302 proto.mutable_power_management()->set_login_screen_screen_off_delay_ac(7000);
303 proto.mutable_power_management()->set_login_screen_idle_delay_ac(9000);
304 proto.mutable_power_management()->set_login_screen_screen_dim_delay_battery(
305 1000);
306 proto.mutable_power_management()->set_login_screen_screen_off_delay_battery(
307 3000);
308 proto.mutable_power_management()->set_login_screen_idle_delay_battery(
309 4000);
310 proto.mutable_power_management()->set_login_screen_idle_action_ac(
311 em::PowerManagementProto_PowerManagementAction_ACTION_DO_NOTHING);
312 proto.mutable_power_management()->set_login_screen_idle_action_battery(
313 em::PowerManagementProto_PowerManagementAction_ACTION_DO_NOTHING);
314 proto.mutable_power_management()->set_login_screen_lid_close_action(
315 em::PowerManagementProto_PowerManagementAction_ACTION_DO_NOTHING);
316 proto.mutable_power_management()->
317 set_login_screen_user_activity_screen_dim_delay_scale(300);
318 RefreshDevicePolicyAndWaitForLoginProfileChanges();
319 EXPECT_EQ(GetDebugString(power_management_policy),
320 GetDebugString(power_manager_client_->get_policy()));
321 }
322
323 // Verifies that user policy is applied during a session.
324 IN_PROC_BROWSER_TEST_F(PowerPolicyInSessionBrowserTest, SetUserPolicy) {
325 pm::PowerManagementPolicy power_management_policy =
326 power_manager_client_->get_policy();
327 power_management_policy.mutable_ac_delays()->set_screen_dim_ms(5000);
328 power_management_policy.mutable_ac_delays()->set_screen_lock_ms(6000);
329 power_management_policy.mutable_ac_delays()->set_screen_off_ms(7000);
330 power_management_policy.mutable_ac_delays()->set_idle_warning_ms(8000);
331 power_management_policy.mutable_ac_delays()->set_idle_ms(9000);
332 power_management_policy.mutable_battery_delays()->set_screen_dim_ms(1000);
333 power_management_policy.mutable_battery_delays()->set_screen_lock_ms(2000);
334 power_management_policy.mutable_battery_delays()->set_screen_off_ms(3000);
335 power_management_policy.mutable_battery_delays()->set_idle_warning_ms(4000);
336 power_management_policy.mutable_battery_delays()->set_idle_ms(5000);
337 power_management_policy.set_use_audio_activity(false);
338 power_management_policy.set_use_video_activity(false);
87 power_management_policy.set_ac_idle_action( 339 power_management_policy.set_ac_idle_action(
88 pm::PowerManagementPolicy::STOP_SESSION); 340 pm::PowerManagementPolicy::STOP_SESSION);
89 SetUserPolicy( 341 power_management_policy.set_battery_idle_action(
90 key::kIdleActionAC, 342 pm::PowerManagementPolicy::STOP_SESSION);
91 base::Value::CreateIntegerValue(pm::PowerManagementPolicy::STOP_SESSION)); 343 power_management_policy.set_lid_closed_action(
344 pm::PowerManagementPolicy::STOP_SESSION);
345 power_management_policy.set_presentation_screen_dim_delay_factor(3.0);
346 power_management_policy.set_user_activity_screen_dim_delay_factor(3.0);
347
348 user_policy_.payload().mutable_screendimdelayac()->set_value(5000);
349 user_policy_.payload().mutable_screenlockdelayac()->set_value(6000);
350 user_policy_.payload().mutable_screenoffdelayac()->set_value(7000);
351 user_policy_.payload().mutable_idlewarningdelayac()->set_value(8000);
352 user_policy_.payload().mutable_idledelayac()->set_value(9000);
353 user_policy_.payload().mutable_screendimdelaybattery()->set_value(1000);
354 user_policy_.payload().mutable_screenlockdelaybattery()->set_value(2000);
355 user_policy_.payload().mutable_screenoffdelaybattery()->set_value(3000);
356 user_policy_.payload().mutable_idlewarningdelaybattery()->set_value(4000);
357 user_policy_.payload().mutable_idledelaybattery()->set_value(5000);
358 user_policy_.payload().mutable_powermanagementusesaudioactivity()->set_value(
359 false);
360 user_policy_.payload().mutable_powermanagementusesvideoactivity()->set_value(
361 false);
362 user_policy_.payload().mutable_idleactionac()->set_value(
363 chromeos::PowerPolicyController::ACTION_STOP_SESSION);
364 user_policy_.payload().mutable_idleactionbattery()->set_value(
365 chromeos::PowerPolicyController::ACTION_STOP_SESSION);
366 user_policy_.payload().mutable_lidcloseaction()->set_value(
367 chromeos::PowerPolicyController::ACTION_STOP_SESSION);
368 user_policy_.payload().mutable_presentationscreendimdelayscale()->set_value(
369 300);
370 user_policy_.payload().mutable_useractivityscreendimdelayscale()->set_value(
371 300);
372 RefreshUserPolicy();
92 EXPECT_EQ(GetDebugString(power_management_policy), 373 EXPECT_EQ(GetDebugString(power_management_policy),
93 GetDebugString(power_manager_client_->get_policy())); 374 GetDebugString(power_manager_client_->get_policy()));
94 375 }
95 power_management_policy = original_power_management_policy; 376
96 power_management_policy.set_battery_idle_action( 377 // Verifies that screen wake locks can be enabled and disabled by extensions and
97 pm::PowerManagementPolicy::STOP_SESSION); 378 // user policy during a session.
98 SetUserPolicy( 379 IN_PROC_BROWSER_TEST_F(PowerPolicyInSessionBrowserTest, AllowScreenWakeLocks) {
99 key::kIdleActionBattery,
100 base::Value::CreateIntegerValue(pm::PowerManagementPolicy::STOP_SESSION));
101 EXPECT_EQ(GetDebugString(power_management_policy),
102 GetDebugString(power_manager_client_->get_policy()));
103
104 power_management_policy = original_power_management_policy;
105 power_management_policy.set_lid_closed_action(
106 pm::PowerManagementPolicy::STOP_SESSION);
107 SetUserPolicy(
108 key::kLidCloseAction,
109 base::Value::CreateIntegerValue(pm::PowerManagementPolicy::STOP_SESSION));
110 EXPECT_EQ(GetDebugString(power_management_policy),
111 GetDebugString(power_manager_client_->get_policy()));
112
113 power_management_policy = original_power_management_policy;
114 power_management_policy.mutable_ac_delays()->set_idle_ms(9000);
115 SetUserPolicy(key::kIdleDelayAC, base::Value::CreateIntegerValue(9000));
116 EXPECT_EQ(GetDebugString(power_management_policy),
117 GetDebugString(power_manager_client_->get_policy()));
118
119 power_management_policy = original_power_management_policy;
120 power_management_policy.mutable_ac_delays()->set_idle_warning_ms(8000);
121 SetUserPolicy(key::kIdleWarningDelayAC,
122 base::Value::CreateIntegerValue(8000));
123 EXPECT_EQ(GetDebugString(power_management_policy),
124 GetDebugString(power_manager_client_->get_policy()));
125
126 power_management_policy = original_power_management_policy;
127 power_management_policy.mutable_ac_delays()->set_screen_off_ms(7000);
128 SetUserPolicy(key::kScreenOffDelayAC, base::Value::CreateIntegerValue(7000));
129 EXPECT_EQ(GetDebugString(power_management_policy),
130 GetDebugString(power_manager_client_->get_policy()));
131
132 power_management_policy = original_power_management_policy;
133 power_management_policy.mutable_ac_delays()->set_screen_dim_ms(5000);
134 SetUserPolicy(key::kScreenDimDelayAC, base::Value::CreateIntegerValue(5000));
135 EXPECT_EQ(GetDebugString(power_management_policy),
136 GetDebugString(power_manager_client_->get_policy()));
137
138 power_management_policy = original_power_management_policy;
139 power_management_policy.mutable_ac_delays()->set_screen_lock_ms(6000);
140 SetUserPolicy(key::kScreenLockDelayAC, base::Value::CreateIntegerValue(6000));
141 EXPECT_EQ(GetDebugString(power_management_policy),
142 GetDebugString(power_manager_client_->get_policy()));
143
144 power_management_policy = original_power_management_policy;
145 power_management_policy.mutable_battery_delays()->set_idle_ms(5000);
146 SetUserPolicy(key::kIdleDelayBattery, base::Value::CreateIntegerValue(5000));
147 EXPECT_EQ(GetDebugString(power_management_policy),
148 GetDebugString(power_manager_client_->get_policy()));
149
150 power_management_policy = original_power_management_policy;
151 power_management_policy.mutable_battery_delays()->set_idle_warning_ms(4000);
152 SetUserPolicy(key::kIdleWarningDelayBattery,
153 base::Value::CreateIntegerValue(4000));
154 EXPECT_EQ(GetDebugString(power_management_policy),
155 GetDebugString(power_manager_client_->get_policy()));
156
157 power_management_policy = original_power_management_policy;
158 power_management_policy.mutable_battery_delays()->set_screen_off_ms(3000);
159 SetUserPolicy(key::kScreenOffDelayBattery,
160 base::Value::CreateIntegerValue(3000));
161 EXPECT_EQ(GetDebugString(power_management_policy),
162 GetDebugString(power_manager_client_->get_policy()));
163
164 power_management_policy = original_power_management_policy;
165 power_management_policy.mutable_battery_delays()->set_screen_dim_ms(1000);
166 SetUserPolicy(key::kScreenDimDelayBattery,
167 base::Value::CreateIntegerValue(1000));
168 EXPECT_EQ(GetDebugString(power_management_policy),
169 GetDebugString(power_manager_client_->get_policy()));
170
171 power_management_policy = original_power_management_policy;
172 power_management_policy.mutable_battery_delays()->set_screen_lock_ms(2000);
173 SetUserPolicy(key::kScreenLockDelayBattery,
174 base::Value::CreateIntegerValue(2000));
175 EXPECT_EQ(GetDebugString(power_management_policy),
176 GetDebugString(power_manager_client_->get_policy()));
177
178 power_management_policy = original_power_management_policy;
179 power_management_policy.set_use_audio_activity(false);
180 SetUserPolicy(key::kPowerManagementUsesAudioActivity,
181 base::Value::CreateBooleanValue(false));
182 EXPECT_EQ(GetDebugString(power_management_policy),
183 GetDebugString(power_manager_client_->get_policy()));
184
185 power_management_policy = original_power_management_policy;
186 power_management_policy.set_use_video_activity(false);
187 SetUserPolicy(key::kPowerManagementUsesVideoActivity,
188 base::Value::CreateBooleanValue(false));
189 EXPECT_EQ(GetDebugString(power_management_policy),
190 GetDebugString(power_manager_client_->get_policy()));
191
192 power_management_policy = original_power_management_policy;
193 power_management_policy.set_presentation_screen_dim_delay_factor(3.0);
194 SetUserPolicy(key::kPresentationScreenDimDelayScale,
195 base::Value::CreateIntegerValue(300));
196 EXPECT_EQ(GetDebugString(power_management_policy),
197 GetDebugString(power_manager_client_->get_policy()));
198 }
199
200 IN_PROC_BROWSER_TEST_F(PowerPolicyBrowserTest, AllowScreenWakeLocks) {
201 pm::PowerManagementPolicy baseline_policy = 380 pm::PowerManagementPolicy baseline_policy =
202 power_manager_client_->get_policy(); 381 power_manager_client_->get_policy();
203 382
204 // Default settings should have delays. 383 // Default settings should have delays.
205 pm::PowerManagementPolicy power_management_policy = baseline_policy; 384 pm::PowerManagementPolicy power_management_policy = baseline_policy;
206 EXPECT_NE(0, baseline_policy.ac_delays().screen_dim_ms()); 385 EXPECT_NE(0, baseline_policy.ac_delays().screen_dim_ms());
207 EXPECT_NE(0, baseline_policy.ac_delays().screen_off_ms()); 386 EXPECT_NE(0, baseline_policy.ac_delays().screen_off_ms());
208 EXPECT_NE(0, baseline_policy.battery_delays().screen_dim_ms()); 387 EXPECT_NE(0, baseline_policy.battery_delays().screen_dim_ms());
209 EXPECT_NE(0, baseline_policy.battery_delays().screen_off_ms()); 388 EXPECT_NE(0, baseline_policy.battery_delays().screen_off_ms());
210 389
211 // Pretend an extension grabs a screen wake lock. 390 // Pretend an extension grabs a screen wake lock.
212 const char kExtensionId[] = "abcdefghijklmnopabcdefghijlkmnop"; 391 const char kExtensionId[] = "abcdefghijklmnopabcdefghijlkmnop";
213 extensions::PowerApiManager::GetInstance()->AddRequest( 392 extensions::PowerApiManager::GetInstance()->AddRequest(
214 kExtensionId, extensions::api::power::LEVEL_DISPLAY); 393 kExtensionId, extensions::api::power::LEVEL_DISPLAY);
215 base::RunLoop().RunUntilIdle(); 394 base::RunLoop().RunUntilIdle();
216 395
217 // Check that the lock is in effect (ignoring idle_action and reason). 396 // Check that the lock is in effect (ignoring ac_idle_action,
397 // battery_idle_action and reason).
218 pm::PowerManagementPolicy policy = baseline_policy; 398 pm::PowerManagementPolicy policy = baseline_policy;
219 policy.mutable_ac_delays()->set_screen_dim_ms(0); 399 policy.mutable_ac_delays()->set_screen_dim_ms(0);
220 policy.mutable_ac_delays()->set_screen_off_ms(0); 400 policy.mutable_ac_delays()->set_screen_off_ms(0);
221 policy.mutable_battery_delays()->set_screen_dim_ms(0); 401 policy.mutable_battery_delays()->set_screen_dim_ms(0);
222 policy.mutable_battery_delays()->set_screen_off_ms(0); 402 policy.mutable_battery_delays()->set_screen_off_ms(0);
223 policy.set_ac_idle_action( 403 policy.set_ac_idle_action(
224 power_manager_client_->get_policy().ac_idle_action()); 404 power_manager_client_->get_policy().ac_idle_action());
225 policy.set_battery_idle_action( 405 policy.set_battery_idle_action(
226 power_manager_client_->get_policy().battery_idle_action()); 406 power_manager_client_->get_policy().battery_idle_action());
227 policy.set_reason(power_manager_client_->get_policy().reason()); 407 policy.set_reason(power_manager_client_->get_policy().reason());
228 EXPECT_EQ(GetDebugString(policy), 408 EXPECT_EQ(GetDebugString(policy),
229 GetDebugString(power_manager_client_->get_policy())); 409 GetDebugString(power_manager_client_->get_policy()));
230 410
231 // Engage the policy and verify that the defaults take effect again. 411 // Engage the user policy and verify that the defaults take effect again.
232 SetUserPolicy(key::kAllowScreenWakeLocks, 412 user_policy_.payload().mutable_allowscreenwakelocks()->set_value(false);
233 base::Value::CreateBooleanValue(false)); 413 RefreshUserPolicy();
234 policy = baseline_policy; 414 policy = baseline_policy;
235 policy.set_ac_idle_action( 415 policy.set_ac_idle_action(
236 power_manager_client_->get_policy().ac_idle_action()); 416 power_manager_client_->get_policy().ac_idle_action());
237 policy.set_battery_idle_action( 417 policy.set_battery_idle_action(
238 power_manager_client_->get_policy().battery_idle_action()); 418 power_manager_client_->get_policy().battery_idle_action());
239 policy.set_reason(power_manager_client_->get_policy().reason()); 419 policy.set_reason(power_manager_client_->get_policy().reason());
240 EXPECT_EQ(GetDebugString(policy), 420 EXPECT_EQ(GetDebugString(policy),
241 GetDebugString(power_manager_client_->get_policy())); 421 GetDebugString(power_manager_client_->get_policy()));
242 } 422 }
243 423
244 } // namespace policy 424 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698