Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5648)

Unified Diff: chrome/browser/net/proxy_browsertest.cc

Issue 15665006: Allow specifying proxy scripts using file:// URLs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add test. Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/io_thread.cc ('k') | chrome/test/data/bad_server.pac » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/net/proxy_browsertest.cc
diff --git a/chrome/browser/net/proxy_browsertest.cc b/chrome/browser/net/proxy_browsertest.cc
index 16bd7c519b7f4ea77c2a7076f07231a69a7d1872..2fc82cf276e467a52e50d58c5c4c1d19e7e8612f 100644
--- a/chrome/browser/net/proxy_browsertest.cc
+++ b/chrome/browser/net/proxy_browsertest.cc
@@ -123,4 +123,139 @@ IN_PROC_BROWSER_TEST_F(ProxyBrowserTest, MAYBE_BasicAuthWSConnect) {
EXPECT_TRUE(observer.auth_handled());
}
+// PAC script that sends all requests to an invalid proxy server.
+const base::FilePath::CharType kPACScript[] = FILE_PATH_LITERAL(
James Hawkins 2013/05/29 17:24:33 Optional nit: Move helpers and related constants t
pauljensen 2013/05/29 18:45:15 Done.
+ "bad_server.pac");
+
+// Verify kPACScript is installed as the PAC script.
+void VerifyProxyScript(Browser* browser) {
+ content::WebContents* tab =
+ browser->tab_strip_model()->GetActiveWebContents();
+ const char *expected_title = "http://google.com/ is not available";
eroman 2013/05/29 17:45:52 nit: asterisk on the left. nit: [optional] make it
pauljensen 2013/05/29 18:45:15 I deleted this code per mmenke's comment.
+ content::TitleWatcher watcher(tab, ASCIIToUTF16(expected_title));
+ ui_test_utils::NavigateToURL(browser, GURL("http://google.com"));
mmenke 2013/05/29 18:06:25 Not a big fan of depending on UI strings, since I
pauljensen 2013/05/29 18:45:15 Done.
+
+ const string16 title = watcher.WaitAndGetTitle();
+ EXPECT_TRUE(EqualsASCII(title, expected_title));
+ // Verify we get the ERR_PROXY_CONNECTION_FAILED screen.
+ bool result = false;
+ EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
+ browser->tab_strip_model()->GetActiveWebContents(),
+ "var textContent = document.body.textContent;"
+ "var hasError = textContent.indexOf("
+ " 'Unable to connect to the proxy server') >= 0;"
mmenke 2013/05/29 18:06:25 Rather than depend on UI strings, how about search
pauljensen 2013/05/29 18:45:15 I tried that first, but ERR_PROXY_CONNECTION_FAILE
mmenke 2013/05/29 18:47:51 Hmm... textContent includes the entire raw page,
mmenke 2013/05/29 18:50:28 Just tested it manually with ERR_UNSAFE_PORT, and
pauljensen 2013/05/29 18:54:52 Huh, you're right. I've changed it to look for ER
+ "domAutomationController.send(hasError);",
+ &result));
+ EXPECT_TRUE(result);
+}
+
+// Fetch PAC script via an http:// URL.
+class HttpProxyScriptBrowserTest : public InProcessBrowserTest {
+ public:
+ HttpProxyScriptBrowserTest()
+ : http_server_(net::SpawnedTestServer::TYPE_HTTP,
+ net::SpawnedTestServer::kLocalhost,
+ base::FilePath(FILE_PATH_LITERAL("chrome/test/data"))) {
+ }
+ virtual ~HttpProxyScriptBrowserTest() {}
+
+ virtual void SetUp() OVERRIDE {
+ ASSERT_TRUE(http_server_.Start());
+ InProcessBrowserTest::SetUp();
+ }
+
+ virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
+ base::FilePath pac_script_path(FILE_PATH_LITERAL("files"));
+ command_line->AppendSwitchASCII(switches::kProxyPacUrl, http_server_.GetURL(
+ pac_script_path.Append(kPACScript).MaybeAsASCII()).spec());
+ }
+
+ private:
+ net::SpawnedTestServer http_server_;
+
+ DISALLOW_COPY_AND_ASSIGN(HttpProxyScriptBrowserTest);
+};
+
+IN_PROC_BROWSER_TEST_F(HttpProxyScriptBrowserTest, Verify) {
+ VerifyProxyScript(browser());
+}
+
+// Fetch PAC script via a file:// URL.
+class FileProxyScriptBrowserTest : public InProcessBrowserTest {
+ public:
+ FileProxyScriptBrowserTest() {}
+ virtual ~FileProxyScriptBrowserTest() {}
+
+ virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
+ command_line->AppendSwitchASCII(switches::kProxyPacUrl,
+ ui_test_utils::GetTestUrl(
+ base::FilePath(base::FilePath::kCurrentDirectory),
+ base::FilePath(kPACScript)).spec());
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(FileProxyScriptBrowserTest);
+};
+
+IN_PROC_BROWSER_TEST_F(FileProxyScriptBrowserTest, Verify) {
+ VerifyProxyScript(browser());
+}
+
+// Fetch PAC script via an ftp:// URL.
+class FtpProxyScriptBrowserTest : public InProcessBrowserTest {
+ public:
+ FtpProxyScriptBrowserTest()
+ : ftp_server_(net::SpawnedTestServer::TYPE_FTP,
+ net::SpawnedTestServer::kLocalhost,
+ base::FilePath(FILE_PATH_LITERAL("chrome/test/data"))) {
+ }
+ virtual ~FtpProxyScriptBrowserTest() {}
+
+ virtual void SetUp() OVERRIDE {
+ ASSERT_TRUE(ftp_server_.Start());
+ InProcessBrowserTest::SetUp();
+ }
+
+ virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
+ base::FilePath pac_script_path(kPACScript);
+ command_line->AppendSwitchASCII(
+ switches::kProxyPacUrl,
+ ftp_server_.GetURL(pac_script_path.MaybeAsASCII()).spec());
+ }
+
+ private:
+ net::SpawnedTestServer ftp_server_;
+
+ DISALLOW_COPY_AND_ASSIGN(FtpProxyScriptBrowserTest);
+};
+
+IN_PROC_BROWSER_TEST_F(FtpProxyScriptBrowserTest, Verify) {
+ VerifyProxyScript(browser());
+}
+
+// Fetch PAC script via a data: URL.
+class DataProxyScriptBrowserTest : public InProcessBrowserTest {
+ public:
+ DataProxyScriptBrowserTest() {}
+ virtual ~DataProxyScriptBrowserTest() {}
+
+ virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
+ std::string contents;
+ // Read in kPACScript contents.
+ ASSERT_TRUE(file_util::ReadFileToString(ui_test_utils::GetTestFilePath(
+ base::FilePath(base::FilePath::kCurrentDirectory),
+ base::FilePath(kPACScript)),
+ &contents));
+ command_line->AppendSwitchASCII(switches::kProxyPacUrl,
+ std::string("data:,") + contents);
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(DataProxyScriptBrowserTest);
+};
+
+IN_PROC_BROWSER_TEST_F(DataProxyScriptBrowserTest, Verify) {
+ VerifyProxyScript(browser());
+}
+
} // namespace
« no previous file with comments | « chrome/browser/io_thread.cc ('k') | chrome/test/data/bad_server.pac » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698