| 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 | 
|---|