1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/chromeos/policy/login_screen_power_management_policy.h"
7 #include "chrome/browser/policy/policy_error_map.h"
8 #include "chromeos/dbus/power_policy_controller.h"
9 #include "policy/policy_constants.h"
10 #include "testing/gtest/include/gtest/gtest.h"
16 const char kLoginScreenPowerManagementPolicy[] =
20 " \"ScreenDim\": 5000,"
21 " \"ScreenOff\": 7000,"
24 " \"IdleAction\": \"DoNothing\""
28 " \"ScreenDim\": 1000,"
29 " \"ScreenOff\": 3000,"
32 " \"IdleAction\": \"DoNothing\""
34 " \"LidCloseAction\": \"DoNothing\","
35 " \"UserActivityScreenDimDelayScale\": 300"
40 TEST(LoginScreenPowerManagementPolicyTest, InvalidJSON) {
41 PolicyErrorMap errors;
42 LoginScreenPowerManagementPolicy policy;
43 EXPECT_FALSE(policy.Init("Invalid JSON!", &errors));
45 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
46 EXPECT_FALSE(policy.GetScreenDimDelayAC());
47 EXPECT_FALSE(policy.GetScreenOffDelayAC());
48 EXPECT_FALSE(policy.GetIdleDelayAC());
49 EXPECT_FALSE(policy.GetScreenDimDelayBattery());
50 EXPECT_FALSE(policy.GetScreenOffDelayBattery());
51 EXPECT_FALSE(policy.GetIdleDelayBattery());
52 EXPECT_FALSE(policy.GetIdleActionAC());
53 EXPECT_FALSE(policy.GetIdleActionBattery());
54 EXPECT_FALSE(policy.GetLidCloseAction());
55 EXPECT_FALSE(policy.GetUserActivityScreenDimDelayScale());
58 TEST(LoginScreenPowerManagementPolicyTest, InitInvalidValues) {
59 PolicyErrorMap errors;
60 scoped_ptr<LoginScreenPowerManagementPolicy> policy;
61 policy.reset(new LoginScreenPowerManagementPolicy);
62 EXPECT_TRUE(policy->Init("{ \"AC\": { \"Delays\": { \"ScreenDim\": -1 } } }",
65 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
67 EXPECT_FALSE(policy->GetScreenDimDelayAC());
70 policy.reset(new LoginScreenPowerManagementPolicy);
71 EXPECT_TRUE(policy->Init("{ \"AC\": { \"Delays\": { \"ScreenOff\": -1 } } }",
74 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
76 EXPECT_FALSE(policy->GetScreenOffDelayAC());
79 policy.reset(new LoginScreenPowerManagementPolicy);
80 EXPECT_TRUE(policy->Init("{ \"AC\": { \"Delays\": { \"Idle\": -1 } } }",
83 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
85 EXPECT_FALSE(policy->GetIdleDelayAC());
88 policy.reset(new LoginScreenPowerManagementPolicy);
89 EXPECT_TRUE(policy->Init(
90 "{ \"Battery\": { \"Delays\": { \"ScreenDim\": -1 } } }", &errors));
92 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
94 EXPECT_FALSE(policy->GetScreenDimDelayBattery());
96 policy.reset(new LoginScreenPowerManagementPolicy);
97 EXPECT_TRUE(policy->Init(
98 "{ \"Battery\": { \"Delays\": { \"ScreenOff\": -1 } } }", &errors));
100 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
102 EXPECT_FALSE(policy->GetScreenOffDelayBattery());
105 policy.reset(new LoginScreenPowerManagementPolicy);
106 EXPECT_TRUE(policy->Init("{ \"Battery\": { \"Delays\": { \"Idle\": -1 } } }",
109 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
111 EXPECT_FALSE(policy->GetIdleDelayBattery());
114 EXPECT_TRUE(policy->Init("{ \"AC\": { \"IdleAction\": \"SignOut\" } }",
117 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
118 EXPECT_FALSE(policy->GetIdleActionAC());
121 policy.reset(new LoginScreenPowerManagementPolicy);
122 EXPECT_TRUE(policy->Init("{ \"Battery\": { \"IdleAction\": \"SignOut\" } }",
125 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
127 EXPECT_FALSE(policy->GetIdleActionBattery());
130 policy.reset(new LoginScreenPowerManagementPolicy);
131 EXPECT_TRUE(policy->Init("{ \"LidCloseAction\": \"SignOut\" }", &errors));
133 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
135 EXPECT_FALSE(policy->GetLidCloseAction());
138 policy.reset(new LoginScreenPowerManagementPolicy);
139 EXPECT_TRUE(policy->Init("{ \"UserActivityScreenDimDelayScale\": 50 }",
142 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
144 EXPECT_FALSE(policy->GetUserActivityScreenDimDelayScale());
147 TEST(LoginScreenPowerManagementPolicyTest, ValidJSON) {
148 PolicyErrorMap errors;
149 LoginScreenPowerManagementPolicy policy;
150 EXPECT_TRUE(policy.Init(kLoginScreenPowerManagementPolicy, &errors));
152 errors.GetErrors(key::kDeviceLoginScreenPowerManagement).empty());
153 ASSERT_TRUE(policy.GetScreenDimDelayAC());
154 EXPECT_TRUE(base::FundamentalValue(5000).Equals(
155 policy.GetScreenDimDelayAC()));
156 ASSERT_TRUE(policy.GetScreenOffDelayAC());
157 EXPECT_TRUE(base::FundamentalValue(7000).Equals(
158 policy.GetScreenOffDelayAC()));
159 ASSERT_TRUE(policy.GetIdleDelayAC());
160 EXPECT_TRUE(base::FundamentalValue(9000).Equals(policy.GetIdleDelayAC()));
161 ASSERT_TRUE(policy.GetScreenDimDelayBattery());
162 EXPECT_TRUE(base::FundamentalValue(1000).Equals(
163 policy.GetScreenDimDelayBattery()));
164 ASSERT_TRUE(policy.GetScreenOffDelayBattery());
165 EXPECT_TRUE(base::FundamentalValue(3000).Equals(
166 policy.GetScreenOffDelayBattery()));
167 ASSERT_TRUE(policy.GetIdleDelayBattery());
168 EXPECT_TRUE(base::FundamentalValue(4000).Equals(
169 policy.GetIdleDelayBattery()));
170 ASSERT_TRUE(policy.GetIdleActionAC());
171 EXPECT_TRUE(base::FundamentalValue(
172 chromeos::PowerPolicyController::ACTION_DO_NOTHING).Equals(
173 policy.GetIdleActionAC()));
174 ASSERT_TRUE(policy.GetIdleActionBattery());
175 EXPECT_TRUE(base::FundamentalValue(
176 chromeos::PowerPolicyController::ACTION_DO_NOTHING).Equals(
177 policy.GetIdleActionBattery()));
178 ASSERT_TRUE(policy.GetLidCloseAction());
179 EXPECT_TRUE(base::FundamentalValue(
180 chromeos::PowerPolicyController::ACTION_DO_NOTHING).Equals(
181 policy.GetLidCloseAction()));
182 ASSERT_TRUE(policy.GetUserActivityScreenDimDelayScale());
183 EXPECT_TRUE(base::FundamentalValue(300).Equals(
184 policy.GetUserActivityScreenDimDelayScale()));
187 } // namespace policy