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

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: One more indent 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)));
111 } 120 }
112 121
113 void NetInternalsTestMessageHandler::OpenNewTab(const ListValue* list_value) { 122 void NetInternalsTestMessageHandler::OpenNewTab(const ListValue* list_value) {
114 std::string url; 123 std::string url;
115 ASSERT_TRUE(list_value->GetString(0, &url)); 124 ASSERT_TRUE(list_value->GetString(0, &url));
116 ASSERT_TRUE(browser_); 125 ASSERT_TRUE(browser_);
117 ui_test_utils::NavigateToURLWithDisposition( 126 ui_test_utils::NavigateToURLWithDisposition(
118 browser_, 127 browser_,
119 GURL(url), 128 GURL(url),
120 NEW_BACKGROUND_TAB, 129 NEW_BACKGROUND_TAB,
(...skipping 19 matching lines...) Expand all
140 BrowserThread::PostTask( 149 BrowserThread::PostTask(
141 BrowserThread::IO, FROM_HERE, 150 BrowserThread::IO, FROM_HERE,
142 base::Bind(&AddCacheEntryOnIOThread, 151 base::Bind(&AddCacheEntryOnIOThread,
143 make_scoped_refptr(browser_->profile()->GetRequestContext()), 152 make_scoped_refptr(browser_->profile()->GetRequestContext()),
144 hostname, 153 hostname,
145 ip_literal, 154 ip_literal,
146 static_cast<int>(net_error), 155 static_cast<int>(net_error),
147 static_cast<int>(expire_days_from_now))); 156 static_cast<int>(expire_days_from_now)));
148 } 157 }
149 158
159 void NetInternalsTestMessageHandler::NavigateToPrerender(
160 const ListValue* list_value) {
161 RenderViewHost* host = browser_->GetTabContentsAt(1)->render_view_host();
162 host->ExecuteJavascriptInWebFrame(string16(), ASCIIToUTF16("Click()"));
163 }
164
150 class NetInternalsTest : public WebUIBrowserTest { 165 class NetInternalsTest : public WebUIBrowserTest {
151 public: 166 public:
152 NetInternalsTest(); 167 NetInternalsTest();
153 virtual ~NetInternalsTest(); 168 virtual ~NetInternalsTest();
154 169
155 // InProcessBrowserTest overrides. 170 // InProcessBrowserTest overrides.
156 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; 171 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE;
157 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; 172 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE;
158 virtual void SetUpOnMainThread() OVERRIDE; 173 virtual void SetUpOnMainThread() OVERRIDE;
159 174
175 protected:
176 GURL CreatePrerenderLoaderUrl(const GURL& prerender_url) {
177 std::vector<net::TestServer::StringPair> replacement_text;
178 replacement_text.push_back(
179 make_pair("REPLACE_WITH_PRERENDER_URL", prerender_url.spec()));
180 std::string replacement_path;
181 EXPECT_TRUE(net::TestServer::GetFilePathWithReplacements(
182 "files/prerender/prerender_loader.html",
183 replacement_text,
184 &replacement_path));
185 GURL url_loader = test_server()->GetURL(replacement_path);
186 return url_loader;
187 }
188
160 private: 189 private:
161 virtual WebUIMessageHandler* GetMockMessageHandler() OVERRIDE { 190 virtual WebUIMessageHandler* GetMockMessageHandler() OVERRIDE {
162 message_handler_.set_browser(browser()); 191 message_handler_.set_browser(browser());
163 return &message_handler_; 192 return &message_handler_;
164 } 193 }
165 194
166 NetInternalsTestMessageHandler message_handler_; 195 NetInternalsTestMessageHandler message_handler_;
167 196
168 DISALLOW_COPY_AND_ASSIGN(NetInternalsTest); 197 DISALLOW_COPY_AND_ASSIGN(NetInternalsTest);
169 }; 198 };
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsHSTSViewAddTwice")); 413 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsHSTSViewAddTwice"));
385 } 414 }
386 415
387 //////////////////////////////////////////////////////////////////////////////// 416 ////////////////////////////////////////////////////////////////////////////////
388 // prerender_view.js 417 // prerender_view.js
389 //////////////////////////////////////////////////////////////////////////////// 418 ////////////////////////////////////////////////////////////////////////////////
390 419
391 // Prerender a page and navigate to it, once prerendering starts. 420 // Prerender a page and navigate to it, once prerendering starts.
392 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderViewSucceed) { 421 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderViewSucceed) {
393 ASSERT_TRUE(test_server()->Start()); 422 ASSERT_TRUE(test_server()->Start());
394 EXPECT_TRUE(RunJavascriptAsyncTest( 423 GURL prerender_url = test_server()->GetURL("files/title1.html");
395 "netInternalsPrerenderView", 424 GURL loader_url = CreatePrerenderLoaderUrl(prerender_url);
396 // URL that can be prerendered. 425 ConstValueVector args;
397 Value::CreateStringValue( 426 args.push_back(Value::CreateStringValue(prerender_url.spec()));
398 test_server()->GetURL("files/title1.html").spec()), 427 args.push_back(Value::CreateStringValue(loader_url.spec()));
399 Value::CreateBooleanValue(true), 428 args.push_back(Value::CreateBooleanValue(true));
400 Value::CreateStringValue( 429 args.push_back(Value::CreateStringValue(
401 prerender::NameFromFinalStatus(prerender::FINAL_STATUS_USED)))); 430 prerender::NameFromFinalStatus(prerender::FINAL_STATUS_USED)));
431 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsPrerenderView", args));
402 } 432 }
403 433
404 // Prerender a page that is expected to fail. 434 // Prerender a page that is expected to fail.
405 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderViewFail) { 435 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderViewFail) {
406 ASSERT_TRUE(test_server()->Start()); 436 ASSERT_TRUE(test_server()->Start());
407 EXPECT_TRUE(RunJavascriptAsyncTest( 437 GURL prerender_url = test_server()->GetURL("files/download-test1.lib");
408 "netInternalsPrerenderView", 438 GURL loader_url = CreatePrerenderLoaderUrl(prerender_url);
409 // URL that can't be prerendered, since it triggers a download. 439 ConstValueVector args;
410 Value::CreateStringValue( 440 args.push_back(Value::CreateStringValue(prerender_url.spec()));
411 test_server()->GetURL("files/download-test1.lib").spec()), 441 args.push_back(Value::CreateStringValue(loader_url.spec()));
412 Value::CreateBooleanValue(false), 442 args.push_back(Value::CreateBooleanValue(false));
413 Value::CreateStringValue( 443 args.push_back(Value::CreateStringValue(
414 prerender::NameFromFinalStatus(prerender::FINAL_STATUS_DOWNLOAD)))); 444 prerender::NameFromFinalStatus(prerender::FINAL_STATUS_DOWNLOAD)));
445 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsPrerenderView", args));
415 } 446 }
416 447
417 //////////////////////////////////////////////////////////////////////////////// 448 ////////////////////////////////////////////////////////////////////////////////
418 // log_view_painter.js 449 // log_view_painter.js
419 //////////////////////////////////////////////////////////////////////////////// 450 ////////////////////////////////////////////////////////////////////////////////
420 451
421 // Check that we correctly remove cookies and login information. 452 // Check that we correctly remove cookies and login information.
422 IN_PROC_BROWSER_TEST_F(NetInternalsTest, 453 IN_PROC_BROWSER_TEST_F(NetInternalsTest,
423 NetInternalsLogViewPainterStripInfo) { 454 NetInternalsLogViewPainterStripInfo) {
424 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsLogViewPainterStripInfo")); 455 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsLogViewPainterStripInfo"));
425 } 456 }
426 457
427 } // namespace 458 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698