1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/command_line.h" 6 #include "chrome/browser/ui/browser.h" 7 #include "chrome/browser/ui/tabs/tab_strip_model.h" 8 #include "chrome/common/chrome_switches.h" 9 #include "chrome/test/base/in_process_browser_test.h" 10 #include "chrome/test/base/ui_test_utils.h" 11 #include "content/public/browser/web_contents.h" 12 #include "content/public/test/browser_test_utils.h" 13 #include "net/test/spawned_test_server/spawned_test_server.h" 14 15 class HostRulesTest : public InProcessBrowserTest { 16 protected: 17 HostRulesTest() {} 18 19 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 20 ASSERT_TRUE(test_server()->Start()); 21 22 // Map all hosts to our local server. 23 std::string host_rule( 24 "MAP * " + test_server()->host_port_pair().ToString()); 25 command_line->AppendSwitchASCII(switches::kHostRules, host_rule); 26 // Use no proxy or otherwise this test will fail on a machine that has a 27 // proxy configured. 28 command_line->AppendSwitch(switches::kNoProxyServer); 29 } 30 31 private: 32 DISALLOW_COPY_AND_ASSIGN(HostRulesTest); 33 }; 34 35 IN_PROC_BROWSER_TEST_F(HostRulesTest, TestMap) { 36 // Go to the empty page using www.google.com as the host. 37 GURL local_url = test_server()->GetURL("files/empty.html"); 38 GURL test_url(std::string("http://www.google.com") + local_url.path()); 39 ui_test_utils::NavigateToURL(browser(), test_url); 40 41 std::string html; 42 EXPECT_TRUE(content::ExecuteScriptAndExtractString( 43 browser()->tab_strip_model()->GetActiveWebContents(), 44 "window.domAutomationController.send(document.body.outerHTML);", 45 &html)); 46 47 EXPECT_STREQ("<body></body>", html.c_str()); 48 } 49