Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/common/url_constants.h" | 10 #include "chrome/common/url_constants.h" |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 74 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIDownloadsURL)); | 74 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIDownloadsURL)); |
| 75 EXPECT_FATAL_FAILURE( | 75 EXPECT_FATAL_FAILURE( |
| 76 RunJavascriptAsyncTestNoReturn("DISABLED_BogusFunctionName"), | 76 RunJavascriptAsyncTestNoReturn("DISABLED_BogusFunctionName"), |
| 77 "WebUITestHandler::JavaScriptComplete"); | 77 "WebUITestHandler::JavaScriptComplete"); |
| 78 } | 78 } |
| 79 | 79 |
| 80 // Tests that the async framework works. | 80 // Tests that the async framework works. |
| 81 class WebUIBrowserAsyncTest : public WebUIBrowserTest { | 81 class WebUIBrowserAsyncTest : public WebUIBrowserTest { |
| 82 public: | 82 public: |
| 83 // Calls the testDone() function from test_api.js | 83 // Calls the testDone() function from test_api.js |
| 84 void TestDone() { | 84 void TestDone() { RunJavascriptFunction("testDone"); } |
|
Peter Lundblad
2014/06/08 23:27:22
Is this file *just* git cl format or is there any
David Tseng
2014/06/10 05:35:22
reverted file.
| |
| 85 RunJavascriptFunction("testDone"); | |
| 86 } | |
| 87 | 85 |
| 88 // Starts a failing test. | 86 // Starts a failing test. |
| 89 void RunTestFailsAssert() { | 87 void RunTestFailsAssert() { |
| 90 RunJavascriptFunction("runAsync", new base::StringValue("testFailsAssert")); | 88 RunJavascriptFunction("runAsync", new base::StringValue("testFailsAssert")); |
| 91 } | 89 } |
| 92 | 90 |
| 93 // Starts a passing test. | 91 // Starts a passing test. |
| 94 void RunTestPasses() { | 92 void RunTestPasses() { |
| 95 RunJavascriptFunction("runAsync", new base::StringValue("testPasses")); | 93 RunJavascriptFunction("runAsync", new base::StringValue("testPasses")); |
| 96 } | 94 } |
| 97 | 95 |
| 98 protected: | 96 protected: |
| 99 WebUIBrowserAsyncTest() {} | 97 WebUIBrowserAsyncTest() {} |
| 100 | 98 |
| 101 // Class to synchronize asynchronous javascript activity with the tests. | 99 // Class to synchronize asynchronous javascript activity with the tests. |
| 102 class AsyncWebUIMessageHandler : public WebUIMessageHandler { | 100 class AsyncWebUIMessageHandler : public WebUIMessageHandler { |
| 103 public: | 101 public: |
| 104 AsyncWebUIMessageHandler() {} | 102 AsyncWebUIMessageHandler() {} |
| 105 | 103 |
| 106 MOCK_METHOD1(HandleTestContinues, void(const base::ListValue*)); | 104 MOCK_METHOD1(HandleTestContinues, void(const base::ListValue*)); |
| 107 MOCK_METHOD1(HandleTestFails, void(const base::ListValue*)); | 105 MOCK_METHOD1(HandleTestFails, void(const base::ListValue*)); |
| 108 MOCK_METHOD1(HandleTestPasses, void(const base::ListValue*)); | 106 MOCK_METHOD1(HandleTestPasses, void(const base::ListValue*)); |
| 109 | 107 |
| 110 private: | 108 private: |
| 111 virtual void RegisterMessages() OVERRIDE { | 109 virtual void RegisterMessages() OVERRIDE { |
| 112 web_ui()->RegisterMessageCallback("startAsyncTest", | 110 web_ui()->RegisterMessageCallback( |
| 111 "startAsyncTest", | |
| 113 base::Bind(&AsyncWebUIMessageHandler::HandleStartAsyncTest, | 112 base::Bind(&AsyncWebUIMessageHandler::HandleStartAsyncTest, |
| 114 base::Unretained(this))); | 113 base::Unretained(this))); |
| 115 web_ui()->RegisterMessageCallback("testContinues", | 114 web_ui()->RegisterMessageCallback( |
| 115 "testContinues", | |
| 116 base::Bind(&AsyncWebUIMessageHandler::HandleTestContinues, | 116 base::Bind(&AsyncWebUIMessageHandler::HandleTestContinues, |
| 117 base::Unretained(this))); | 117 base::Unretained(this))); |
| 118 web_ui()->RegisterMessageCallback("testFails", | 118 web_ui()->RegisterMessageCallback( |
| 119 "testFails", | |
| 119 base::Bind(&AsyncWebUIMessageHandler::HandleTestFails, | 120 base::Bind(&AsyncWebUIMessageHandler::HandleTestFails, |
| 120 base::Unretained(this))); | 121 base::Unretained(this))); |
| 121 web_ui()->RegisterMessageCallback("testPasses", | 122 web_ui()->RegisterMessageCallback( |
| 123 "testPasses", | |
| 122 base::Bind(&AsyncWebUIMessageHandler::HandleTestPasses, | 124 base::Bind(&AsyncWebUIMessageHandler::HandleTestPasses, |
| 123 base::Unretained(this))); | 125 base::Unretained(this))); |
| 124 } | 126 } |
| 125 | 127 |
| 126 // Starts the test in |list_value|[0] with the runAsync wrapper. | 128 // Starts the test in |list_value|[0] with the runAsync wrapper. |
| 127 void HandleStartAsyncTest(const base::ListValue* list_value) { | 129 void HandleStartAsyncTest(const base::ListValue* list_value) { |
| 128 const base::Value* test_name; | 130 const base::Value* test_name; |
| 129 ASSERT_TRUE(list_value->Get(0, &test_name)); | 131 ASSERT_TRUE(list_value->Get(0, &test_name)); |
| 130 web_ui()->CallJavascriptFunction("runAsync", *test_name); | 132 web_ui()->CallJavascriptFunction("runAsync", *test_name); |
| 131 } | 133 } |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 178 // Test that test continues and passes. (Sync version). | 180 // Test that test continues and passes. (Sync version). |
| 179 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestSyncPasses) { | 181 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestSyncPasses) { |
| 180 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 182 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
| 181 ASSERT_TRUE(RunJavascriptTest("testPasses")); | 183 ASSERT_TRUE(RunJavascriptTest("testPasses")); |
| 182 } | 184 } |
| 183 | 185 |
| 184 // Test that test continues and passes. (Async version). | 186 // Test that test continues and passes. (Async version). |
| 185 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPasses) { | 187 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPasses) { |
| 186 ::testing::InSequence s; | 188 ::testing::InSequence s; |
| 187 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 189 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
| 188 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) | 190 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)).WillOnce( |
| 189 .WillOnce(::testing::InvokeWithoutArgs( | 191 ::testing::InvokeWithoutArgs(this, &WebUIBrowserAsyncTest::TestDone)); |
| 190 this, &WebUIBrowserAsyncTest::TestDone)); | 192 ASSERT_TRUE(RunJavascriptAsyncTest("startAsyncTest", |
| 191 ASSERT_TRUE(RunJavascriptAsyncTest( | 193 new base::StringValue("testPasses"))); |
| 192 "startAsyncTest", new base::StringValue("testPasses"))); | |
| 193 } | 194 } |
| 194 | 195 |
| 195 // Test that two tests pass. | 196 // Test that two tests pass. |
| 196 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPassPass) { | 197 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPassPass) { |
| 197 ::testing::InSequence s; | 198 ::testing::InSequence s; |
| 198 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 199 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
| 199 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) | 200 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) |
| 200 .WillOnce(::testing::InvokeWithoutArgs( | 201 .WillOnce(::testing::InvokeWithoutArgs( |
| 201 this, &WebUIBrowserAsyncTest::RunTestPasses)); | 202 this, &WebUIBrowserAsyncTest::RunTestPasses)); |
| 202 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 203 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
| 203 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) | 204 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)).WillOnce( |
| 204 .WillOnce(::testing::InvokeWithoutArgs( | 205 ::testing::InvokeWithoutArgs(this, &WebUIBrowserAsyncTest::TestDone)); |
| 205 this, &WebUIBrowserAsyncTest::TestDone)); | 206 ASSERT_TRUE(RunJavascriptAsyncTest("startAsyncTest", |
| 206 ASSERT_TRUE(RunJavascriptAsyncTest( | 207 new base::StringValue("testPasses"))); |
| 207 "startAsyncTest", new base::StringValue("testPasses"))); | |
| 208 } | 208 } |
| 209 | 209 |
| 210 // Test that first test passes; second fails. | 210 // Test that first test passes; second fails. |
| 211 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPassThenFail) { | 211 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPassThenFail) { |
| 212 ::testing::InSequence s; | 212 ::testing::InSequence s; |
| 213 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 213 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
| 214 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) | 214 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) |
| 215 .WillOnce(::testing::InvokeWithoutArgs( | 215 .WillOnce(::testing::InvokeWithoutArgs( |
| 216 this, &WebUIBrowserAsyncTest::RunTestFailsAssert)); | 216 this, &WebUIBrowserAsyncTest::RunTestFailsAssert)); |
| 217 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); | 217 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); |
| 218 ASSERT_FALSE(RunJavascriptAsyncTest( | 218 ASSERT_FALSE(RunJavascriptAsyncTest("startAsyncTest", |
| 219 "startAsyncTest", new base::StringValue("testPasses"))); | 219 new base::StringValue("testPasses"))); |
| 220 } | 220 } |
| 221 | 221 |
| 222 // Test that testDone() with failure first then sync pass still fails. | 222 // Test that testDone() with failure first then sync pass still fails. |
| 223 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncDoneFailFirstSyncPass) { | 223 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncDoneFailFirstSyncPass) { |
| 224 ::testing::InSequence s; | 224 ::testing::InSequence s; |
| 225 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 225 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
| 226 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); | 226 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); |
| 227 | 227 |
| 228 // Call runAsync directly instead of deferring through startAsyncTest. It will | 228 // Call runAsync directly instead of deferring through startAsyncTest. It will |
| 229 // call testDone() on failure, then return. | 229 // call testDone() on failure, then return. |
| 230 ASSERT_FALSE(RunJavascriptAsyncTest( | 230 ASSERT_FALSE(RunJavascriptAsyncTest( |
| 231 "runAsync", new base::StringValue("testAsyncDoneFailFirstSyncPass"))); | 231 "runAsync", new base::StringValue("testAsyncDoneFailFirstSyncPass"))); |
| 232 } | 232 } |
| 233 | 233 |
| 234 // Test that calling testDone during RunJavascriptAsyncTest still completes | 234 // Test that calling testDone during RunJavascriptAsyncTest still completes |
| 235 // when waiting for async result. This is similar to the previous test, but call | 235 // when waiting for async result. This is similar to the previous test, but call |
| 236 // testDone directly and expect pass result. | 236 // testDone directly and expect pass result. |
| 237 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestTestDoneEarlyPassesAsync) { | 237 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestTestDoneEarlyPassesAsync) { |
| 238 ASSERT_TRUE(RunJavascriptAsyncTest("testDone")); | 238 ASSERT_TRUE(RunJavascriptAsyncTest("testDone")); |
| 239 } | 239 } |
| 240 | 240 |
| 241 // Test that calling testDone during RunJavascriptTest still completes when | 241 // Test that calling testDone during RunJavascriptTest still completes when |
| 242 // waiting for async result. | 242 // waiting for async result. |
| 243 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestTestDoneEarlyPasses) { | 243 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestTestDoneEarlyPasses) { |
| 244 ASSERT_TRUE(RunJavascriptTest("testDone")); | 244 ASSERT_TRUE(RunJavascriptTest("testDone")); |
| 245 } | 245 } |
| OLD | NEW |