OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |