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