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

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

Issue 12189011: Split up chrome/browser/policy subdirectory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase, add chrome/browser/chromeos/policy/OWNERS Created 7 years, 9 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
« no previous file with comments | « chrome/browser/policy/policy_builder.cc ('k') | chrome/browser/policy/proxy_policy_provider.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include <string>
6
7 #include "base/compiler_specific.h"
8 #include "base/run_loop.h"
9 #include "base/values.h"
10 #include "chrome/browser/policy/browser_policy_connector.h"
11 #include "chrome/browser/policy/mock_configuration_policy_provider.h"
12 #include "chrome/browser/policy/policy_map.h"
13 #include "chrome/browser/policy/policy_types.h"
14 #include "chrome/test/base/in_process_browser_test.h"
15 #include "chromeos/dbus/dbus_thread_manager.h"
16 #include "chromeos/dbus/mock_dbus_thread_manager.h"
17 #include "chromeos/dbus/mock_power_manager_client.h"
18 #include "chromeos/dbus/mock_session_manager_client.h"
19 #include "chromeos/dbus/power_manager/policy.pb.h"
20 #include "policy/policy_constants.h"
21 #include "testing/gmock/include/gmock/gmock.h"
22
23 namespace policy {
24
25 namespace {
26
27 using ::testing::AnyNumber;
28 using ::testing::AtLeast;
29 using ::testing::Mock;
30 using ::testing::Return;
31 using ::testing::_;
32
33 namespace pm = power_manager;
34
35 MATCHER_P(PowerManagementPolicyMatches, expected_power_management_policy,
36 std::string(negation ? "matches" : "does not match") +
37 "the expected power management policy") {
38 // A power management policy without an |ac_delays| message is equivalent to
39 // a power management policy with an empty |ac_delays| message but their
40 // serializations are different. To simplify the equality check, ensure that
41 // the expected and actual power management policies both have an |ac_delays|
42 // message. The same applies to the |battery_delays| message.
43 pm::PowerManagementPolicy expected(expected_power_management_policy);
44 expected.mutable_ac_delays();
45 expected.mutable_battery_delays();
46 pm::PowerManagementPolicy actual(arg);
47 actual.mutable_ac_delays();
48 actual.mutable_battery_delays();
49 return actual.SerializeAsString() == expected.SerializeAsString();
50 }
51
52 } // namespace
53
54 class PowerPolicyBrowserTest : public InProcessBrowserTest {
55 protected:
56 // InProcessBrowserTest:
57 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE;
58
59 void SetUserPolicyAndVerifyPowerManagementPolicy(
60 const std::string& user_policy_name,
61 base::Value* user_policy_value,
62 const pm::PowerManagementPolicy& power_management_policy);
63
64 chromeos::MockPowerManagerClient* power_manager_client_;
65
66 private:
67 MockConfigurationPolicyProvider provider_;
68 };
69
70 void PowerPolicyBrowserTest::SetUpInProcessBrowserTestFixture() {
71 chromeos::MockDBusThreadManager* dbus_thread_manager =
72 new chromeos::MockDBusThreadManager;
73 chromeos::DBusThreadManager::InitializeForTesting(dbus_thread_manager);
74 EXPECT_CALL(*dbus_thread_manager->mock_session_manager_client(),
75 RetrieveUserPolicy(_));
76 power_manager_client_ = dbus_thread_manager->mock_power_manager_client();
77 EXPECT_CALL(provider_, IsInitializationComplete(_))
78 .WillRepeatedly(Return(true));
79 EXPECT_CALL(provider_, RegisterPolicyDomain(_, _)).Times(AnyNumber());
80 BrowserPolicyConnector::SetPolicyProviderForTesting(&provider_);
81 }
82
83 // Verify that setting |user_policy_name| to |user_policy_value| causes the
84 // updated |power_management_policy| to be sent to the power management backend.
85 void PowerPolicyBrowserTest::SetUserPolicyAndVerifyPowerManagementPolicy(
86 const std::string& user_policy_name,
87 base::Value* user_policy_value,
88 const pm::PowerManagementPolicy& power_management_policy) {
89 // Setting the user policy causes a notification which triggers an update to
90 // the backend. If other policies had been set before, they will get unset,
91 // causing additional notifications and triggering duplicate updates to the
92 // backend. Hence, expect one or more updates.
93 EXPECT_CALL(*power_manager_client_,
94 SetPolicy(PowerManagementPolicyMatches(power_management_policy)))
95 .Times(AtLeast(1));
96 PolicyMap policy_map;
97 policy_map.Set(user_policy_name, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
98 user_policy_value);
99 provider_.UpdateChromePolicy(policy_map);
100 base::RunLoop().RunUntilIdle();
101 Mock::VerifyAndClearExpectations(power_manager_client_);
102 }
103
104 IN_PROC_BROWSER_TEST_F(PowerPolicyBrowserTest, SetPowerPolicy) {
105 pm::PowerManagementPolicy power_management_policy;
106
107 power_management_policy.set_idle_action(
108 pm::PowerManagementPolicy::STOP_SESSION);
109 SetUserPolicyAndVerifyPowerManagementPolicy(
110 key::kIdleAction,
111 base::Value::CreateIntegerValue(pm::PowerManagementPolicy::STOP_SESSION),
112 power_management_policy);
113
114 power_management_policy.Clear();
115 power_management_policy.set_lid_closed_action(
116 pm::PowerManagementPolicy::STOP_SESSION);
117 SetUserPolicyAndVerifyPowerManagementPolicy(
118 key::kLidCloseAction,
119 base::Value::CreateIntegerValue(pm::PowerManagementPolicy::STOP_SESSION),
120 power_management_policy);
121
122 power_management_policy.Clear();
123 power_management_policy.mutable_ac_delays()->set_idle_ms(900000);
124 SetUserPolicyAndVerifyPowerManagementPolicy(
125 key::kIdleDelayAC,
126 base::Value::CreateIntegerValue(900000),
127 power_management_policy);
128
129 power_management_policy.Clear();
130 power_management_policy.mutable_ac_delays()->set_screen_off_ms(900000);
131 SetUserPolicyAndVerifyPowerManagementPolicy(
132 key::kScreenOffDelayAC,
133 base::Value::CreateIntegerValue(900000),
134 power_management_policy);
135
136 power_management_policy.Clear();
137 power_management_policy.mutable_ac_delays()->set_screen_dim_ms(900000);
138 SetUserPolicyAndVerifyPowerManagementPolicy(
139 key::kScreenDimDelayAC,
140 base::Value::CreateIntegerValue(900000),
141 power_management_policy);
142
143 power_management_policy.Clear();
144 power_management_policy.mutable_ac_delays()->set_screen_lock_ms(900000);
145 SetUserPolicyAndVerifyPowerManagementPolicy(
146 key::kScreenLockDelayAC,
147 base::Value::CreateIntegerValue(900000),
148 power_management_policy);
149
150 power_management_policy.Clear();
151 power_management_policy.mutable_battery_delays()->set_idle_ms(900000);
152 SetUserPolicyAndVerifyPowerManagementPolicy(
153 key::kIdleDelayBattery,
154 base::Value::CreateIntegerValue(900000),
155 power_management_policy);
156
157 power_management_policy.Clear();
158 power_management_policy.mutable_battery_delays()->set_screen_off_ms(900000);
159 SetUserPolicyAndVerifyPowerManagementPolicy(
160 key::kScreenOffDelayBattery,
161 base::Value::CreateIntegerValue(900000),
162 power_management_policy);
163
164 power_management_policy.Clear();
165 power_management_policy.mutable_battery_delays()->set_screen_dim_ms(900000);
166 SetUserPolicyAndVerifyPowerManagementPolicy(
167 key::kScreenDimDelayBattery,
168 base::Value::CreateIntegerValue(900000),
169 power_management_policy);
170
171 power_management_policy.Clear();
172 power_management_policy.mutable_battery_delays()->set_screen_lock_ms(900000);
173 SetUserPolicyAndVerifyPowerManagementPolicy(
174 key::kScreenLockDelayBattery,
175 base::Value::CreateIntegerValue(900000),
176 power_management_policy);
177
178 power_management_policy.Clear();
179 power_management_policy.set_use_audio_activity(false);
180 SetUserPolicyAndVerifyPowerManagementPolicy(
181 key::kPowerManagementUsesAudioActivity,
182 base::Value::CreateBooleanValue(false),
183 power_management_policy);
184
185 power_management_policy.Clear();
186 power_management_policy.set_use_video_activity(false);
187 SetUserPolicyAndVerifyPowerManagementPolicy(
188 key::kPowerManagementUsesVideoActivity,
189 base::Value::CreateBooleanValue(false),
190 power_management_policy);
191
192 power_management_policy.Clear();
193 power_management_policy.set_presentation_idle_delay_factor(3.0);
194 SetUserPolicyAndVerifyPowerManagementPolicy(
195 key::kPresentationIdleDelayScale,
196 base::Value::CreateIntegerValue(300),
197 power_management_policy);
198
199 // During teardown, an empty power management policy should be sent to the
200 // backend.
201 power_management_policy.Clear();
202 EXPECT_CALL(*power_manager_client_, SetPolicy(
203 PowerManagementPolicyMatches(power_management_policy)));
204 EXPECT_CALL(*power_manager_client_, RemoveObserver(_)).Times(AnyNumber());
205 }
206
207 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/policy_builder.cc ('k') | chrome/browser/policy/proxy_policy_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698