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

Side by Side 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, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/bind_helpers.h" 6 #include "base/bind_helpers.h"
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "base/values.h" 10 #include "base/values.h"
11 #include "chrome/browser/prerender/prerender_final_status.h" 11 #include "chrome/browser/prerender/prerender_final_status.h"
12 #include "chrome/browser/prerender/prerender_manager.h" 12 #include "chrome/browser/prerender/prerender_manager.h"
13 #include "chrome/browser/prerender/prerender_manager_factory.h" 13 #include "chrome/browser/prerender/prerender_manager_factory.h"
14 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/ui/browser.h" 15 #include "chrome/browser/ui/browser.h"
16 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 16 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
17 #include "chrome/browser/ui/webui/web_ui_browsertest.h" 17 #include "chrome/browser/ui/webui/web_ui_browsertest.h"
18 #include "chrome/common/chrome_switches.h" 18 #include "chrome/common/chrome_switches.h"
19 #include "chrome/common/url_constants.h" 19 #include "chrome/common/url_constants.h"
20 #include "chrome/test/base/ui_test_utils.h" 20 #include "chrome/test/base/ui_test_utils.h"
21 #include "content/browser/renderer_host/render_view_host.h"
21 #include "content/browser/tab_contents/tab_contents.h" 22 #include "content/browser/tab_contents/tab_contents.h"
22 #include "content/test/test_browser_thread.h" 23 #include "content/test/test_browser_thread.h"
23 #include "googleurl/src/gurl.h" 24 #include "googleurl/src/gurl.h"
24 #include "net/base/address_list.h" 25 #include "net/base/address_list.h"
25 #include "net/base/host_cache.h" 26 #include "net/base/host_cache.h"
26 #include "net/base/host_resolver.h" 27 #include "net/base/host_resolver.h"
27 #include "net/base/host_resolver_proc.h" 28 #include "net/base/host_resolver_proc.h"
28 #include "net/base/net_errors.h" 29 #include "net/base/net_errors.h"
29 #include "net/base/net_log.h" 30 #include "net/base/net_log.h"
30 #include "net/url_request/url_request_context.h" 31 #include "net/url_request/url_request_context.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 NetInternalsTestMessageHandler(); 77 NetInternalsTestMessageHandler();
77 78
78 void set_browser(Browser* browser) { 79 void set_browser(Browser* browser) {
79 ASSERT_TRUE(browser); 80 ASSERT_TRUE(browser);
80 browser_ = browser; 81 browser_ = browser;
81 } 82 }
82 83
83 private: 84 private:
84 virtual void RegisterMessages() OVERRIDE; 85 virtual void RegisterMessages() OVERRIDE;
85 86
86 // Opens the given URL in a new tab. 87 // Opens the given URL in a new background tab.
87 void OpenNewTab(const ListValue* list_value); 88 void OpenNewTab(const ListValue* list_value);
88 89
89 // Adds a new entry to the host cache. Takes in hostname, ip address, 90 // Adds a new entry to the host cache. Takes in hostname, ip address,
90 // net error code, and expiration time (as number of days from now). 91 // net error code, and expiration time (as number of days from now).
91 void AddCacheEntry(const ListValue* list_value); 92 void AddCacheEntry(const ListValue* list_value);
92 93
94 // Navigates to the prerender in the background tab. This assumes that
95 // there is a "Click()" function in the background tab which will navigate
96 // there, and that the background tab exists at slot 1.
97 void NavigateToPrerender(const ListValue* list_value);
98
93 Browser* browser_; 99 Browser* browser_;
94 100
95 DISALLOW_COPY_AND_ASSIGN(NetInternalsTestMessageHandler); 101 DISALLOW_COPY_AND_ASSIGN(NetInternalsTestMessageHandler);
96 }; 102 };
97 103
98 NetInternalsTestMessageHandler::NetInternalsTestMessageHandler() 104 NetInternalsTestMessageHandler::NetInternalsTestMessageHandler()
99 : browser_(NULL) { 105 : browser_(NULL) {
100 } 106 }
101 107
102 void NetInternalsTestMessageHandler::RegisterMessages() { 108 void NetInternalsTestMessageHandler::RegisterMessages() {
103 web_ui_->RegisterMessageCallback( 109 web_ui_->RegisterMessageCallback(
104 "openNewTab", 110 "openNewTab",
105 base::Bind(&NetInternalsTestMessageHandler::OpenNewTab, 111 base::Bind(&NetInternalsTestMessageHandler::OpenNewTab,
106 base::Unretained(this))); 112 base::Unretained(this)));
107 web_ui_->RegisterMessageCallback( 113 web_ui_->RegisterMessageCallback(
108 "addCacheEntry", 114 "addCacheEntry",
109 base::Bind(&NetInternalsTestMessageHandler::AddCacheEntry, 115 base::Bind(&NetInternalsTestMessageHandler::AddCacheEntry,
110 base::Unretained(this))); 116 base::Unretained(this)));
117 web_ui_->RegisterMessageCallback("navigateToPrerender",
118 base::Bind(&NetInternalsTestMessageHandler::NavigateToPrerender,
119 base::Unretained(this)));
120
111 } 121 }
112 122
113 void NetInternalsTestMessageHandler::OpenNewTab(const ListValue* list_value) { 123 void NetInternalsTestMessageHandler::OpenNewTab(const ListValue* list_value) {
114 std::string url; 124 std::string url;
115 ASSERT_TRUE(list_value->GetString(0, &url)); 125 ASSERT_TRUE(list_value->GetString(0, &url));
116 ASSERT_TRUE(browser_); 126 ASSERT_TRUE(browser_);
117 ui_test_utils::NavigateToURLWithDisposition( 127 ui_test_utils::NavigateToURLWithDisposition(
118 browser_, 128 browser_,
119 GURL(url), 129 GURL(url),
120 NEW_BACKGROUND_TAB, 130 NEW_BACKGROUND_TAB,
(...skipping 19 matching lines...) Expand all
140 BrowserThread::PostTask( 150 BrowserThread::PostTask(
141 BrowserThread::IO, FROM_HERE, 151 BrowserThread::IO, FROM_HERE,
142 base::Bind(&AddCacheEntryOnIOThread, 152 base::Bind(&AddCacheEntryOnIOThread,
143 make_scoped_refptr(browser_->profile()->GetRequestContext()), 153 make_scoped_refptr(browser_->profile()->GetRequestContext()),
144 hostname, 154 hostname,
145 ip_literal, 155 ip_literal,
146 static_cast<int>(net_error), 156 static_cast<int>(net_error),
147 static_cast<int>(expire_days_from_now))); 157 static_cast<int>(expire_days_from_now)));
148 } 158 }
149 159
160 void NetInternalsTestMessageHandler::NavigateToPrerender(
161 const ListValue* list_value) {
162 RenderViewHost* host = browser_->GetTabContentsAt(1)->render_view_host();
163 host->ExecuteJavascriptInWebFrame(string16(),
164 ASCIIToUTF16("Click()"));
165 }
166
150 class NetInternalsTest : public WebUIBrowserTest { 167 class NetInternalsTest : public WebUIBrowserTest {
151 public: 168 public:
152 NetInternalsTest(); 169 NetInternalsTest();
153 virtual ~NetInternalsTest(); 170 virtual ~NetInternalsTest();
154 171
155 // InProcessBrowserTest overrides. 172 // InProcessBrowserTest overrides.
156 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; 173 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE;
157 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; 174 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE;
158 virtual void SetUpOnMainThread() OVERRIDE; 175 virtual void SetUpOnMainThread() OVERRIDE;
159 176
177 protected:
178 GURL CreatePrerenderLoaderUrl(const GURL& prerender_url) {
179 std::vector<net::TestServer::StringPair> replacement_text;
180 replacement_text.push_back(
181 make_pair("REPLACE_WITH_PRERENDER_URL", prerender_url.spec()));
182 std::string replacement_path;
183 EXPECT_TRUE(net::TestServer::GetFilePathWithReplacements(
184 "files/prerender/prerender_loader.html",
185 replacement_text,
186 &replacement_path));
187 GURL url_loader = test_server()->GetURL(replacement_path);
188 return url_loader;
189 }
190
160 private: 191 private:
161 virtual WebUIMessageHandler* GetMockMessageHandler() OVERRIDE { 192 virtual WebUIMessageHandler* GetMockMessageHandler() OVERRIDE {
162 message_handler_.set_browser(browser()); 193 message_handler_.set_browser(browser());
163 return &message_handler_; 194 return &message_handler_;
164 } 195 }
165 196
166 NetInternalsTestMessageHandler message_handler_; 197 NetInternalsTestMessageHandler message_handler_;
167 198
168 DISALLOW_COPY_AND_ASSIGN(NetInternalsTest); 199 DISALLOW_COPY_AND_ASSIGN(NetInternalsTest);
169 }; 200 };
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsHSTSViewAddTwice")); 415 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsHSTSViewAddTwice"));
385 } 416 }
386 417
387 //////////////////////////////////////////////////////////////////////////////// 418 ////////////////////////////////////////////////////////////////////////////////
388 // prerender_view.js 419 // prerender_view.js
389 //////////////////////////////////////////////////////////////////////////////// 420 ////////////////////////////////////////////////////////////////////////////////
390 421
391 // Prerender a page and navigate to it, once prerendering starts. 422 // Prerender a page and navigate to it, once prerendering starts.
392 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderViewSucceed) { 423 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderViewSucceed) {
393 ASSERT_TRUE(test_server()->Start()); 424 ASSERT_TRUE(test_server()->Start());
394 EXPECT_TRUE(RunJavascriptAsyncTest( 425 GURL prerender_url = test_server()->GetURL("files/title1.html");
395 "netInternalsPrerenderView", 426 GURL loader_url = CreatePrerenderLoaderUrl(prerender_url);
396 // URL that can be prerendered. 427 ConstValueVector args;
397 Value::CreateStringValue( 428 args.push_back(Value::CreateStringValue(prerender_url.spec()));
398 test_server()->GetURL("files/title1.html").spec()), 429 args.push_back(Value::CreateStringValue(loader_url.spec()));
399 Value::CreateBooleanValue(true), 430 args.push_back(Value::CreateBooleanValue(true));
400 Value::CreateStringValue( 431 args.push_back(Value::CreateStringValue(
401 prerender::NameFromFinalStatus(prerender::FINAL_STATUS_USED)))); 432 prerender::NameFromFinalStatus(prerender::FINAL_STATUS_USED)));
433 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsPrerenderView", args));
402 } 434 }
403 435
404 // Prerender a page that is expected to fail. 436 // Prerender a page that is expected to fail.
405 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderViewFail) { 437 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderViewFail) {
406 ASSERT_TRUE(test_server()->Start()); 438 ASSERT_TRUE(test_server()->Start());
407 EXPECT_TRUE(RunJavascriptAsyncTest( 439 GURL prerender_url = test_server()->GetURL("files/download-test1.lib");
408 "netInternalsPrerenderView", 440 GURL loader_url = CreatePrerenderLoaderUrl(prerender_url);
409 // URL that can't be prerendered, since it triggers a download. 441 ConstValueVector args;
410 Value::CreateStringValue( 442 args.push_back(Value::CreateStringValue(prerender_url.spec()));
411 test_server()->GetURL("files/download-test1.lib").spec()), 443 args.push_back(Value::CreateStringValue(loader_url.spec()));
412 Value::CreateBooleanValue(false), 444 args.push_back(Value::CreateBooleanValue(false));
413 Value::CreateStringValue( 445 args.push_back(Value::CreateStringValue(
414 prerender::NameFromFinalStatus(prerender::FINAL_STATUS_DOWNLOAD)))); 446 prerender::NameFromFinalStatus(prerender::FINAL_STATUS_DOWNLOAD)));
447 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsPrerenderView", args));
415 } 448 }
416 449
417 //////////////////////////////////////////////////////////////////////////////// 450 ////////////////////////////////////////////////////////////////////////////////
418 // log_view_painter.js 451 // log_view_painter.js
419 //////////////////////////////////////////////////////////////////////////////// 452 ////////////////////////////////////////////////////////////////////////////////
420 453
421 // Check that we correctly remove cookies and login information. 454 // Check that we correctly remove cookies and login information.
422 IN_PROC_BROWSER_TEST_F(NetInternalsTest, 455 IN_PROC_BROWSER_TEST_F(NetInternalsTest,
423 NetInternalsLogViewPainterStripInfo) { 456 NetInternalsLogViewPainterStripInfo) {
424 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsLogViewPainterStripInfo")); 457 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsLogViewPainterStripInfo"));
425 } 458 }
426 459
427 } // namespace 460 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698