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