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

Unified Diff: chrome/browser/ui/webui/net_internals_ui_browsertest.cc

Issue 8392041: Prerendered tabs use the same SessionStorage namespace as the tab that triggered the prerender. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix NetInternals browser test Created 9 years, 2 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
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)));
+
}
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();
+ 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));
}
////////////////////////////////////////////////////////////////////////////////

Powered by Google App Engine
This is Rietveld 408576698