Chromium Code Reviews| Index: chrome/browser/ui/webui/net_internals_ui_browsertest.cc |
| =================================================================== |
| --- chrome/browser/ui/webui/net_internals_ui_browsertest.cc (revision 112237) |
| +++ chrome/browser/ui/webui/net_internals_ui_browsertest.cc (working copy) |
| @@ -73,97 +73,6 @@ |
| expires); |
| } |
| -// Class to handle messages from the renderer needed by certain tests. |
| -class NetInternalsTestMessageHandler : public WebUIMessageHandler { |
| - public: |
| - NetInternalsTestMessageHandler(); |
| - |
| - void set_browser(Browser* browser) { |
| - ASSERT_TRUE(browser); |
| - browser_ = browser; |
| - } |
| - |
| - private: |
| - virtual void RegisterMessages() OVERRIDE; |
| - |
| - // Opens the given URL in a new background tab. |
| - void OpenNewTab(const ListValue* list_value); |
| - |
| - // Adds a new entry to the host cache. Takes in hostname, ip address, |
| - // net error code, and expiration time (as number of days from now). |
| - void AddCacheEntry(const ListValue* list_value); |
| - |
| - // Navigates to the prerender in the background tab. This assumes that |
| - // there is a "Click()" function in the background tab which will navigate |
| - // there, and that the background tab exists at slot 1. |
| - void NavigateToPrerender(const ListValue* list_value); |
| - |
| - Browser* browser_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(NetInternalsTestMessageHandler); |
| -}; |
| - |
| -NetInternalsTestMessageHandler::NetInternalsTestMessageHandler() |
| - : browser_(NULL) { |
| -} |
| - |
| -void NetInternalsTestMessageHandler::RegisterMessages() { |
| - web_ui_->RegisterMessageCallback( |
| - "openNewTab", |
| - base::Bind(&NetInternalsTestMessageHandler::OpenNewTab, |
| - base::Unretained(this))); |
| - web_ui_->RegisterMessageCallback( |
| - "addCacheEntry", |
| - base::Bind(&NetInternalsTestMessageHandler::AddCacheEntry, |
| - base::Unretained(this))); |
| - web_ui_->RegisterMessageCallback("navigateToPrerender", |
| - base::Bind(&NetInternalsTestMessageHandler::NavigateToPrerender, |
| - base::Unretained(this))); |
| -} |
| - |
| -void NetInternalsTestMessageHandler::OpenNewTab(const ListValue* list_value) { |
| - std::string url; |
| - ASSERT_TRUE(list_value->GetString(0, &url)); |
| - ASSERT_TRUE(browser_); |
| - ui_test_utils::NavigateToURLWithDisposition( |
| - browser_, |
| - GURL(url), |
| - NEW_BACKGROUND_TAB, |
| - ui_test_utils::BROWSER_TEST_NONE); |
| -} |
| - |
| -// Called on UI thread. Adds an entry to the cache for the specified hostname |
| -// by posting a task to the IO thread. Takes the host name, ip address, net |
| -// error code, and expiration time in days from now as parameters. If the error |
| -// code indicates failure, the ip address must be an empty string. |
| -void NetInternalsTestMessageHandler::AddCacheEntry( |
| - const ListValue* list_value) { |
| - std::string hostname; |
| - std::string ip_literal; |
| - double net_error; |
| - double expire_days_from_now; |
| - ASSERT_TRUE(list_value->GetString(0, &hostname)); |
| - ASSERT_TRUE(list_value->GetString(1, &ip_literal)); |
| - ASSERT_TRUE(list_value->GetDouble(2, &net_error)); |
| - ASSERT_TRUE(list_value->GetDouble(3, &expire_days_from_now)); |
| - ASSERT_TRUE(browser_); |
| - |
| - BrowserThread::PostTask( |
| - BrowserThread::IO, FROM_HERE, |
| - base::Bind(&AddCacheEntryOnIOThread, |
| - make_scoped_refptr(browser_->profile()->GetRequestContext()), |
| - hostname, |
| - ip_literal, |
| - static_cast<int>(net_error), |
| - static_cast<int>(expire_days_from_now))); |
| -} |
| - |
| -void NetInternalsTestMessageHandler::NavigateToPrerender( |
| - const ListValue* list_value) { |
| - RenderViewHost* host = browser_->GetTabContentsAt(1)->render_view_host(); |
| - host->ExecuteJavascriptInWebFrame(string16(), ASCIIToUTF16("Click()")); |
| -} |
| - |
| class NetInternalsTest : public WebUIBrowserTest { |
| public: |
| NetInternalsTest(); |
| @@ -189,17 +98,56 @@ |
| } |
| private: |
| + // Class to handle messages from the renderer needed by certain tests. |
| + class MessageHandler : public WebUIMessageHandler { |
| + public: |
| + explicit MessageHandler(NetInternalsTest* net_internals_test); |
| + |
| + private: |
| + virtual void RegisterMessages() OVERRIDE; |
| + |
| + // Opens the given URL in a new background tab. |
| + void OpenNewTab(const ListValue* list_value); |
| + |
| + // Called on UI thread. Adds an entry to the cache for the specified |
| + // hostname by posting a task to the IO thread. Takes the host name, |
| + // ip address, net error code, and expiration time in days from now |
| + // as parameters. If the error code indicates failure, the ip address |
| + // must be an empty string. |
| + void AddCacheEntry(const ListValue* list_value); |
| + |
| + // Navigates to the prerender in the background tab. This assumes that |
| + // there is a "Click()" function in the background tab which will navigate |
| + // there, and that the background tab exists at slot 1. |
| + void NavigateToPrerender(const ListValue* list_value); |
| + |
| + // Creates an incognito browser. |
| + void CreateIncognitoBrowser(const ListValue* list_value); |
| + |
| + // Closes an incognito browser created with CreateIncognitoBrowser. |
| + void CloseIncognitoBrowser(const ListValue* list_value); |
| + |
| + Browser* browser() { |
| + return net_internals_test_->browser(); |
| + } |
| + |
| + NetInternalsTest* net_internals_test_; |
| + Browser* incognito_browser_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(MessageHandler); |
| + }; |
| + |
| virtual WebUIMessageHandler* GetMockMessageHandler() OVERRIDE { |
| - message_handler_.set_browser(browser()); |
| return &message_handler_; |
| } |
| - NetInternalsTestMessageHandler message_handler_; |
| + MessageHandler message_handler_; |
| DISALLOW_COPY_AND_ASSIGN(NetInternalsTest); |
| }; |
| -NetInternalsTest::NetInternalsTest() { |
| +NetInternalsTest::NetInternalsTest() |
| + : ALLOW_THIS_IN_INITIALIZER_LIST(message_handler_(this)) { |
| } |
| NetInternalsTest::~NetInternalsTest() { |
| @@ -244,6 +192,88 @@ |
| } |
| //////////////////////////////////////////////////////////////////////////////// |
| +// NetInternalsTest::MessageHandler |
| +//////////////////////////////////////////////////////////////////////////////// |
| + |
| +NetInternalsTest::MessageHandler::MessageHandler( |
| + NetInternalsTest* net_internals_test) |
| + : net_internals_test_(net_internals_test), |
| + incognito_browser_(NULL) { |
| +} |
| + |
| +void NetInternalsTest::MessageHandler::RegisterMessages() { |
| + web_ui_->RegisterMessageCallback( |
| + "openNewTab", |
| + base::Bind(&NetInternalsTest::MessageHandler::OpenNewTab, |
| + base::Unretained(this))); |
| + web_ui_->RegisterMessageCallback( |
| + "addCacheEntry", |
| + base::Bind(&NetInternalsTest::MessageHandler::AddCacheEntry, |
| + base::Unretained(this))); |
| + web_ui_->RegisterMessageCallback("navigateToPrerender", |
| + base::Bind(&NetInternalsTest::MessageHandler::NavigateToPrerender, |
| + base::Unretained(this))); |
| + web_ui_->RegisterMessageCallback("createIncognitoBrowser", |
| + base::Bind(&NetInternalsTest::MessageHandler::CreateIncognitoBrowser, |
| + base::Unretained(this))); |
| + web_ui_->RegisterMessageCallback("closeIncognitoBrowser", |
| + base::Bind(&NetInternalsTest::MessageHandler::CloseIncognitoBrowser, |
| + base::Unretained(this))); |
| +} |
| + |
| +void NetInternalsTest::MessageHandler::OpenNewTab( |
| + const ListValue* list_value) { |
| + std::string url; |
| + ASSERT_TRUE(list_value->GetString(0, &url)); |
| + ui_test_utils::NavigateToURLWithDisposition( |
| + browser(), |
| + GURL(url), |
| + NEW_BACKGROUND_TAB, |
| + ui_test_utils::BROWSER_TEST_NONE); |
| +} |
| + |
| +void NetInternalsTest::MessageHandler::AddCacheEntry( |
| + const ListValue* list_value) { |
| + std::string hostname; |
| + std::string ip_literal; |
| + double net_error; |
| + double expire_days_from_now; |
| + ASSERT_TRUE(list_value->GetString(0, &hostname)); |
| + ASSERT_TRUE(list_value->GetString(1, &ip_literal)); |
| + ASSERT_TRUE(list_value->GetDouble(2, &net_error)); |
| + ASSERT_TRUE(list_value->GetDouble(3, &expire_days_from_now)); |
| + ASSERT_TRUE(browser()); |
| + |
| + BrowserThread::PostTask( |
| + BrowserThread::IO, FROM_HERE, |
| + base::Bind(&AddCacheEntryOnIOThread, |
| + make_scoped_refptr(browser()->profile()->GetRequestContext()), |
| + hostname, |
| + ip_literal, |
| + static_cast<int>(net_error), |
| + static_cast<int>(expire_days_from_now))); |
| +} |
| + |
| +void NetInternalsTest::MessageHandler::NavigateToPrerender( |
| + const ListValue* list_value) { |
| + RenderViewHost* host = browser()->GetTabContentsAt(1)->render_view_host(); |
| + host->ExecuteJavascriptInWebFrame(string16(), ASCIIToUTF16("Click()")); |
| +} |
| + |
| +void NetInternalsTest::MessageHandler::CreateIncognitoBrowser( |
| + const ListValue* list_value) { |
| + ASSERT_FALSE(incognito_browser_); |
| + incognito_browser_ = net_internals_test_->CreateIncognitoBrowser(); |
| +} |
| + |
| +void NetInternalsTest::MessageHandler::CloseIncognitoBrowser( |
| + const ListValue* list_value) { |
| + ASSERT_TRUE(incognito_browser_); |
| + incognito_browser_->CloseAllTabs(); |
| + incognito_browser_ = NULL; |
|
eroman
2011/12/05 21:10:49
What code is responsible for freeing the Browser*
mmenke
2011/12/05 22:28:00
Browser objects are automatically destroyed once t
|
| +} |
| + |
| +//////////////////////////////////////////////////////////////////////////////// |
| // net_internals_ui.js |
| //////////////////////////////////////////////////////////////////////////////// |
| @@ -368,6 +398,13 @@ |
| EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsDnsViewAddTwoTwice")); |
| } |
| +// Makes sure that openning and then closing an incognito window clears the |
| +// DNS cache. To keep things simple, we add a fake cache entry ourselves, |
| +// rather than having the incognito browser create one. |
| +IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsDnsViewIncognitoClears) { |
| + EXPECT_TRUE(RunJavascriptAsyncTest("netInternalsDnsViewIncognitoClears")); |
| +} |
| + |
| //////////////////////////////////////////////////////////////////////////////// |
| // test_view.js |
| //////////////////////////////////////////////////////////////////////////////// |