| 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..5c6d967b52bb6b1f72de84f93439e5cf178d6eec 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,9 @@ void NetInternalsTestMessageHandler::RegisterMessages() {
|
| "addCacheEntry",
|
| base::Bind(&NetInternalsTestMessageHandler::AddCacheEntry,
|
| base::Unretained(this)));
|
| + web_ui_->RegisterMessageCallback("navigateToPrerender",
|
| + base::Bind(&NetInternalsTestMessageHandler::NavigateToPrerender,
|
| + base::Unretained(this)));
|
| }
|
|
|
| void NetInternalsTestMessageHandler::OpenNewTab(const ListValue* list_value) {
|
| @@ -147,6 +156,12 @@ 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();
|
| + host->ExecuteJavascriptInWebFrame(string16(), ASCIIToUTF16("Click()"));
|
| +}
|
| +
|
| class NetInternalsTest : public WebUIBrowserTest {
|
| public:
|
| NetInternalsTest();
|
| @@ -157,6 +172,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 +420,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));
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|