| 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" |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 ASSERT_TRUE(ip_literal.empty()); | 66 ASSERT_TRUE(ip_literal.empty()); |
| 67 } | 67 } |
| 68 | 68 |
| 69 // Add entry to the cache. | 69 // Add entry to the cache. |
| 70 cache->Set(net::HostCache::Key(hostname, net::ADDRESS_FAMILY_UNSPECIFIED, 0), | 70 cache->Set(net::HostCache::Key(hostname, net::ADDRESS_FAMILY_UNSPECIFIED, 0), |
| 71 net_error, | 71 net_error, |
| 72 address_list, | 72 address_list, |
| 73 expires); | 73 expires); |
| 74 } | 74 } |
| 75 | 75 |
| 76 // Class to handle messages from the renderer needed by certain tests. | |
| 77 class NetInternalsTestMessageHandler : public WebUIMessageHandler { | |
| 78 public: | |
| 79 NetInternalsTestMessageHandler(); | |
| 80 | |
| 81 void set_browser(Browser* browser) { | |
| 82 ASSERT_TRUE(browser); | |
| 83 browser_ = browser; | |
| 84 } | |
| 85 | |
| 86 private: | |
| 87 virtual void RegisterMessages() OVERRIDE; | |
| 88 | |
| 89 // Opens the given URL in a new background tab. | |
| 90 void OpenNewTab(const ListValue* list_value); | |
| 91 | |
| 92 // Adds a new entry to the host cache. Takes in hostname, ip address, | |
| 93 // net error code, and expiration time (as number of days from now). | |
| 94 void AddCacheEntry(const ListValue* list_value); | |
| 95 | |
| 96 // Navigates to the prerender in the background tab. This assumes that | |
| 97 // there is a "Click()" function in the background tab which will navigate | |
| 98 // there, and that the background tab exists at slot 1. | |
| 99 void NavigateToPrerender(const ListValue* list_value); | |
| 100 | |
| 101 Browser* browser_; | |
| 102 | |
| 103 DISALLOW_COPY_AND_ASSIGN(NetInternalsTestMessageHandler); | |
| 104 }; | |
| 105 | |
| 106 NetInternalsTestMessageHandler::NetInternalsTestMessageHandler() | |
| 107 : browser_(NULL) { | |
| 108 } | |
| 109 | |
| 110 void NetInternalsTestMessageHandler::RegisterMessages() { | |
| 111 web_ui_->RegisterMessageCallback( | |
| 112 "openNewTab", | |
| 113 base::Bind(&NetInternalsTestMessageHandler::OpenNewTab, | |
| 114 base::Unretained(this))); | |
| 115 web_ui_->RegisterMessageCallback( | |
| 116 "addCacheEntry", | |
| 117 base::Bind(&NetInternalsTestMessageHandler::AddCacheEntry, | |
| 118 base::Unretained(this))); | |
| 119 web_ui_->RegisterMessageCallback("navigateToPrerender", | |
| 120 base::Bind(&NetInternalsTestMessageHandler::NavigateToPrerender, | |
| 121 base::Unretained(this))); | |
| 122 } | |
| 123 | |
| 124 void NetInternalsTestMessageHandler::OpenNewTab(const ListValue* list_value) { | |
| 125 std::string url; | |
| 126 ASSERT_TRUE(list_value->GetString(0, &url)); | |
| 127 ASSERT_TRUE(browser_); | |
| 128 ui_test_utils::NavigateToURLWithDisposition( | |
| 129 browser_, | |
| 130 GURL(url), | |
| 131 NEW_BACKGROUND_TAB, | |
| 132 ui_test_utils::BROWSER_TEST_NONE); | |
| 133 } | |
| 134 | |
| 135 // Called on UI thread. Adds an entry to the cache for the specified hostname | |
| 136 // by posting a task to the IO thread. Takes the host name, ip address, net | |
| 137 // error code, and expiration time in days from now as parameters. If the error | |
| 138 // code indicates failure, the ip address must be an empty string. | |
| 139 void NetInternalsTestMessageHandler::AddCacheEntry( | |
| 140 const ListValue* list_value) { | |
| 141 std::string hostname; | |
| 142 std::string ip_literal; | |
| 143 double net_error; | |
| 144 double expire_days_from_now; | |
| 145 ASSERT_TRUE(list_value->GetString(0, &hostname)); | |
| 146 ASSERT_TRUE(list_value->GetString(1, &ip_literal)); | |
| 147 ASSERT_TRUE(list_value->GetDouble(2, &net_error)); | |
| 148 ASSERT_TRUE(list_value->GetDouble(3, &expire_days_from_now)); | |
| 149 ASSERT_TRUE(browser_); | |
| 150 | |
| 151 BrowserThread::PostTask( | |
| 152 BrowserThread::IO, FROM_HERE, | |
| 153 base::Bind(&AddCacheEntryOnIOThread, | |
| 154 make_scoped_refptr(browser_->profile()->GetRequestContext()), | |
| 155 hostname, | |
| 156 ip_literal, | |
| 157 static_cast<int>(net_error), | |
| 158 static_cast<int>(expire_days_from_now))); | |
| 159 } | |
| 160 | |
| 161 void NetInternalsTestMessageHandler::NavigateToPrerender( | |
| 162 const ListValue* list_value) { | |
| 163 RenderViewHost* host = browser_->GetTabContentsAt(1)->render_view_host(); | |
| 164 host->ExecuteJavascriptInWebFrame(string16(), ASCIIToUTF16("Click()")); | |
| 165 } | |
| 166 | |
| 167 class NetInternalsTest : public WebUIBrowserTest { | 76 class NetInternalsTest : public WebUIBrowserTest { |
| 168 public: | 77 public: |
| 169 NetInternalsTest(); | 78 NetInternalsTest(); |
| 170 virtual ~NetInternalsTest(); | 79 virtual ~NetInternalsTest(); |
| 171 | 80 |
| 172 // InProcessBrowserTest overrides. | 81 // InProcessBrowserTest overrides. |
| 173 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; | 82 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; |
| 174 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; | 83 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; |
| 175 virtual void SetUpOnMainThread() OVERRIDE; | 84 virtual void SetUpOnMainThread() OVERRIDE; |
| 176 | 85 |
| 177 protected: | 86 protected: |
| 178 GURL CreatePrerenderLoaderUrl(const GURL& prerender_url) { | 87 GURL CreatePrerenderLoaderUrl(const GURL& prerender_url) { |
| 179 std::vector<net::TestServer::StringPair> replacement_text; | 88 std::vector<net::TestServer::StringPair> replacement_text; |
| 180 replacement_text.push_back( | 89 replacement_text.push_back( |
| 181 make_pair("REPLACE_WITH_PRERENDER_URL", prerender_url.spec())); | 90 make_pair("REPLACE_WITH_PRERENDER_URL", prerender_url.spec())); |
| 182 std::string replacement_path; | 91 std::string replacement_path; |
| 183 EXPECT_TRUE(net::TestServer::GetFilePathWithReplacements( | 92 EXPECT_TRUE(net::TestServer::GetFilePathWithReplacements( |
| 184 "files/prerender/prerender_loader.html", | 93 "files/prerender/prerender_loader.html", |
| 185 replacement_text, | 94 replacement_text, |
| 186 &replacement_path)); | 95 &replacement_path)); |
| 187 GURL url_loader = test_server()->GetURL(replacement_path); | 96 GURL url_loader = test_server()->GetURL(replacement_path); |
| 188 return url_loader; | 97 return url_loader; |
| 189 } | 98 } |
| 190 | 99 |
| 191 private: | 100 private: |
| 101 // Class to handle messages from the renderer needed by certain tests. |
| 102 class MessageHandler : public WebUIMessageHandler { |
| 103 public: |
| 104 explicit MessageHandler(NetInternalsTest* net_internals_test); |
| 105 |
| 106 private: |
| 107 virtual void RegisterMessages() OVERRIDE; |
| 108 |
| 109 // Opens the given URL in a new background tab. |
| 110 void OpenNewTab(const ListValue* list_value); |
| 111 |
| 112 // Called on UI thread. Adds an entry to the cache for the specified |
| 113 // hostname by posting a task to the IO thread. Takes the host name, |
| 114 // ip address, net error code, and expiration time in days from now |
| 115 // as parameters. If the error code indicates failure, the ip address |
| 116 // must be an empty string. |
| 117 void AddCacheEntry(const ListValue* list_value); |
| 118 |
| 119 // Navigates to the prerender in the background tab. This assumes that |
| 120 // there is a "Click()" function in the background tab which will navigate |
| 121 // there, and that the background tab exists at slot 1. |
| 122 void NavigateToPrerender(const ListValue* list_value); |
| 123 |
| 124 // Creates an incognito browser. |
| 125 void CreateIncognitoBrowser(const ListValue* list_value); |
| 126 |
| 127 // Closes an incognito browser created with CreateIncognitoBrowser. |
| 128 void CloseIncognitoBrowser(const ListValue* list_value); |
| 129 |
| 130 Browser* browser() { |
| 131 return net_internals_test_->browser(); |
| 132 } |
| 133 |
| 134 NetInternalsTest* net_internals_test_; |
| 135 Browser* incognito_browser_; |
| 136 |
| 137 DISALLOW_COPY_AND_ASSIGN(MessageHandler); |
| 138 }; |
| 139 |
| 192 virtual WebUIMessageHandler* GetMockMessageHandler() OVERRIDE { | 140 virtual WebUIMessageHandler* GetMockMessageHandler() OVERRIDE { |
| 193 message_handler_.set_browser(browser()); | |
| 194 return &message_handler_; | 141 return &message_handler_; |
| 195 } | 142 } |
| 196 | 143 |
| 197 NetInternalsTestMessageHandler message_handler_; | 144 MessageHandler message_handler_; |
| 198 | 145 |
| 199 DISALLOW_COPY_AND_ASSIGN(NetInternalsTest); | 146 DISALLOW_COPY_AND_ASSIGN(NetInternalsTest); |
| 200 }; | 147 }; |
| 201 | 148 |
| 202 NetInternalsTest::NetInternalsTest() { | 149 NetInternalsTest::NetInternalsTest() |
| 150 : ALLOW_THIS_IN_INITIALIZER_LIST(message_handler_(this)) { |
| 203 } | 151 } |
| 204 | 152 |
| 205 NetInternalsTest::~NetInternalsTest() { | 153 NetInternalsTest::~NetInternalsTest() { |
| 206 } | 154 } |
| 207 | 155 |
| 208 void NetInternalsTest::SetUpCommandLine(CommandLine* command_line) { | 156 void NetInternalsTest::SetUpCommandLine(CommandLine* command_line) { |
| 209 WebUIBrowserTest::SetUpCommandLine(command_line); | 157 WebUIBrowserTest::SetUpCommandLine(command_line); |
| 210 // Needed to test the prerender view. | 158 // Needed to test the prerender view. |
| 211 command_line->AppendSwitchASCII(switches::kPrerenderMode, | 159 command_line->AppendSwitchASCII(switches::kPrerenderMode, |
| 212 switches::kPrerenderModeSwitchValueEnabled); | 160 switches::kPrerenderModeSwitchValueEnabled); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 237 GURL(chrome::kChromeUINetInternalsURL)); | 185 GURL(chrome::kChromeUINetInternalsURL)); |
| 238 // Increase the memory allowed in a prerendered page above normal settings, | 186 // Increase the memory allowed in a prerendered page above normal settings, |
| 239 // as debug builds use more memory and often go over the usual limit. | 187 // as debug builds use more memory and often go over the usual limit. |
| 240 Profile* profile = browser()->GetSelectedTabContentsWrapper()->profile(); | 188 Profile* profile = browser()->GetSelectedTabContentsWrapper()->profile(); |
| 241 prerender::PrerenderManager* prerender_manager = | 189 prerender::PrerenderManager* prerender_manager = |
| 242 prerender::PrerenderManagerFactory::GetForProfile(profile); | 190 prerender::PrerenderManagerFactory::GetForProfile(profile); |
| 243 prerender_manager->mutable_config().max_bytes = 1000 * 1024 * 1024; | 191 prerender_manager->mutable_config().max_bytes = 1000 * 1024 * 1024; |
| 244 } | 192 } |
| 245 | 193 |
| 246 //////////////////////////////////////////////////////////////////////////////// | 194 //////////////////////////////////////////////////////////////////////////////// |
| 195 // NetInternalsTest::MessageHandler |
| 196 //////////////////////////////////////////////////////////////////////////////// |
| 197 |
| 198 NetInternalsTest::MessageHandler::MessageHandler( |
| 199 NetInternalsTest* net_internals_test) |
| 200 : net_internals_test_(net_internals_test), |
| 201 incognito_browser_(NULL) { |
| 202 } |
| 203 |
| 204 void NetInternalsTest::MessageHandler::RegisterMessages() { |
| 205 web_ui_->RegisterMessageCallback( |
| 206 "openNewTab", |
| 207 base::Bind(&NetInternalsTest::MessageHandler::OpenNewTab, |
| 208 base::Unretained(this))); |
| 209 web_ui_->RegisterMessageCallback( |
| 210 "addCacheEntry", |
| 211 base::Bind(&NetInternalsTest::MessageHandler::AddCacheEntry, |
| 212 base::Unretained(this))); |
| 213 web_ui_->RegisterMessageCallback("navigateToPrerender", |
| 214 base::Bind(&NetInternalsTest::MessageHandler::NavigateToPrerender, |
| 215 base::Unretained(this))); |
| 216 web_ui_->RegisterMessageCallback("createIncognitoBrowser", |
| 217 base::Bind(&NetInternalsTest::MessageHandler::CreateIncognitoBrowser, |
| 218 base::Unretained(this))); |
| 219 web_ui_->RegisterMessageCallback("closeIncognitoBrowser", |
| 220 base::Bind(&NetInternalsTest::MessageHandler::CloseIncognitoBrowser, |
| 221 base::Unretained(this))); |
| 222 } |
| 223 |
| 224 void NetInternalsTest::MessageHandler::OpenNewTab( |
| 225 const ListValue* list_value) { |
| 226 std::string url; |
| 227 ASSERT_TRUE(list_value->GetString(0, &url)); |
| 228 ui_test_utils::NavigateToURLWithDisposition( |
| 229 browser(), |
| 230 GURL(url), |
| 231 NEW_BACKGROUND_TAB, |
| 232 ui_test_utils::BROWSER_TEST_NONE); |
| 233 } |
| 234 |
| 235 void NetInternalsTest::MessageHandler::AddCacheEntry( |
| 236 const ListValue* list_value) { |
| 237 std::string hostname; |
| 238 std::string ip_literal; |
| 239 double net_error; |
| 240 double expire_days_from_now; |
| 241 ASSERT_TRUE(list_value->GetString(0, &hostname)); |
| 242 ASSERT_TRUE(list_value->GetString(1, &ip_literal)); |
| 243 ASSERT_TRUE(list_value->GetDouble(2, &net_error)); |
| 244 ASSERT_TRUE(list_value->GetDouble(3, &expire_days_from_now)); |
| 245 ASSERT_TRUE(browser()); |
| 246 |
| 247 BrowserThread::PostTask( |
| 248 BrowserThread::IO, FROM_HERE, |
| 249 base::Bind(&AddCacheEntryOnIOThread, |
| 250 make_scoped_refptr(browser()->profile()->GetRequestContext()), |
| 251 hostname, |
| 252 ip_literal, |
| 253 static_cast<int>(net_error), |
| 254 static_cast<int>(expire_days_from_now))); |
| 255 } |
| 256 |
| 257 void NetInternalsTest::MessageHandler::NavigateToPrerender( |
| 258 const ListValue* list_value) { |
| 259 RenderViewHost* host = browser()->GetTabContentsAt(1)->render_view_host(); |
| 260 host->ExecuteJavascriptInWebFrame(string16(), ASCIIToUTF16("Click()")); |
| 261 } |
| 262 |
| 263 void NetInternalsTest::MessageHandler::CreateIncognitoBrowser( |
| 264 const ListValue* list_value) { |
| 265 ASSERT_FALSE(incognito_browser_); |
| 266 incognito_browser_ = net_internals_test_->CreateIncognitoBrowser(); |
| 267 } |
| 268 |
| 269 void NetInternalsTest::MessageHandler::CloseIncognitoBrowser( |
| 270 const ListValue* list_value) { |
| 271 ASSERT_TRUE(incognito_browser_); |
| 272 incognito_browser_->CloseAllTabs(); |
| 273 // Closing all a Browser's tabs will ultimately result in its destruction, |
| 274 // thought it may not have been destroyed yet. |
| 275 incognito_browser_ = NULL; |
| 276 } |
| 277 |
| 278 //////////////////////////////////////////////////////////////////////////////// |
| 247 // net_internals_ui.js | 279 // net_internals_ui.js |
| 248 //////////////////////////////////////////////////////////////////////////////// | 280 //////////////////////////////////////////////////////////////////////////////// |
| 249 | 281 |
| 250 // Checks testDone. | 282 // Checks testDone. |
| 251 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsDone) { | 283 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsDone) { |
| 252 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsDone")); | 284 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsDone")); |
| 253 } | 285 } |
| 254 | 286 |
| 255 // Checks a failed expect statement. | 287 // Checks a failed expect statement. |
| 256 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsExpectFail) { | 288 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsExpectFail) { |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 361 // Adds an expired successful lookup to the DNS cache, then clears the cache. | 393 // Adds an expired successful lookup to the DNS cache, then clears the cache. |
| 362 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsDnsViewExpired) { | 394 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsDnsViewExpired) { |
| 363 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsDnsViewExpired")); | 395 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsDnsViewExpired")); |
| 364 } | 396 } |
| 365 | 397 |
| 366 // Adds two entries to the DNS cache, clears the cache, and then repeats. | 398 // Adds two entries to the DNS cache, clears the cache, and then repeats. |
| 367 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsDnsViewAddTwoTwice) { | 399 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsDnsViewAddTwoTwice) { |
| 368 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsDnsViewAddTwoTwice")); | 400 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsDnsViewAddTwoTwice")); |
| 369 } | 401 } |
| 370 | 402 |
| 403 // Makes sure that openning and then closing an incognito window clears the |
| 404 // DNS cache. To keep things simple, we add a fake cache entry ourselves, |
| 405 // rather than having the incognito browser create one. |
| 406 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsDnsViewIncognitoClears) { |
| 407 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsDnsViewIncognitoClears")); |
| 408 } |
| 409 |
| 371 //////////////////////////////////////////////////////////////////////////////// | 410 //////////////////////////////////////////////////////////////////////////////// |
| 372 // test_view.js | 411 // test_view.js |
| 373 //////////////////////////////////////////////////////////////////////////////// | 412 //////////////////////////////////////////////////////////////////////////////// |
| 374 | 413 |
| 375 // Runs the test suite twice, expecting a passing result the first time. Checks | 414 // Runs the test suite twice, expecting a passing result the first time. Checks |
| 376 // the first result, the order of events that occur, and the number of rows in | 415 // the first result, the order of events that occur, and the number of rows in |
| 377 // the table. | 416 // the table. |
| 378 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsTestViewPassTwice) { | 417 IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsTestViewPassTwice) { |
| 379 ASSERT_TRUE(test_server()->Start()); | 418 ASSERT_TRUE(test_server()->Start()); |
| 380 EXPECT_TRUE(RunJavascriptAsyncTest( | 419 EXPECT_TRUE(RunJavascriptAsyncTest( |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 // log_view_painter.js | 531 // log_view_painter.js |
| 493 //////////////////////////////////////////////////////////////////////////////// | 532 //////////////////////////////////////////////////////////////////////////////// |
| 494 | 533 |
| 495 // Check that we correctly remove cookies and login information. | 534 // Check that we correctly remove cookies and login information. |
| 496 IN_PROC_BROWSER_TEST_F(NetInternalsTest, | 535 IN_PROC_BROWSER_TEST_F(NetInternalsTest, |
| 497 NetInternalsLogViewPainterStripInfo) { | 536 NetInternalsLogViewPainterStripInfo) { |
| 498 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsLogViewPainterStripInfo")); | 537 EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsLogViewPainterStripInfo")); |
| 499 } | 538 } |
| 500 | 539 |
| 501 } // namespace | 540 } // namespace |
| OLD | NEW |