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>2011-02-09 14:52:17 +0000
committerbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-09 14:52:17 +0000
commitc2f23d014bb8f371cd7b454c09c3e0bf291620e8 (patch)
treea84c232915f9654969a913ad9a5926479448c846 /chrome/browser/extensions/extension_proxy_apitest.cc
parent559a9bd2ab0d32b79e1c938159d952b1b329b7ee (diff)
downloadchromium_src-c2f23d014bb8f371cd7b454c09c3e0bf291620e8.zip
chromium_src-c2f23d014bb8f371cd7b454c09c3e0bf291620e8.tar.gz
chromium_src-c2f23d014bb8f371cd7b454c09c3e0bf291620e8.tar.bz2
Make proxy settings one atomic dictionary in the PrefStores such that modifications are atomic.
BUG=67779,70904 TEST=none Review URL: http://codereview.chromium.org/6240013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74284 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_proxy_apitest.cc')
-rw-r--r--chrome/browser/extensions/extension_proxy_apitest.cc161
1 files changed, 85 insertions, 76 deletions
diff --git a/chrome/browser/extensions/extension_proxy_apitest.cc b/chrome/browser/extensions/extension_proxy_apitest.cc
index 4d2325f..024595f 100644
--- a/chrome/browser/extensions/extension_proxy_apitest.cc
+++ b/chrome/browser/extensions/extension_proxy_apitest.cc
@@ -4,48 +4,56 @@
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/prefs/pref_service.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
+#include "chrome/browser/prefs/proxy_config_dictionary.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"
-class ProxySettingsApiTest : public ExtensionApiTest {
- protected:
- void AssertSettings(int expected_mode,
- const char* expected_server,
- const char* expected_pac_url,
- PrefService* pref_service) {
- AssertExtensionControlled(prefs::kProxyMode, pref_service);
- int mode = pref_service->GetInteger(prefs::kProxyMode);
- EXPECT_EQ(expected_mode, mode);
+namespace {
- AssertExtensionControlled(prefs::kProxyPacUrl, pref_service);
- EXPECT_EQ(expected_pac_url, pref_service->GetString(prefs::kProxyPacUrl));
+const char NO_SERVER[] = "";
+const char NO_PAC[] = "";
- AssertExtensionControlled(prefs::kProxyServer, pref_service);
- EXPECT_EQ(expected_server, pref_service->GetString(prefs::kProxyServer));
- }
+} // namespace
- void AssertNoSettings(PrefService* pref_service) {
- AssertNotExtensionControlled(prefs::kProxyServer, pref_service);
- AssertNotExtensionControlled(prefs::kProxyMode, pref_service);
- AssertNotExtensionControlled(prefs::kProxyPacUrl, pref_service);
- }
- private:
- void AssertExtensionControlled(const char* pref_key,
- PrefService* pref_service) {
+class ProxySettingsApiTest : public ExtensionApiTest {
+ protected:
+ void ValidateSettings(int expected_mode,
+ const std::string& expected_server,
+ const std::string& expected_pac_url,
+ PrefService* pref_service) {
const PrefService::Preference* pref =
- pref_service->FindPreference(pref_key);
+ pref_service->FindPreference(prefs::kProxy);
ASSERT_TRUE(pref != NULL);
EXPECT_TRUE(pref->IsExtensionControlled());
+
+ ProxyConfigDictionary dict(pref_service->GetDictionary(prefs::kProxy));
+
+ ProxyPrefs::ProxyMode mode;
+ ASSERT_TRUE(dict.GetMode(&mode));
+ EXPECT_EQ(expected_mode, mode);
+
+ std::string value;
+ if (!expected_pac_url.empty()) {
+ ASSERT_TRUE(dict.GetPacUrl(&value));
+ EXPECT_EQ(expected_pac_url, value);
+ } else {
+ EXPECT_FALSE(dict.GetPacUrl(&value));
+ }
+
+ if (!expected_server.empty()) {
+ ASSERT_TRUE(dict.GetProxyServer(&value));
+ EXPECT_EQ(expected_server, value);
+ } else {
+ EXPECT_FALSE(dict.GetProxyServer(&value));
+ }
}
- void AssertNotExtensionControlled(const char* pref_key,
- PrefService* pref_service) {
+ void ExpectNoSettings(PrefService* pref_service) {
const PrefService::Preference* pref =
- pref_service->FindPreference(pref_key);
+ pref_service->FindPreference(prefs::kProxy);
ASSERT_TRUE(pref != NULL);
EXPECT_FALSE(pref->IsExtensionControlled());
}
@@ -68,7 +76,7 @@ IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyDirectSettings) {
ASSERT_TRUE(extension);
PrefService* pref_service = browser()->profile()->GetPrefs();
- AssertSettings(ProxyPrefs::MODE_DIRECT, kNoServer, kNoPac, pref_service);
+ ValidateSettings(ProxyPrefs::MODE_DIRECT, kNoServer, kNoPac, pref_service);
}
// Tests auto-detect settings.
@@ -81,7 +89,8 @@ IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyAutoSettings) {
ASSERT_TRUE(extension);
PrefService* pref_service = browser()->profile()->GetPrefs();
- AssertSettings(ProxyPrefs::MODE_AUTO_DETECT, kNoServer, kNoPac, pref_service);
+ ValidateSettings(ProxyPrefs::MODE_AUTO_DETECT, kNoServer, kNoPac,
+ pref_service);
}
// Tests PAC proxy settings.
@@ -94,8 +103,8 @@ IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyPacScript) {
ASSERT_TRUE(extension);
PrefService* pref_service = browser()->profile()->GetPrefs();
- AssertSettings(ProxyPrefs::MODE_PAC_SCRIPT, kNoServer,
- "http://wpad/windows.pac", pref_service);
+ ValidateSettings(ProxyPrefs::MODE_PAC_SCRIPT, kNoServer,
+ "http://wpad/windows.pac", pref_service);
}
// Tests setting a single proxy to cover all schemes.
@@ -108,13 +117,13 @@ IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyFixedSingle) {
ASSERT_TRUE(extension);
PrefService* pref_service = browser()->profile()->GetPrefs();
- AssertSettings(ProxyPrefs::MODE_FIXED_SERVERS,
- "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",
- kNoPac,
- pref_service);
+ ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
+ "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",
+ kNoPac,
+ pref_service);
}
// Tests setting to use the system's proxy settings.
@@ -127,7 +136,7 @@ IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxySystem) {
ASSERT_TRUE(extension);
PrefService* pref_service = browser()->profile()->GetPrefs();
- AssertSettings(ProxyPrefs::MODE_SYSTEM, kNoServer, kNoPac, pref_service);
+ ValidateSettings(ProxyPrefs::MODE_SYSTEM, kNoServer, kNoPac, pref_service);
}
// Tests setting separate proxies for each scheme.
@@ -140,23 +149,23 @@ IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyFixedIndividual) {
ASSERT_TRUE(extension);
PrefService* pref_service = browser()->profile()->GetPrefs();
- AssertSettings(ProxyPrefs::MODE_FIXED_SERVERS,
- "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",
- kNoPac,
- pref_service);
+ ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
+ "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",
+ kNoPac,
+ pref_service);
// Now check the incognito preferences.
pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs();
- AssertSettings(ProxyPrefs::MODE_FIXED_SERVERS,
- "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",
- kNoPac,
- pref_service);
+ ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
+ "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",
+ kNoPac,
+ pref_service);
}
// Tests setting values only for incognito mode
@@ -170,17 +179,17 @@ IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest,
ASSERT_TRUE(extension);
PrefService* pref_service = browser()->profile()->GetPrefs();
- AssertNoSettings(pref_service);
+ ExpectNoSettings(pref_service);
// Now check the incognito preferences.
pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs();
- AssertSettings(ProxyPrefs::MODE_FIXED_SERVERS,
- "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",
- kNoPac,
- pref_service);
+ ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
+ "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",
+ kNoPac,
+ pref_service);
}
// Tests setting values also for incognito mode
@@ -194,23 +203,23 @@ IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest,
ASSERT_TRUE(extension);
PrefService* pref_service = browser()->profile()->GetPrefs();
- AssertSettings(ProxyPrefs::MODE_FIXED_SERVERS,
- "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",
- kNoPac,
- pref_service);
+ ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
+ "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",
+ kNoPac,
+ pref_service);
// Now check the incognito preferences.
pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs();
- AssertSettings(ProxyPrefs::MODE_FIXED_SERVERS,
- "http=http://5.5.5.5;"
- "https=socks://6.6.6.6;"
- "ftp=http://7.7.7.7:9000;"
- "socks=socks4://8.8.8.8:9090",
- kNoPac,
- pref_service);
+ ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
+ "http=http://5.5.5.5;"
+ "https=socks://6.6.6.6;"
+ "ftp=http://7.7.7.7:9000;"
+ "socks=socks4://8.8.8.8:9090",
+ kNoPac,
+ pref_service);
}
// Tests setting and unsetting values
@@ -223,5 +232,5 @@ IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyFixedIndividualRemove) {
ASSERT_TRUE(extension);
PrefService* pref_service = browser()->profile()->GetPrefs();
- AssertNoSettings(pref_service);
+ ExpectNoSettings(pref_service);
}