diff options
author | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-13 22:28:10 +0000 |
---|---|---|
committer | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-13 22:28:10 +0000 |
commit | acd8753a05143607adb184d63cfc1c13f4704d71 (patch) | |
tree | 25d6fa6cace787949c32563f6ba4591dd994e881 | |
parent | cd436b6d700e08e4801f8f5f8396b4e3d068e8e3 (diff) | |
download | chromium_src-acd8753a05143607adb184d63cfc1c13f4704d71.zip chromium_src-acd8753a05143607adb184d63cfc1c13f4704d71.tar.gz chromium_src-acd8753a05143607adb184d63cfc1c13f4704d71.tar.bz2 |
Fix retrieval of Firefox proxy settings when it is using an autoconfig URL.
BUG=44119,44005
TEST=FirefoxProxySettingsTest.TestParseAutoConfigUrl
Review URL: http://codereview.chromium.org/2089004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47207 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/importer/firefox_proxy_settings.cc | 2 | ||||
-rw-r--r-- | chrome/browser/importer/firefox_proxy_settings_unittest.cc | 46 | ||||
-rw-r--r-- | chrome/test/data/firefox3_pref_pac_url.js | 9 |
3 files changed, 56 insertions, 1 deletions
diff --git a/chrome/browser/importer/firefox_proxy_settings.cc b/chrome/browser/importer/firefox_proxy_settings.cc index d4d0d88..0f8ff39 100644 --- a/chrome/browser/importer/firefox_proxy_settings.cc +++ b/chrome/browser/importer/firefox_proxy_settings.cc @@ -178,7 +178,7 @@ bool FirefoxProxySettings::GetSettingsFromFile(const FilePath& pref_file, &(settings->autoconfig_url_))) { LOG(ERROR) << "Failed to retrieve Firefox proxy autoconfig URL"; } - return false; + return true; } if (settings->config_type_ == MANUAL) { diff --git a/chrome/browser/importer/firefox_proxy_settings_unittest.cc b/chrome/browser/importer/firefox_proxy_settings_unittest.cc index 8926f47..ed2a66c 100644 --- a/chrome/browser/importer/firefox_proxy_settings_unittest.cc +++ b/chrome/browser/importer/firefox_proxy_settings_unittest.cc @@ -50,6 +50,7 @@ TEST_F(FirefoxProxySettingsTest, TestParse) { EXPECT_EQ("localhost", settings.proxy_bypass_list()[0]); EXPECT_EQ("127.0.0.1", settings.proxy_bypass_list()[1]); EXPECT_EQ("noproxy.com", settings.proxy_bypass_list()[2]); + EXPECT_EQ("", settings.autoconfig_url()); // Test that ToProxyConfig() properly translates into a net::ProxyConfig. net::ProxyConfig config; @@ -76,3 +77,48 @@ TEST_F(FirefoxProxySettingsTest, TestParse) { " *noproxy.com", pretty_printed_config); } + +TEST_F(FirefoxProxySettingsTest, TestParseAutoConfigUrl) { + FirefoxProxySettings settings; + + FilePath js_pref_path; + ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &js_pref_path)); + js_pref_path = js_pref_path.AppendASCII("firefox3_pref_pac_url.js"); + + EXPECT_TRUE(TestFirefoxProxySettings::TestGetSettingsFromFile(js_pref_path, + &settings)); + EXPECT_EQ(FirefoxProxySettings::AUTO_FROM_URL, settings.config_type()); + + // Everything should be empty except for the autoconfig URL. + EXPECT_EQ("http://custom-pac-url/", settings.autoconfig_url()); + EXPECT_EQ("", settings.http_proxy()); + EXPECT_EQ(0, settings.http_proxy_port()); + EXPECT_EQ("", settings.ssl_proxy()); + EXPECT_EQ(0, settings.ssl_proxy_port()); + EXPECT_EQ("", settings.ftp_proxy()); + EXPECT_EQ(0, settings.ftp_proxy_port()); + EXPECT_EQ("", settings.gopher_proxy()); + EXPECT_EQ(0, settings.gopher_proxy_port()); + EXPECT_EQ("", settings.socks_host()); + EXPECT_EQ(0, settings.socks_port()); + EXPECT_EQ(0, settings.socks_port()); + EXPECT_EQ(0U, settings.proxy_bypass_list().size()); + + // Test that ToProxyConfig() properly translates into a net::ProxyConfig. + net::ProxyConfig config; + EXPECT_TRUE(settings.ToProxyConfig(&config)); + + // Pretty-print |config| to a string (easy way to define the expectations). + std::ostringstream stream; + stream << config; + std::string pretty_printed_config = stream.str(); + + EXPECT_EQ( + "Automatic settings:\n" + " Auto-detect: No\n" + " Custom PAC script: http://custom-pac-url/\n" + "Manual settings:\n" + " Proxy server: [None]\n" + " Bypass list: [None]", + pretty_printed_config); +} diff --git a/chrome/test/data/firefox3_pref_pac_url.js b/chrome/test/data/firefox3_pref_pac_url.js new file mode 100644 index 0000000..5d416b4 --- /dev/null +++ b/chrome/test/data/firefox3_pref_pac_url.js @@ -0,0 +1,9 @@ +# Mozilla User Preferences + +user_pref("network.proxy.type", 2); +user_pref("network.proxy.ftp", "ftp_proxy"); +user_pref("network.proxy.ftp_port", 3333); +user_pref("network.proxy.gopher", "gopher_proxy"); +user_pref("network.proxy.gopher_port", 4444); +user_pref("network.proxy.http", "http_proxy"); +user_pref("network.proxy.autoconfig_url", "http://custom-pac-url/"); |