Chromium Code Reviews| 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 | |
|
mmenke
2011/11/02 16:19:17
nit: Blank line isn't needed here.
| |
| 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(); | |
|
mmenke
2011/11/02 16:19:17
nit: Should indent two spaces here.
cbentzel
2011/11/02 16:55:52
Oi. Do you know of anything for VS which indents c
cbentzel
2011/11/02 17:13:49
Done.
mmenke
2011/11/02 17:44:07
Visual studio indents correctly, it's just emacs a
| |
| 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 |