summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_proxy_apitest.cc
diff options
context:
space:
mode:
authorpam@chromium.org <pam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-10 08:25:42 +0000
committerpam@chromium.org <pam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-10 08:25:42 +0000
commitf83ccffe272a19dfa91457b6592de40347e8499b (patch)
tree9214cb2139795a94ad8c775506d6ffd601b79e30 /chrome/browser/extensions/extension_proxy_apitest.cc
parentd3462a49e49e6b1973ae9901a438fcb866f3099a (diff)
downloadchromium_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.cc73
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));
}