OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <memory> | 5 #include <memory> |
6 #include <utility> | 6 #include <utility> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>("abc"), | 137 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>("abc"), |
138 nullptr); | 138 nullptr); |
139 policy.Set(key::kProxyServer, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 139 policy.Set(key::kProxyServer, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
140 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>("ghi"), | 140 POLICY_SOURCE_CLOUD, base::MakeUnique<base::Value>("ghi"), |
141 nullptr); | 141 nullptr); |
142 provider_.UpdateChromePolicy(policy); | 142 provider_.UpdateChromePolicy(policy); |
143 | 143 |
144 // First verify that command-line options are set correctly when | 144 // First verify that command-line options are set correctly when |
145 // there is no policy in effect. | 145 // there is no policy in effect. |
146 std::unique_ptr<PrefService> prefs(CreatePrefService(false)); | 146 std::unique_ptr<PrefService> prefs(CreatePrefService(false)); |
147 ProxyConfigDictionary dict(prefs->GetDictionary(proxy_config::prefs::kProxy)); | 147 ProxyConfigDictionary dict( |
| 148 prefs->GetDictionary(proxy_config::prefs::kProxy)->CreateDeepCopy()); |
148 assertProxyMode(dict, ProxyPrefs::MODE_FIXED_SERVERS); | 149 assertProxyMode(dict, ProxyPrefs::MODE_FIXED_SERVERS); |
149 assertProxyServer(dict, "789"); | 150 assertProxyServer(dict, "789"); |
150 assertPacUrl(dict, std::string()); | 151 assertPacUrl(dict, std::string()); |
151 assertBypassList(dict, "123"); | 152 assertBypassList(dict, "123"); |
152 | 153 |
153 // Try a second time time with the managed PrefStore in place, the | 154 // Try a second time time with the managed PrefStore in place, the |
154 // manual proxy policy should have removed all traces of the command | 155 // manual proxy policy should have removed all traces of the command |
155 // line and replaced them with the policy versions. | 156 // line and replaced them with the policy versions. |
156 prefs = CreatePrefService(true); | 157 prefs = CreatePrefService(true); |
157 ProxyConfigDictionary dict2( | 158 ProxyConfigDictionary dict2( |
158 prefs->GetDictionary(proxy_config::prefs::kProxy)); | 159 prefs->GetDictionary(proxy_config::prefs::kProxy)->CreateDeepCopy()); |
159 assertProxyMode(dict2, ProxyPrefs::MODE_FIXED_SERVERS); | 160 assertProxyMode(dict2, ProxyPrefs::MODE_FIXED_SERVERS); |
160 assertProxyServer(dict2, "ghi"); | 161 assertProxyServer(dict2, "ghi"); |
161 assertPacUrl(dict2, std::string()); | 162 assertPacUrl(dict2, std::string()); |
162 assertBypassList(dict2, "abc"); | 163 assertBypassList(dict2, "abc"); |
163 } | 164 } |
164 | 165 |
165 TEST_F(ProxyPolicyTest, OverridesUnrelatedCommandLineOptions) { | 166 TEST_F(ProxyPolicyTest, OverridesUnrelatedCommandLineOptions) { |
166 command_line_.AppendSwitchASCII(switches::kProxyBypassList, "123"); | 167 command_line_.AppendSwitchASCII(switches::kProxyBypassList, "123"); |
167 command_line_.AppendSwitchASCII(switches::kProxyServer, "789"); | 168 command_line_.AppendSwitchASCII(switches::kProxyServer, "789"); |
168 std::unique_ptr<base::Value> mode_name( | 169 std::unique_ptr<base::Value> mode_name( |
169 new base::Value(ProxyPrefs::kAutoDetectProxyModeName)); | 170 new base::Value(ProxyPrefs::kAutoDetectProxyModeName)); |
170 PolicyMap policy; | 171 PolicyMap policy; |
171 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 172 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
172 POLICY_SOURCE_CLOUD, std::move(mode_name), nullptr); | 173 POLICY_SOURCE_CLOUD, std::move(mode_name), nullptr); |
173 provider_.UpdateChromePolicy(policy); | 174 provider_.UpdateChromePolicy(policy); |
174 | 175 |
175 // First verify that command-line options are set correctly when | 176 // First verify that command-line options are set correctly when |
176 // there is no policy in effect. | 177 // there is no policy in effect. |
177 std::unique_ptr<PrefService> prefs = CreatePrefService(false); | 178 std::unique_ptr<PrefService> prefs = CreatePrefService(false); |
178 ProxyConfigDictionary dict(prefs->GetDictionary(proxy_config::prefs::kProxy)); | 179 ProxyConfigDictionary dict( |
| 180 prefs->GetDictionary(proxy_config::prefs::kProxy)->CreateDeepCopy()); |
179 assertProxyMode(dict, ProxyPrefs::MODE_FIXED_SERVERS); | 181 assertProxyMode(dict, ProxyPrefs::MODE_FIXED_SERVERS); |
180 assertProxyServer(dict, "789"); | 182 assertProxyServer(dict, "789"); |
181 assertPacUrl(dict, std::string()); | 183 assertPacUrl(dict, std::string()); |
182 assertBypassList(dict, "123"); | 184 assertBypassList(dict, "123"); |
183 | 185 |
184 // Try a second time time with the managed PrefStore in place, the | 186 // Try a second time time with the managed PrefStore in place, the |
185 // no proxy policy should have removed all traces of the command | 187 // no proxy policy should have removed all traces of the command |
186 // line proxy settings, even though they were not the specific one | 188 // line proxy settings, even though they were not the specific one |
187 // set in policy. | 189 // set in policy. |
188 prefs = CreatePrefService(true); | 190 prefs = CreatePrefService(true); |
189 ProxyConfigDictionary dict2( | 191 ProxyConfigDictionary dict2( |
190 prefs->GetDictionary(proxy_config::prefs::kProxy)); | 192 prefs->GetDictionary(proxy_config::prefs::kProxy)->CreateDeepCopy()); |
191 assertProxyModeWithoutParams(dict2, ProxyPrefs::MODE_AUTO_DETECT); | 193 assertProxyModeWithoutParams(dict2, ProxyPrefs::MODE_AUTO_DETECT); |
192 } | 194 } |
193 | 195 |
194 TEST_F(ProxyPolicyTest, OverridesCommandLineNoProxy) { | 196 TEST_F(ProxyPolicyTest, OverridesCommandLineNoProxy) { |
195 command_line_.AppendSwitch(switches::kNoProxyServer); | 197 command_line_.AppendSwitch(switches::kNoProxyServer); |
196 std::unique_ptr<base::Value> mode_name( | 198 std::unique_ptr<base::Value> mode_name( |
197 new base::Value(ProxyPrefs::kAutoDetectProxyModeName)); | 199 new base::Value(ProxyPrefs::kAutoDetectProxyModeName)); |
198 PolicyMap policy; | 200 PolicyMap policy; |
199 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 201 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
200 POLICY_SOURCE_CLOUD, std::move(mode_name), nullptr); | 202 POLICY_SOURCE_CLOUD, std::move(mode_name), nullptr); |
201 provider_.UpdateChromePolicy(policy); | 203 provider_.UpdateChromePolicy(policy); |
202 | 204 |
203 // First verify that command-line options are set correctly when | 205 // First verify that command-line options are set correctly when |
204 // there is no policy in effect. | 206 // there is no policy in effect. |
205 std::unique_ptr<PrefService> prefs = CreatePrefService(false); | 207 std::unique_ptr<PrefService> prefs = CreatePrefService(false); |
206 ProxyConfigDictionary dict(prefs->GetDictionary(proxy_config::prefs::kProxy)); | 208 ProxyConfigDictionary dict( |
| 209 prefs->GetDictionary(proxy_config::prefs::kProxy)->CreateDeepCopy()); |
207 assertProxyModeWithoutParams(dict, ProxyPrefs::MODE_DIRECT); | 210 assertProxyModeWithoutParams(dict, ProxyPrefs::MODE_DIRECT); |
208 | 211 |
209 // Try a second time time with the managed PrefStore in place, the | 212 // Try a second time time with the managed PrefStore in place, the |
210 // auto-detect should be overridden. The default pref store must be | 213 // auto-detect should be overridden. The default pref store must be |
211 // in place with the appropriate default value for this to work. | 214 // in place with the appropriate default value for this to work. |
212 prefs = CreatePrefService(true); | 215 prefs = CreatePrefService(true); |
213 ProxyConfigDictionary dict2( | 216 ProxyConfigDictionary dict2( |
214 prefs->GetDictionary(proxy_config::prefs::kProxy)); | 217 prefs->GetDictionary(proxy_config::prefs::kProxy)->CreateDeepCopy()); |
215 assertProxyModeWithoutParams(dict2, ProxyPrefs::MODE_AUTO_DETECT); | 218 assertProxyModeWithoutParams(dict2, ProxyPrefs::MODE_AUTO_DETECT); |
216 } | 219 } |
217 | 220 |
218 TEST_F(ProxyPolicyTest, OverridesCommandLineAutoDetect) { | 221 TEST_F(ProxyPolicyTest, OverridesCommandLineAutoDetect) { |
219 command_line_.AppendSwitch(switches::kProxyAutoDetect); | 222 command_line_.AppendSwitch(switches::kProxyAutoDetect); |
220 std::unique_ptr<base::Value> mode_name( | 223 std::unique_ptr<base::Value> mode_name( |
221 new base::Value(ProxyPrefs::kDirectProxyModeName)); | 224 new base::Value(ProxyPrefs::kDirectProxyModeName)); |
222 PolicyMap policy; | 225 PolicyMap policy; |
223 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, | 226 policy.Set(key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
224 POLICY_SOURCE_CLOUD, std::move(mode_name), nullptr); | 227 POLICY_SOURCE_CLOUD, std::move(mode_name), nullptr); |
225 provider_.UpdateChromePolicy(policy); | 228 provider_.UpdateChromePolicy(policy); |
226 | 229 |
227 // First verify that the auto-detect is set if there is no managed | 230 // First verify that the auto-detect is set if there is no managed |
228 // PrefStore. | 231 // PrefStore. |
229 std::unique_ptr<PrefService> prefs = CreatePrefService(false); | 232 std::unique_ptr<PrefService> prefs = CreatePrefService(false); |
230 ProxyConfigDictionary dict(prefs->GetDictionary(proxy_config::prefs::kProxy)); | 233 ProxyConfigDictionary dict( |
| 234 prefs->GetDictionary(proxy_config::prefs::kProxy)->CreateDeepCopy()); |
231 assertProxyModeWithoutParams(dict, ProxyPrefs::MODE_AUTO_DETECT); | 235 assertProxyModeWithoutParams(dict, ProxyPrefs::MODE_AUTO_DETECT); |
232 | 236 |
233 // Try a second time time with the managed PrefStore in place, the | 237 // Try a second time time with the managed PrefStore in place, the |
234 // auto-detect should be overridden. The default pref store must be | 238 // auto-detect should be overridden. The default pref store must be |
235 // in place with the appropriate default value for this to work. | 239 // in place with the appropriate default value for this to work. |
236 prefs = CreatePrefService(true); | 240 prefs = CreatePrefService(true); |
237 ProxyConfigDictionary dict2( | 241 ProxyConfigDictionary dict2( |
238 prefs->GetDictionary(proxy_config::prefs::kProxy)); | 242 prefs->GetDictionary(proxy_config::prefs::kProxy)->CreateDeepCopy()); |
239 assertProxyModeWithoutParams(dict2, ProxyPrefs::MODE_DIRECT); | 243 assertProxyModeWithoutParams(dict2, ProxyPrefs::MODE_DIRECT); |
240 } | 244 } |
241 | 245 |
242 } // namespace policy | 246 } // namespace policy |
OLD | NEW |