summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-13 22:28:10 +0000
committereroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-13 22:28:10 +0000
commitacd8753a05143607adb184d63cfc1c13f4704d71 (patch)
tree25d6fa6cace787949c32563f6ba4591dd994e881
parentcd436b6d700e08e4801f8f5f8396b4e3d068e8e3 (diff)
downloadchromium_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.cc2
-rw-r--r--chrome/browser/importer/firefox_proxy_settings_unittest.cc46
-rw-r--r--chrome/test/data/firefox3_pref_pac_url.js9
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/");