Chromium Code Reviews| Index: chrome/browser/ui/webui/net_internals_ui_browsertest.cc |
| diff --git a/chrome/browser/ui/webui/net_internals_ui_browsertest.cc b/chrome/browser/ui/webui/net_internals_ui_browsertest.cc |
| index ec7427b420e7ae8493aa7b011e18fdf2422e376c..ad9eda03416b075c1193e0b9f3e98e6098a1bb3d 100644 |
| --- a/chrome/browser/ui/webui/net_internals_ui_browsertest.cc |
| +++ b/chrome/browser/ui/webui/net_internals_ui_browsertest.cc |
| @@ -18,6 +18,7 @@ |
| #include "chrome/common/chrome_switches.h" |
| #include "chrome/common/url_constants.h" |
| #include "chrome/test/base/ui_test_utils.h" |
| +#include "content/browser/renderer_host/render_view_host.h" |
| #include "content/browser/tab_contents/tab_contents.h" |
| #include "content/test/test_browser_thread.h" |
| #include "googleurl/src/gurl.h" |
| @@ -83,13 +84,18 @@ class NetInternalsTestMessageHandler : public WebUIMessageHandler { |
| private: |
| virtual void RegisterMessages() OVERRIDE; |
| - // Opens the given URL in a new tab. |
| + // Opens the given URL in a new background tab. |
| void OpenNewTab(const ListValue* list_value); |
| // Adds a new entry to the host cache. Takes in hostname, ip address, |
| // net error code, and expiration time (as number of days from now). |
| void AddCacheEntry(const ListValue* list_value); |
| + // Navigates to the prerender in the background tab. This assumes that |
| + // there is a "Click()" function in the background tab which will navigate |
| + // there, and that the background tab exists at slot 1. |
| + void NavigateToPrerender(const ListValue* list_value); |
| + |
| Browser* browser_; |
| DISALLOW_COPY_AND_ASSIGN(NetInternalsTestMessageHandler); |
| @@ -108,6 +114,10 @@ void NetInternalsTestMessageHandler::RegisterMessages() { |
| "addCacheEntry", |
| base::Bind(&NetInternalsTestMessageHandler::AddCacheEntry, |
| base::Unretained(this))); |
| + web_ui_->RegisterMessageCallback("navigateToPrerender", |
| + base::Bind(&NetInternalsTestMessageHandler::NavigateToPrerender, |
| + base::Unretained(this))); |
| + |
|
mmenke
2011/11/02 16:19:17
nit: Blank line isn't needed here.
|
| } |
| void NetInternalsTestMessageHandler::OpenNewTab(const ListValue* list_value) { |
| @@ -147,6 +157,13 @@ void NetInternalsTestMessageHandler::AddCacheEntry( |
| static_cast<int>(expire_days_from_now))); |
| } |
| +void NetInternalsTestMessageHandler::NavigateToPrerender( |
| + const ListValue* list_value) { |
| + RenderViewHost* host = browser_->GetTabContentsAt(1)->render_view_host(); |
|
mmenke
2011/11/02 16:19:17
nit: Should indent two spaces here.
cbentzel
2011/11/02 16:55:52
Oi. Do you know of anything for VS which indents c
cbentzel
2011/11/02 17:13:49
Done.
mmenke
2011/11/02 17:44:07
Visual studio indents correctly, it's just emacs a
|
| + host->ExecuteJavascriptInWebFrame(string16(), |
| + ASCIIToUTF16("Click()")); |
| +} |
| + |
| class NetInternalsTest : public WebUIBrowserTest { |
| public: |
| NetInternalsTest(); |
| @@ -157,6 +174,20 @@ class NetInternalsTest : public WebUIBrowserTest { |
| virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; |
| virtual void SetUpOnMainThread() OVERRIDE; |
| + protected: |
| + GURL CreatePrerenderLoaderUrl(const GURL& prerender_url) { |
| + std::vector<net::TestServer::StringPair> replacement_text; |
| + replacement_text.push_back( |
| + make_pair("REPLACE_WITH_PRERENDER_URL", prerender_url.spec())); |
| + std::string replacement_path; |
| + EXPECT_TRUE(net::TestServer::GetFilePathWithReplacements( |
| + "files/prerender/prerender_loader.html", |
| + replacement_text, |
| + &replacement_path)); |
| + GURL url_loader = test_server()->GetURL(replacement_path); |
| + return url_loader; |
| + } |
| + |
| private: |
| virtual WebUIMessageHandler* GetMockMessageHandler() OVERRIDE { |
| message_handler_.set_browser(browser()); |
| @@ -391,27 +422,29 @@ IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsHSTSViewAddTwice) { |
| // Prerender a page and navigate to it, once prerendering starts. |
| IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderViewSucceed) { |
| ASSERT_TRUE(test_server()->Start()); |
| - EXPECT_TRUE(RunJavascriptAsyncTest( |
| - "netInternalsPrerenderView", |
| - // URL that can be prerendered. |
| - Value::CreateStringValue( |
| - test_server()->GetURL("files/title1.html").spec()), |
| - Value::CreateBooleanValue(true), |
| - Value::CreateStringValue( |
| - prerender::NameFromFinalStatus(prerender::FINAL_STATUS_USED)))); |
| + GURL prerender_url = test_server()->GetURL("files/title1.html"); |
| + GURL loader_url = CreatePrerenderLoaderUrl(prerender_url); |
| + ConstValueVector args; |
| + args.push_back(Value::CreateStringValue(prerender_url.spec())); |
| + args.push_back(Value::CreateStringValue(loader_url.spec())); |
| + args.push_back(Value::CreateBooleanValue(true)); |
| + args.push_back(Value::CreateStringValue( |
| + prerender::NameFromFinalStatus(prerender::FINAL_STATUS_USED))); |
| + EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsPrerenderView", args)); |
| } |
| // Prerender a page that is expected to fail. |
| IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderViewFail) { |
| ASSERT_TRUE(test_server()->Start()); |
| - EXPECT_TRUE(RunJavascriptAsyncTest( |
| - "netInternalsPrerenderView", |
| - // URL that can't be prerendered, since it triggers a download. |
| - Value::CreateStringValue( |
| - test_server()->GetURL("files/download-test1.lib").spec()), |
| - Value::CreateBooleanValue(false), |
| - Value::CreateStringValue( |
| - prerender::NameFromFinalStatus(prerender::FINAL_STATUS_DOWNLOAD)))); |
| + GURL prerender_url = test_server()->GetURL("files/download-test1.lib"); |
| + GURL loader_url = CreatePrerenderLoaderUrl(prerender_url); |
| + ConstValueVector args; |
| + args.push_back(Value::CreateStringValue(prerender_url.spec())); |
| + args.push_back(Value::CreateStringValue(loader_url.spec())); |
| + args.push_back(Value::CreateBooleanValue(false)); |
| + args.push_back(Value::CreateStringValue( |
| + prerender::NameFromFinalStatus(prerender::FINAL_STATUS_DOWNLOAD))); |
| + EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsPrerenderView", args)); |
| } |
| //////////////////////////////////////////////////////////////////////////////// |