power_policy_browsertest.cc revision a93a17c8d99d686bd4a1511e5504e5e6cc9fcadf
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/run_loop.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/api/power/power_api_manager.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/policy/browser_policy_connector.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/policy/mock_configuration_policy_provider.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/policy/policy_map.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/policy/policy_types.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/extensions/api/power.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/fake_power_manager_client.h" 19a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "chromeos/dbus/mock_dbus_thread_manager_without_gmock.h" 2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chromeos/dbus/power_manager/policy.pb.h" 217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chromeos/dbus/power_policy_controller.h" 227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "policy/policy_constants.h" 23868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace policy { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::AnyNumber; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::Return; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::_; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace pm = power_manager; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PowerPolicyBrowserTest : public InProcessBrowserTest { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // InProcessBrowserTest: 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets |user_policy_name| to |user_policy_value|. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUserPolicy(const std::string& user_policy_name, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Value* user_policy_value); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns a string describing |policy|. 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string GetDebugString(const pm::PowerManagementPolicy& policy); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chromeos::FakePowerManagerClient* power_manager_client_; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockConfigurationPolicyProvider provider_; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PowerPolicyBrowserTest::SetUpInProcessBrowserTestFixture() { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chromeos::MockDBusThreadManagerWithoutGMock* dbus_thread_manager = 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new chromeos::MockDBusThreadManagerWithoutGMock; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_manager_client_ = dbus_thread_manager->fake_power_manager_client(); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chromeos::DBusThreadManager::InitializeForTesting(dbus_thread_manager); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(provider_, IsInitializationComplete(_)) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillRepeatedly(Return(true)); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(provider_, RegisterPolicyDomain(_, _)).Times(AnyNumber()); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserPolicyConnector::SetPolicyProviderForTesting(&provider_); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PowerPolicyBrowserTest::SetUserPolicy( 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& user_policy_name, 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Value* user_policy_value) { 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PolicyMap policy_map; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) policy_map.Set(user_policy_name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_policy_value); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) provider_.UpdateChromePolicy(policy_map); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::RunLoop().RunUntilIdle(); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string PowerPolicyBrowserTest::GetDebugString( 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const pm::PowerManagementPolicy& policy) { 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return chromeos::PowerPolicyController::GetPolicyDebugString(policy); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(PowerPolicyBrowserTest, SetPowerPolicy) { 82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) pm::PowerManagementPolicy original_power_management_policy = 83a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) power_manager_client_->get_policy(); 84a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) pm::PowerManagementPolicy power_management_policy = 86a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) original_power_management_policy; 87a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) power_management_policy.set_idle_action( 88a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) pm::PowerManagementPolicy::STOP_SESSION); 89a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SetUserPolicy( 90a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) key::kIdleAction, 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Value::CreateIntegerValue(pm::PowerManagementPolicy::STOP_SESSION)); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy.set_lid_closed_action( 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pm::PowerManagementPolicy::STOP_SESSION); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy( 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) key::kLidCloseAction, 1003551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) base::Value::CreateIntegerValue(pm::PowerManagementPolicy::STOP_SESSION)); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy.mutable_ac_delays()->set_idle_ms(9000); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kIdleDelayAC, base::Value::CreateIntegerValue(9000)); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy.mutable_ac_delays()->set_idle_warning_ms(8000); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kIdleWarningDelayAC, 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Value::CreateIntegerValue(8000)); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy.mutable_ac_delays()->set_screen_off_ms(7000); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kScreenOffDelayAC, base::Value::CreateIntegerValue(7000)); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy.mutable_ac_delays()->set_screen_dim_ms(5000); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kScreenDimDelayAC, base::Value::CreateIntegerValue(5000)); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy.mutable_ac_delays()->set_screen_lock_ms(6000); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kScreenLockDelayAC, base::Value::CreateIntegerValue(6000)); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) power_management_policy.mutable_battery_delays()->set_idle_ms(5000); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kIdleDelayBattery, base::Value::CreateIntegerValue(5000)); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy.mutable_battery_delays()->set_idle_warning_ms(4000); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kIdleWarningDelayBattery, 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Value::CreateIntegerValue(4000)); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy.mutable_battery_delays()->set_screen_off_ms(3000); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kScreenOffDelayBattery, 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Value::CreateIntegerValue(3000)); 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy.mutable_battery_delays()->set_screen_dim_ms(1000); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kScreenDimDelayBattery, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Value::CreateIntegerValue(1000)); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy.mutable_battery_delays()->set_screen_lock_ms(2000); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kScreenLockDelayBattery, 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Value::CreateIntegerValue(2000)); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy.set_use_audio_activity(false); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kPowerManagementUsesAudioActivity, 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Value::CreateBooleanValue(false)); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy = original_power_management_policy; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_management_policy.set_use_video_activity(false); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kPowerManagementUsesVideoActivity, 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Value::CreateBooleanValue(false)); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) power_management_policy = original_power_management_policy; 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) power_management_policy.set_presentation_idle_delay_factor(3.0); 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUserPolicy(key::kPresentationIdleDelayScale, 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Value::CreateIntegerValue(300)); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(power_management_policy), 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(PowerPolicyBrowserTest, AllowScreenWakeLocks) { 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pm::PowerManagementPolicy baseline_policy = 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) power_manager_client_->get_policy(); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Default settings should have delays. 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pm::PowerManagementPolicy power_management_policy = baseline_policy; 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(0, baseline_policy.ac_delays().screen_dim_ms()); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(0, baseline_policy.ac_delays().screen_off_ms()); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(0, baseline_policy.battery_delays().screen_dim_ms()); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(0, baseline_policy.battery_delays().screen_off_ms()); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Pretend an extension grabs a screen wake lock. 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char kExtensionId[] = "abcdefghijklmnopabcdefghijlkmnop"; 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions::PowerApiManager::GetInstance()->AddRequest( 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kExtensionId, extensions::api::power::LEVEL_DISPLAY); 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::RunLoop().RunUntilIdle(); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check that the lock is in effect (ignoring idle_action and reason). 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pm::PowerManagementPolicy policy = baseline_policy; 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) policy.mutable_ac_delays()->set_screen_dim_ms(0); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) policy.mutable_ac_delays()->set_screen_off_ms(0); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) policy.mutable_battery_delays()->set_screen_dim_ms(0); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) policy.mutable_battery_delays()->set_screen_off_ms(0); 2147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch policy.set_idle_action(power_manager_client_->get_policy().idle_action()); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) policy.set_reason(power_manager_client_->get_policy().reason()); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(policy), 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Engage the policy and verify that the defaults take effect again. 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserPolicy(key::kAllowScreenWakeLocks, 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Value::CreateBooleanValue(false)); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) policy = baseline_policy; 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) policy.set_idle_action(power_manager_client_->get_policy().idle_action()); 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) policy.set_reason(power_manager_client_->get_policy().reason()); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetDebugString(policy), 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDebugString(power_manager_client_->get_policy())); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace policy 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)