diff options
author | battre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-09 14:52:17 +0000 |
---|---|---|
committer | battre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-09 14:52:17 +0000 |
commit | c2f23d014bb8f371cd7b454c09c3e0bf291620e8 (patch) | |
tree | a84c232915f9654969a913ad9a5926479448c846 /chrome/browser/extensions/extension_proxy_apitest.cc | |
parent | 559a9bd2ab0d32b79e1c938159d952b1b329b7ee (diff) | |
download | chromium_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.cc | 161 |
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); } |