diff options
author | pam@chromium.org <pam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-10 08:25:42 +0000 |
---|---|---|
committer | pam@chromium.org <pam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-10 08:25:42 +0000 |
commit | f83ccffe272a19dfa91457b6592de40347e8499b (patch) | |
tree | 9214cb2139795a94ad8c775506d6ffd601b79e30 /chrome/browser/extensions/extension_proxy_apitest.cc | |
parent | d3462a49e49e6b1973ae9901a438fcb866f3099a (diff) | |
download | chromium_src-f83ccffe272a19dfa91457b6592de40347e8499b.zip chromium_src-f83ccffe272a19dfa91457b6592de40347e8499b.tar.gz chromium_src-f83ccffe272a19dfa91457b6592de40347e8499b.tar.bz2 |
Add support for PAC scripts (URL only, no direct data yet) and proxy auto-config to the proxy extension API.
BUG=48930
TEST=covered by browser_tests ExtensionAPITest.Proxy*
Review URL: http://codereview.chromium.org/3348014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59073 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_proxy_apitest.cc')
-rw-r--r-- | chrome/browser/extensions/extension_proxy_apitest.cc | 73 |
1 files changed, 67 insertions, 6 deletions
diff --git a/chrome/browser/extensions/extension_proxy_apitest.cc b/chrome/browser/extensions/extension_proxy_apitest.cc index c315bf2..9c127ad 100644 --- a/chrome/browser/extensions/extension_proxy_apitest.cc +++ b/chrome/browser/extensions/extension_proxy_apitest.cc @@ -10,8 +10,38 @@ #include "chrome/common/extensions/extension.h" #include "chrome/common/pref_names.h" +// Tests auto-detect and PAC proxy settings. +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyAutoSettings) { + CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kEnableExperimentalExtensionApis); + + ASSERT_TRUE(RunExtensionTest("proxy/auto")) << message_; + Extension* extension = GetSingleLoadedExtension(); + ASSERT_TRUE(extension); + + PrefService* pref_service = browser()->profile()->GetPrefs(); + + const PrefService::Preference* pref = + pref_service->FindPreference(prefs::kProxyAutoDetect); + ASSERT_TRUE(pref != NULL); + ASSERT_TRUE(pref->IsExtensionControlled()); + bool auto_detect = pref_service->GetBoolean(prefs::kProxyAutoDetect); + EXPECT_TRUE(auto_detect); + + pref = pref_service->FindPreference(prefs::kProxyPacUrl); + ASSERT_TRUE(pref != NULL); + ASSERT_TRUE(pref->IsExtensionControlled()); + std::string pac_url = pref_service->GetString(prefs::kProxyPacUrl); + EXPECT_EQ("http://wpad/windows.pac", pac_url); + + // No manual proxy prefs were set. + pref = pref_service->FindPreference(prefs::kProxyServer); + ASSERT_TRUE(pref != NULL); + EXPECT_TRUE(pref->IsDefaultValue()); +} + // Tests setting a single proxy to cover all schemes. -IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxySingle) { +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyManualSingle) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); @@ -22,16 +52,31 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxySingle) { PrefService* pref_service = browser()->profile()->GetPrefs(); // There should be no values superseding the extension-set proxy in this test. + const PrefService::Preference* pref = + pref_service->FindPreference(prefs::kProxyServer); + ASSERT_TRUE(pref != NULL); + ASSERT_TRUE(pref->IsExtensionControlled()); std::string proxy_server = pref_service->GetString(prefs::kProxyServer); - - ASSERT_EQ("http=http://127.0.0.1:100;" + EXPECT_EQ("http=http://127.0.0.1:100;" "https=http://127.0.0.1:100;" "ftp=http://127.0.0.1:100;" "socks=http://9.9.9.9", proxy_server); + + // Other proxy prefs should also be set, so they're all controlled from one + // place. + pref = pref_service->FindPreference(prefs::kProxyAutoDetect); + ASSERT_TRUE(pref != NULL); + EXPECT_TRUE(pref->IsExtensionControlled()); + EXPECT_FALSE(pref_service->GetBoolean(prefs::kProxyAutoDetect)); + + pref = pref_service->FindPreference(prefs::kProxyPacUrl); + ASSERT_TRUE(pref != NULL); + EXPECT_TRUE(pref->IsExtensionControlled()); + EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl)); } // Tests setting separate proxies for each scheme. -IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyIndividual) { +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyManualIndividual) { CommandLine::ForCurrentProcess()->AppendSwitch( switches::kEnableExperimentalExtensionApis); @@ -42,10 +87,26 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyIndividual) { PrefService* pref_service = browser()->profile()->GetPrefs(); // There should be no values superseding the extension-set proxy in this test. - std::string proxy_server = pref_service->GetString(prefs::kProxyServer); + const PrefService::Preference* pref = + pref_service->FindPreference(prefs::kProxyServer); + ASSERT_TRUE(pref != NULL); + ASSERT_TRUE(pref->IsExtensionControlled()); - ASSERT_EQ("http=http://1.1.1.1;" + std::string proxy_server = pref_service->GetString(prefs::kProxyServer); + EXPECT_EQ("http=http://1.1.1.1;" "https=socks://2.2.2.2;" "ftp=http://3.3.3.3:9000;" "socks=socks4://4.4.4.4:9090", proxy_server); + + // Other proxy prefs should also be set, so they're all controlled from one + // place. + pref = pref_service->FindPreference(prefs::kProxyAutoDetect); + ASSERT_TRUE(pref != NULL); + EXPECT_TRUE(pref->IsExtensionControlled()); + EXPECT_FALSE(pref_service->GetBoolean(prefs::kProxyAutoDetect)); + + pref = pref_service->FindPreference(prefs::kProxyPacUrl); + ASSERT_TRUE(pref != NULL); + EXPECT_TRUE(pref->IsExtensionControlled()); + EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl)); } |