Index: chrome/browser/ui/webui/net_internals_ui_browsertest.cc |
=================================================================== |
--- chrome/browser/ui/webui/net_internals_ui_browsertest.cc (revision 96293) |
+++ chrome/browser/ui/webui/net_internals_ui_browsertest.cc (working copy) |
@@ -5,6 +5,7 @@ |
#include "base/command_line.h" |
#include "base/file_path.h" |
#include "base/utf_string_conversions.h" |
+#include "chrome/browser/prerender/prerender_final_status.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/webui/web_ui_browsertest.h" |
#include "chrome/common/chrome_switches.h" |
@@ -19,6 +20,47 @@ |
const string16 kPassTitle = ASCIIToUTF16("Test Passed"); |
const string16 kFailTitle = ASCIIToUTF16("Test Failed"); |
+// 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 tab. |
+ void OpenNewTab(const ListValue* list_value); |
+ |
+ Browser* browser_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(NetInternalsTestMessageHandler); |
+}; |
+ |
+NetInternalsTestMessageHandler::NetInternalsTestMessageHandler() |
+ : browser_(NULL) { |
+} |
+ |
+void NetInternalsTestMessageHandler::RegisterMessages() { |
+ web_ui_->RegisterMessageCallback("openNewTab", NewCallback( |
+ this, &NetInternalsTestMessageHandler::OpenNewTab)); |
+} |
+ |
+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); |
+} |
+ |
// Each test involves calls a single Javascript function and then waits for the |
// title to be changed to "Test Passed" or "Test Failed" when done. |
class NetInternalsTest : public WebUIBrowserTest { |
@@ -48,6 +90,13 @@ |
void set_expected_title_(const string16& value) { expected_title_ = value; } |
private: |
+ virtual WebUIMessageHandler* GetMockMessageHandler() OVERRIDE { |
+ message_handler_.set_browser(browser()); |
+ return &message_handler_; |
+ } |
+ |
+ NetInternalsTestMessageHandler message_handler_; |
+ |
// The expected title at the end of the test. Defaults to kPassTitle. |
string16 expected_title_; |
@@ -135,7 +184,7 @@ |
} |
//////////////////////////////////////////////////////////////////////////////// |
-// framework.js |
+// net_internals_ui.js |
//////////////////////////////////////////////////////////////////////////////// |
// Checks testDone. |
@@ -213,19 +262,30 @@ |
// prerender_view.js |
//////////////////////////////////////////////////////////////////////////////// |
-// Prerender two pages and check PrerenderView behavior. The first is expected |
-// to fail, the second is expected to succeed. |
-// Test flaky on XP due to http://crbug.com/91799. |
-IN_PROC_BROWSER_TEST_F(NetInternalsTest, FLAKY_NetInternalsPrerenderView) { |
+// Prerender a page and navigate to it, once prerendering starts. |
+IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderViewSucceed) { |
ASSERT_TRUE(test_server()->Start()); |
RunTestAndWaitForTitle( |
"NetInternalsPrerenderView", |
+ // URL that can be prerendered. |
+ Value::CreateStringValue( |
+ test_server()->GetURL("files/title1.html").spec()), |
+ Value::CreateBooleanValue(true), |
+ Value::CreateStringValue( |
+ prerender::NameFromFinalStatus(prerender::FINAL_STATUS_USED))); |
+} |
+ |
+// Prerender a page that is expected to fail. |
+IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderViewFail) { |
+ ASSERT_TRUE(test_server()->Start()); |
+ RunTestAndWaitForTitle( |
+ "NetInternalsPrerenderView", |
// URL that can't be prerendered, since it triggers a download. |
Value::CreateStringValue( |
test_server()->GetURL("files/download-test1.lib").spec()), |
- // URL that can be prerendered. |
+ Value::CreateBooleanValue(false), |
Value::CreateStringValue( |
- test_server()->GetURL("files/title1.html").spec())); |
+ prerender::NameFromFinalStatus(prerender::FINAL_STATUS_DOWNLOAD))); |
} |
//////////////////////////////////////////////////////////////////////////////// |