summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_proxy_apitest.cc
diff options
context:
space:
mode:
authorbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-23 10:18:20 +0000
committerbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-23 10:18:20 +0000
commiteccf68e19bd5ddb3a6eac53a5313a49054a418f3 (patch)
tree3e883a8c74dd9e1503da8a05b3f4a555a7e0f1ec /chrome/browser/extensions/extension_proxy_apitest.cc
parentf61c397ae7c8d07762b02d6578928163e2a8eca0 (diff)
downloadchromium_src-eccf68e19bd5ddb3a6eac53a5313a49054a418f3.zip
chromium_src-eccf68e19bd5ddb3a6eac53a5313a49054a418f3.tar.gz
chromium_src-eccf68e19bd5ddb3a6eac53a5313a49054a418f3.tar.bz2
Introduce a separate preference for 'proxy server mode'
The new preference is kProxyServerMode, which supersedes kProxyAutoDetect and kNoProxyServer. The point of this change is to represent 'use system proxy settings' in a more robust way. The proxy extension API is also adjusted to the preference system. This is a continuation of gfeher's patch from issue 5701003. BUG=65732, 66023 TEST=ProxyPrefsTest.*, and also covered by ExtensionApiTest.Porxy*, PrefProxyConfigServiceTest.* Review URL: http://codereview.chromium.org/6004003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70042 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_proxy_apitest.cc')
-rw-r--r--chrome/browser/extensions/extension_proxy_apitest.cc117
1 files changed, 106 insertions, 11 deletions
diff --git a/chrome/browser/extensions/extension_proxy_apitest.cc b/chrome/browser/extensions/extension_proxy_apitest.cc
index f24b7ef..5537f32 100644
--- a/chrome/browser/extensions/extension_proxy_apitest.cc
+++ b/chrome/browser/extensions/extension_proxy_apitest.cc
@@ -4,13 +4,46 @@
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/prefs/pref_service.h"
+#include "chrome/browser/prefs/proxy_prefs.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/pref_names.h"
-// Tests auto-detect and PAC proxy settings.
+// Tests direct connection settings.
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyDirectSettings) {
+ CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kEnableExperimentalExtensionApis);
+
+ ASSERT_TRUE(RunExtensionTest("proxy/direct")) << message_;
+ const Extension* extension = GetSingleLoadedExtension();
+ ASSERT_TRUE(extension);
+
+ PrefService* pref_service = browser()->profile()->GetPrefs();
+
+ const PrefService::Preference* pref =
+ pref_service->FindPreference(prefs::kProxyMode);
+ ASSERT_TRUE(pref != NULL);
+ ASSERT_TRUE(pref->IsExtensionControlled());
+ int mode = pref_service->GetInteger(prefs::kProxyMode);
+ EXPECT_EQ(ProxyPrefs::MODE_DIRECT, mode);
+
+ // Other proxy prefs should also be set, so they're all controlled from one
+ // place.
+ pref = pref_service->FindPreference(prefs::kProxyPacUrl);
+ ASSERT_TRUE(pref != NULL);
+ EXPECT_TRUE(pref->IsExtensionControlled());
+ EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl));
+
+ // No manual proxy prefs were set.
+ pref = pref_service->FindPreference(prefs::kProxyServer);
+ ASSERT_TRUE(pref != NULL);
+ EXPECT_TRUE(pref->IsExtensionControlled());
+ EXPECT_EQ("", pref_service->GetString(prefs::kProxyServer));
+}
+
+// Tests auto-detect settings.
IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyAutoSettings) {
CommandLine::ForCurrentProcess()->AppendSwitch(
switches::kEnableExperimentalExtensionApis);
@@ -22,11 +55,37 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyAutoSettings) {
PrefService* pref_service = browser()->profile()->GetPrefs();
const PrefService::Preference* pref =
- pref_service->FindPreference(prefs::kProxyAutoDetect);
+ pref_service->FindPreference(prefs::kProxyMode);
+ ASSERT_TRUE(pref != NULL);
+ ASSERT_TRUE(pref->IsExtensionControlled());
+ int mode = pref_service->GetInteger(prefs::kProxyMode);
+ EXPECT_EQ(ProxyPrefs::MODE_AUTO_DETECT, mode);
+
+ // Other proxy prefs should also be set, so they're all controlled from one
+ // place.
+ pref = pref_service->FindPreference(prefs::kProxyPacUrl);
+ ASSERT_TRUE(pref != NULL);
+ EXPECT_TRUE(pref->IsExtensionControlled());
+ EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl));
+}
+
+// Tests PAC proxy settings.
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyPacScript) {
+ CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kEnableExperimentalExtensionApis);
+
+ ASSERT_TRUE(RunExtensionTest("proxy/pac")) << message_;
+ const Extension* extension = GetSingleLoadedExtension();
+ ASSERT_TRUE(extension);
+
+ PrefService* pref_service = browser()->profile()->GetPrefs();
+
+ const PrefService::Preference* pref =
+ pref_service->FindPreference(prefs::kProxyMode);
ASSERT_TRUE(pref != NULL);
ASSERT_TRUE(pref->IsExtensionControlled());
- bool auto_detect = pref_service->GetBoolean(prefs::kProxyAutoDetect);
- EXPECT_TRUE(auto_detect);
+ int mode = pref_service->GetInteger(prefs::kProxyMode);
+ EXPECT_EQ(ProxyPrefs::MODE_PAC_SCRIPT, mode);
pref = pref_service->FindPreference(prefs::kProxyPacUrl);
ASSERT_TRUE(pref != NULL);
@@ -37,11 +96,12 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyAutoSettings) {
// No manual proxy prefs were set.
pref = pref_service->FindPreference(prefs::kProxyServer);
ASSERT_TRUE(pref != NULL);
- EXPECT_TRUE(pref->IsDefaultValue());
+ EXPECT_TRUE(pref->IsExtensionControlled());
+ EXPECT_EQ("", pref_service->GetString(prefs::kProxyServer));
}
// Tests setting a single proxy to cover all schemes.
-IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyManualSingle) {
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyFixedSingle) {
CommandLine::ForCurrentProcess()->AppendSwitch(
switches::kEnableExperimentalExtensionApis);
@@ -64,19 +124,53 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyManualSingle) {
// Other proxy prefs should also be set, so they're all controlled from one
// place.
- pref = pref_service->FindPreference(prefs::kProxyAutoDetect);
+ pref = pref_service->FindPreference(prefs::kProxyMode);
+ ASSERT_TRUE(pref != NULL);
+ EXPECT_TRUE(pref->IsExtensionControlled());
+ EXPECT_EQ(ProxyPrefs::MODE_FIXED_SERVERS,
+ pref_service->GetInteger(prefs::kProxyMode));
+
+ pref = pref_service->FindPreference(prefs::kProxyPacUrl);
ASSERT_TRUE(pref != NULL);
EXPECT_TRUE(pref->IsExtensionControlled());
- EXPECT_FALSE(pref_service->GetBoolean(prefs::kProxyAutoDetect));
+ EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl));
+}
+
+// Tests setting to use the system's proxy settings.
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxySystem) {
+ CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kEnableExperimentalExtensionApis);
+
+ ASSERT_TRUE(RunExtensionTest("proxy/system")) << message_;
+ const Extension* extension = GetSingleLoadedExtension();
+ ASSERT_TRUE(extension);
+
+ 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::kProxyMode);
+ ASSERT_TRUE(pref != NULL);
+ ASSERT_TRUE(pref->IsExtensionControlled());
+ int proxy_server_mode = pref_service->GetInteger(prefs::kProxyMode);
+ EXPECT_EQ(ProxyPrefs::MODE_SYSTEM, proxy_server_mode);
+ // Other proxy prefs should also be set, so they're all controlled from one
+ // place.
pref = pref_service->FindPreference(prefs::kProxyPacUrl);
ASSERT_TRUE(pref != NULL);
EXPECT_TRUE(pref->IsExtensionControlled());
EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl));
+
+ // No manual proxy prefs were set.
+ pref = pref_service->FindPreference(prefs::kProxyServer);
+ ASSERT_TRUE(pref != NULL);
+ EXPECT_TRUE(pref->IsExtensionControlled());
+ EXPECT_EQ("", pref_service->GetString(prefs::kProxyServer));
}
// Tests setting separate proxies for each scheme.
-IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyManualIndividual) {
+IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyFixedIndividual) {
CommandLine::ForCurrentProcess()->AppendSwitch(
switches::kEnableExperimentalExtensionApis);
@@ -100,10 +194,11 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyManualIndividual) {
// Other proxy prefs should also be set, so they're all controlled from one
// place.
- pref = pref_service->FindPreference(prefs::kProxyAutoDetect);
+ pref = pref_service->FindPreference(prefs::kProxyMode);
ASSERT_TRUE(pref != NULL);
EXPECT_TRUE(pref->IsExtensionControlled());
- EXPECT_FALSE(pref_service->GetBoolean(prefs::kProxyAutoDetect));
+ EXPECT_EQ(ProxyPrefs::MODE_FIXED_SERVERS,
+ pref_service->GetInteger(prefs::kProxyMode));
pref = pref_service->FindPreference(prefs::kProxyPacUrl);
ASSERT_TRUE(pref != NULL);