Chromium Code Reviews| Index: chrome/browser/ui/webui/net_internals_ui_browsertest.cc |
| =================================================================== |
| --- chrome/browser/ui/webui/net_internals_ui_browsertest.cc (revision 0) |
| +++ chrome/browser/ui/webui/net_internals_ui_browsertest.cc (revision 0) |
| @@ -0,0 +1,237 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "base/command_line.h" |
| +#include "base/file_path.h" |
| +#include "base/utf_string_conversions.h" |
| +#include "chrome/browser/ui/browser.h" |
| +#include "chrome/browser/ui/webui/web_ui_browsertest.h" |
| +#include "chrome/common/chrome_switches.h" |
| +#include "chrome/common/url_constants.h" |
| +#include "chrome/test/base/ui_test_utils.h" |
| +#include "googleurl/src/gurl.h" |
| +#include "net/base/net_errors.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace { |
| + |
| +const string16 kPassTitle = ASCIIToUTF16("Test Passed"); |
| +const string16 kFailTitle = ASCIIToUTF16("Test Failed"); |
| + |
| +// 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 { |
| + public: |
| + NetInternalsTest(); |
| + virtual ~NetInternalsTest(); |
| + |
| + // InProcessBrowserTest overrides. |
| + virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; |
| + virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; |
| + virtual void SetUpOnMainThread() OVERRIDE; |
| + |
|
eroman
2011/08/03 00:32:24
nit: can you remove this blank line?
mmenke
2011/08/03 15:44:17
Done
|
| + |
| + // Runs the specified Javascript test function with the specified arguments |
| + // and waits for the title to change to "Test Passed" or "Test Failed". |
| + void RunTestAndWaitForTitle(const std::string& function_name, |
| + const ListValue& function_arguments); |
| + |
| + // Same as above, with constant number of arguments for easy use. Will also |
| + // free arguments. |
| + void RunTestAndWaitForTitle(const std::string& function_name); |
| + void RunTestAndWaitForTitle(const std::string& function_name, Value* arg); |
| + void RunTestAndWaitForTitle(const std::string& function_name, |
| + Value* arg1, Value* arg2); |
| + void RunTestAndWaitForTitle(const std::string& function_name, |
| + Value* arg1, Value* arg2, Value* arg3); |
| + |
| + void set_expected_title_(string16 value) { expected_title_ = value; } |
|
eroman
2011/08/03 00:32:24
nit: |const string16&|
mmenke
2011/08/03 15:44:17
Done.
|
| + |
| + private: |
| + // The expected title at the end of the test. Defaults to kPassTitle. |
| + string16 expected_title_; |
|
eroman
2011/08/03 00:32:24
nit: DISABLE_COPY_AN_ASSIGN(NetInternalsTest);
mmenke
2011/08/03 15:44:17
Done.
|
| +}; |
| + |
| +NetInternalsTest::NetInternalsTest() : expected_title_(kPassTitle) { |
|
eroman
2011/08/03 00:32:24
I believe the constructor is run once for each of
mmenke
2011/08/03 00:53:22
The constructor is indeed called once for each *_T
|
| +} |
| + |
| +NetInternalsTest::~NetInternalsTest() { |
| +} |
| + |
| +void NetInternalsTest::SetUpCommandLine(CommandLine* command_line) { |
| + WebUIBrowserTest::SetUpCommandLine(command_line); |
| + // Needed to test the prerender view. |
| + command_line->AppendSwitchASCII(switches::kPrerender, |
| + switches::kPrerenderSwitchValueEnabled); |
| +} |
| + |
| +void NetInternalsTest::SetUpInProcessBrowserTestFixture() { |
| + WebUIBrowserTest::SetUpInProcessBrowserTestFixture(); |
| + |
| + // Add Javascript files needed for the tests. Must be added after |
| + // WebUIBrowserTest adds its files. |
| + AddLibrary(FilePath(FILE_PATH_LITERAL("net_internals/framework.js"))); |
| + |
| + AddLibrary(FilePath(FILE_PATH_LITERAL("net_internals/log_view_painter.js"))); |
| + AddLibrary(FilePath(FILE_PATH_LITERAL("net_internals/prerender_view.js"))); |
| + AddLibrary(FilePath(FILE_PATH_LITERAL("net_internals/test_view.js"))); |
| +} |
| + |
| +void NetInternalsTest::SetUpOnMainThread() { |
| + // Navigate to the net-internals page. |
| + ui_test_utils::NavigateToURL(browser(), |
| + GURL(chrome::kChromeUINetInternalsURL)); |
| +} |
| + |
| +void NetInternalsTest::RunTestAndWaitForTitle( |
| + const std::string& function_name, |
| + const ListValue& function_arguments) { |
| + ui_test_utils::TitleWatcher title_watcher(browser()->GetTabContentsAt(0), |
| + kPassTitle); |
| + title_watcher.AddTitle(kFailTitle); |
| + |
| + ConstValueVector arguments; |
| + StringValue function_name_arg(function_name); |
| + arguments.push_back(&function_name_arg); |
| + arguments.push_back(&function_arguments); |
| + |
| + ASSERT_TRUE(RunJavascriptFunction("runNetInternalsTest", arguments)); |
| + ASSERT_EQ(expected_title_, title_watcher.Wait()); |
| +} |
| + |
| +void NetInternalsTest::RunTestAndWaitForTitle( |
| + const std::string& function_name) { |
| + ListValue test_arguments; |
| + RunTestAndWaitForTitle(function_name, test_arguments); |
| +} |
| + |
| +void NetInternalsTest::RunTestAndWaitForTitle(const std::string& function_name, |
| + Value* arg) { |
| + ListValue test_arguments; |
| + test_arguments.Append(arg); |
| + RunTestAndWaitForTitle(function_name, test_arguments); |
| +} |
| + |
| +void NetInternalsTest::RunTestAndWaitForTitle(const std::string& function_name, |
| + Value* arg1, Value* arg2) { |
| + ListValue test_arguments; |
| + test_arguments.Append(arg1); |
| + test_arguments.Append(arg2); |
| + RunTestAndWaitForTitle(function_name, test_arguments); |
| +} |
| + |
| +void NetInternalsTest::RunTestAndWaitForTitle(const std::string& function_name, |
| + Value* arg1, Value* arg2, |
| + Value* arg3) { |
| + ListValue test_arguments; |
| + test_arguments.Append(arg1); |
| + test_arguments.Append(arg2); |
| + test_arguments.Append(arg3); |
| + RunTestAndWaitForTitle(function_name, test_arguments); |
| +} |
| + |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// framework.js |
| +//////////////////////////////////////////////////////////////////////////////// |
| + |
| +// Checks testDone. |
| +IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsDone) { |
| + RunTestAndWaitForTitle("NetInternalsDone"); |
| +} |
| + |
| +// Checks a failed expect statement. |
| +IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsExpectFail) { |
| + set_expected_title_(kFailTitle); |
| + RunTestAndWaitForTitle("NetInternalsExpectFail"); |
| +} |
| + |
| +// Checks a failed assert statement. |
| +IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsAssertFail) { |
| + set_expected_title_(kFailTitle); |
| + RunTestAndWaitForTitle("NetInternalsAssertFail"); |
| +} |
| + |
| +// Checks that testDone works when called by an observer in response to an |
| +// event. |
| +IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsObserverDone) { |
| + RunTestAndWaitForTitle("NetInternalsObserverDone"); |
| +} |
| + |
| +// Checks that a failed expect works when called by an observer in response |
| +// to an event. |
| +IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsObserverExpectFail) { |
| + set_expected_title_(kFailTitle); |
| + RunTestAndWaitForTitle("NetInternalsObserverExpectFail"); |
| +} |
| + |
| +// Checks that a failed assertion works when called by an observer in response |
| +// to an event. |
| +IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsObserverAssertFail) { |
| + set_expected_title_(kFailTitle); |
| + RunTestAndWaitForTitle("NetInternalsObserverAssertFail"); |
| +} |
| + |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// test_view.js |
| +//////////////////////////////////////////////////////////////////////////////// |
| + |
| +// Runs the test suite twice, expecting a passing result the first time. Checks |
| +// the firstresult, the order of events that occur, and the number of rows in |
|
eroman
2011/08/03 00:32:24
nit: firstresult --> first result.
mmenke
2011/08/03 15:44:17
Done.
|
| +// the table. |
| +IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsTestViewPassTwice) { |
| + ASSERT_TRUE(test_server()->Start()); |
| + RunTestAndWaitForTitle( |
| + "NetInternalsTestView", |
| + // URL that results in success. |
| + Value::CreateStringValue( |
| + test_server()->GetURL("files/title1.html").spec()), |
| + // Resulting error code. |
| + Value::CreateIntegerValue(net::OK), |
| + // Number of times to run the test. |
| + Value::CreateIntegerValue(2)); |
| +} |
| + |
| +// Runs the test suite twice, expecting a failing result the first time. Checks |
| +// the first result, the order of events that occur, and the number of rows in |
| +// the table. |
| +IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsTestViewFailTwice) { |
| + RunTestAndWaitForTitle( |
| + "NetInternalsTestView", |
| + // URL that results in an error, due to the port. |
| + Value::CreateStringValue("http://127.0.0.1:7/"), |
| + // Resulting error code. |
| + Value::CreateIntegerValue(net::ERR_UNSAFE_PORT), |
| + // Number of times to run the test. |
| + Value::CreateIntegerValue(2)); |
| +} |
| + |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// prerender_view.js |
| +//////////////////////////////////////////////////////////////////////////////// |
| + |
| +// Prerender two pages and check PrerenderView behavior. The first is expected |
| +// to fail, the second is expected to succeed. |
| +IN_PROC_BROWSER_TEST_F(NetInternalsTest, NetInternalsPrerenderView) { |
| + 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::CreateStringValue( |
| + test_server()->GetURL("files/title1.html").spec())); |
| +} |
| + |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// log_view_painter.js |
| +//////////////////////////////////////////////////////////////////////////////// |
| + |
| +// Check that we correctly remove cookies and login information. |
| +IN_PROC_BROWSER_TEST_F(NetInternalsTest, |
| + NetInternalsLogViewPainterStripInfo) { |
| + RunTestAndWaitForTitle("NetInternalsLogViewPainterStripInfo"); |
| +} |
| + |
| +} // namespace |
| Property changes on: chrome\browser\ui\webui\net_internals_ui_browsertest.cc |
| ___________________________________________________________________ |
| Added: svn:eol-style |
| + LF |