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 #include "chrome/browser/ui/webui/web_ui_browsertest.h" | 4 #include "chrome/browser/ui/webui/web_ui_browsertest.h" |
5 | 5 |
6 #include <string> | 6 #include <string> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
11 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
12 #include "base/values.h" | 12 #include "base/values.h" |
13 #include "chrome/browser/ui/browser.h" | 13 #include "chrome/browser/ui/browser.h" |
14 #include "chrome/browser/ui/browser_navigator.h" | 14 #include "chrome/browser/ui/browser_navigator.h" |
15 #include "chrome/browser/ui/webui/chrome_web_ui.h" | 15 #include "chrome/browser/ui/webui/chrome_web_ui.h" |
16 #include "chrome/browser/ui/webui/test_chrome_web_ui_factory.h" | |
16 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 17 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
17 #include "chrome/common/chrome_paths.h" | 18 #include "chrome/common/chrome_paths.h" |
18 #include "chrome/common/url_constants.h" | 19 #include "chrome/common/url_constants.h" |
19 #include "chrome/test/base/test_tab_strip_model_observer.h" | 20 #include "chrome/test/base/test_tab_strip_model_observer.h" |
20 #include "chrome/test/base/ui_test_utils.h" | 21 #include "chrome/test/base/ui_test_utils.h" |
21 #include "content/browser/tab_contents/tab_contents.h" | 22 #include "content/browser/tab_contents/tab_contents.h" |
23 #include "testing/gmock/include/gmock/gmock.h" | |
22 #include "testing/gtest/include/gtest/gtest-spi.h" | 24 #include "testing/gtest/include/gtest/gtest-spi.h" |
23 #include "ui/base/resource/resource_bundle.h" | 25 #include "ui/base/resource/resource_bundle.h" |
24 | 26 |
25 namespace { | 27 namespace { |
26 | 28 |
27 const FilePath::CharType kMockJS[] = FILE_PATH_LITERAL("mock4js.js"); | 29 const FilePath::CharType kMockJS[] = FILE_PATH_LITERAL("mock4js.js"); |
28 const FilePath::CharType kWebUILibraryJS[] = FILE_PATH_LITERAL("test_api.js"); | 30 const FilePath::CharType kWebUILibraryJS[] = FILE_PATH_LITERAL("test_api.js"); |
29 const FilePath::CharType kWebUITestFolder[] = FILE_PATH_LITERAL("webui"); | 31 const FilePath::CharType kWebUITestFolder[] = FILE_PATH_LITERAL("webui"); |
30 base::LazyInstance<std::vector<std::string> > error_messages_( | 32 base::LazyInstance<std::vector<std::string> > error_messages_( |
31 base::LINKER_INITIALIZED); | 33 base::LINKER_INITIALIZED); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
67 ConstValueVector args; | 69 ConstValueVector args; |
68 args.push_back(&arg1); | 70 args.push_back(&arg1); |
69 args.push_back(&arg2); | 71 args.push_back(&arg2); |
70 return RunJavascriptFunction(function_name, args); | 72 return RunJavascriptFunction(function_name, args); |
71 } | 73 } |
72 | 74 |
73 bool WebUIBrowserTest::RunJavascriptFunction( | 75 bool WebUIBrowserTest::RunJavascriptFunction( |
74 const std::string& function_name, | 76 const std::string& function_name, |
75 const ConstValueVector& function_arguments) { | 77 const ConstValueVector& function_arguments) { |
76 return RunJavascriptUsingHandler( | 78 return RunJavascriptUsingHandler( |
77 function_name, function_arguments, false, NULL); | 79 function_name, function_arguments, false, false, NULL); |
78 } | 80 } |
79 | 81 |
80 bool WebUIBrowserTest::RunJavascriptTestF(const std::string& test_fixture, | 82 bool WebUIBrowserTest::RunJavascriptTestF(const std::string& test_fixture, |
81 const std::string& test_name) { | 83 const std::string& test_name) { |
82 ConstValueVector args; | 84 ConstValueVector args; |
83 args.push_back(Value::CreateStringValue(test_fixture)); | 85 args.push_back(Value::CreateStringValue(test_fixture)); |
84 args.push_back(Value::CreateStringValue(test_name)); | 86 args.push_back(Value::CreateStringValue(test_name)); |
85 return RunJavascriptTest("RUN_TEST_F", args); | 87 return RunJavascriptTest("RUN_TEST_F", args); |
86 } | 88 } |
87 | 89 |
(...skipping 13 matching lines...) Expand all Loading... | |
101 const Value& arg2) { | 103 const Value& arg2) { |
102 ConstValueVector args; | 104 ConstValueVector args; |
103 args.push_back(&arg1); | 105 args.push_back(&arg1); |
104 args.push_back(&arg2); | 106 args.push_back(&arg2); |
105 return RunJavascriptTest(test_name, args); | 107 return RunJavascriptTest(test_name, args); |
106 } | 108 } |
107 | 109 |
108 bool WebUIBrowserTest::RunJavascriptTest( | 110 bool WebUIBrowserTest::RunJavascriptTest( |
109 const std::string& test_name, | 111 const std::string& test_name, |
110 const ConstValueVector& test_arguments) { | 112 const ConstValueVector& test_arguments) { |
111 return RunJavascriptUsingHandler(test_name, test_arguments, true, NULL); | 113 return RunJavascriptUsingHandler( |
114 test_name, test_arguments, true, false, NULL); | |
115 } | |
116 | |
117 bool WebUIBrowserTest::RunJavascriptAsyncTest(const std::string& test_name) { | |
118 return RunJavascriptAsyncTest(test_name, ConstValueVector()); | |
119 } | |
120 | |
121 bool WebUIBrowserTest::RunJavascriptAsyncTest(const std::string& test_name, | |
122 const Value& arg) { | |
123 ConstValueVector args; | |
124 args.push_back(&arg); | |
125 return RunJavascriptAsyncTest(test_name, args); | |
126 } | |
127 | |
128 bool WebUIBrowserTest::RunJavascriptAsyncTest(const std::string& test_name, | |
129 const Value& arg1, | |
130 const Value& arg2) { | |
131 ConstValueVector args; | |
132 args.push_back(&arg1); | |
133 args.push_back(&arg2); | |
134 return RunJavascriptAsyncTest(test_name, args); | |
135 } | |
136 | |
137 bool WebUIBrowserTest::RunJavascriptAsyncTest( | |
138 const std::string& test_name, | |
139 const ConstValueVector& test_arguments) { | |
140 return RunJavascriptUsingHandler(test_name, test_arguments, true, true, NULL); | |
112 } | 141 } |
113 | 142 |
114 void WebUIBrowserTest::PreLoadJavascriptLibraries( | 143 void WebUIBrowserTest::PreLoadJavascriptLibraries( |
115 const std::string& preload_test_fixture, | 144 const std::string& preload_test_fixture, |
116 const std::string& preload_test_name, | 145 const std::string& preload_test_name, |
117 RenderViewHost* preload_host) { | 146 RenderViewHost* preload_host) { |
118 ASSERT_FALSE(libraries_preloaded_); | 147 ASSERT_FALSE(libraries_preloaded_); |
119 ConstValueVector args; | 148 ConstValueVector args; |
120 args.push_back(Value::CreateStringValue(preload_test_fixture)); | 149 args.push_back(Value::CreateStringValue(preload_test_fixture)); |
121 args.push_back(Value::CreateStringValue(preload_test_name)); | 150 args.push_back(Value::CreateStringValue(preload_test_name)); |
122 RunJavascriptUsingHandler( | 151 RunJavascriptUsingHandler( |
123 "preloadJavascriptLibraries", args, false, preload_host); | 152 "preloadJavascriptLibraries", args, false, false, preload_host); |
124 libraries_preloaded_ = true; | 153 libraries_preloaded_ = true; |
125 } | 154 } |
126 | 155 |
127 void WebUIBrowserTest::BrowsePreload(const GURL& browse_to, | 156 void WebUIBrowserTest::BrowsePreload(const GURL& browse_to, |
128 const std::string& preload_test_fixture, | 157 const std::string& preload_test_fixture, |
129 const std::string& preload_test_name) { | 158 const std::string& preload_test_name) { |
130 // Remember for callback OnJsInjectionReady(). | 159 // Remember for callback OnJsInjectionReady(). |
131 preload_test_fixture_ = preload_test_fixture; | 160 preload_test_fixture_ = preload_test_fixture; |
132 preload_test_name_ = preload_test_name; | 161 preload_test_name_ = preload_test_name; |
133 | 162 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
201 void WebUIBrowserTest::BuildJavascriptLibraries(string16* content) { | 230 void WebUIBrowserTest::BuildJavascriptLibraries(string16* content) { |
202 ASSERT_TRUE(content != NULL); | 231 ASSERT_TRUE(content != NULL); |
203 std::string utf8_content; | 232 std::string utf8_content; |
204 std::vector<FilePath>::iterator user_libraries_iterator; | 233 std::vector<FilePath>::iterator user_libraries_iterator; |
205 for (user_libraries_iterator = user_libraries_.begin(); | 234 for (user_libraries_iterator = user_libraries_.begin(); |
206 user_libraries_iterator != user_libraries_.end(); | 235 user_libraries_iterator != user_libraries_.end(); |
207 ++user_libraries_iterator) { | 236 ++user_libraries_iterator) { |
208 std::string library_content; | 237 std::string library_content; |
209 if (user_libraries_iterator->IsAbsolute()) { | 238 if (user_libraries_iterator->IsAbsolute()) { |
210 ASSERT_TRUE(file_util::ReadFileToString(*user_libraries_iterator, | 239 ASSERT_TRUE(file_util::ReadFileToString(*user_libraries_iterator, |
211 &library_content)); | 240 &library_content)) |
241 << user_libraries_iterator->value(); | |
212 } else { | 242 } else { |
213 ASSERT_TRUE(file_util::ReadFileToString( | 243 ASSERT_TRUE(file_util::ReadFileToString( |
214 test_data_directory_.Append(*user_libraries_iterator), | 244 test_data_directory_.Append(*user_libraries_iterator), |
215 &library_content)); | 245 &library_content)) << user_libraries_iterator->value(); |
216 } | 246 } |
217 utf8_content.append(library_content); | 247 utf8_content.append(library_content); |
218 utf8_content.append(";\n"); | 248 utf8_content.append(";\n"); |
219 } | 249 } |
220 content->append(UTF8ToUTF16(utf8_content)); | 250 content->append(UTF8ToUTF16(utf8_content)); |
221 } | 251 } |
222 | 252 |
223 string16 WebUIBrowserTest::BuildRunTestJSCall( | 253 string16 WebUIBrowserTest::BuildRunTestJSCall( |
224 const std::string& function_name, | 254 const std::string& function_name, |
225 const WebUIBrowserTest::ConstValueVector& test_func_args) { | 255 const WebUIBrowserTest::ConstValueVector& test_func_args) { |
226 WebUIBrowserTest::ConstValueVector arguments; | 256 WebUIBrowserTest::ConstValueVector arguments; |
227 StringValue function_name_arg(function_name); | 257 StringValue function_name_arg(function_name); |
228 arguments.push_back(&function_name_arg); | 258 arguments.push_back(&function_name_arg); |
229 ListValue baked_argument_list; | 259 ListValue baked_argument_list; |
230 WebUIBrowserTest::ConstValueVector::const_iterator arguments_iterator; | 260 WebUIBrowserTest::ConstValueVector::const_iterator arguments_iterator; |
231 for (arguments_iterator = test_func_args.begin(); | 261 for (arguments_iterator = test_func_args.begin(); |
232 arguments_iterator != test_func_args.end(); | 262 arguments_iterator != test_func_args.end(); |
233 ++arguments_iterator) { | 263 ++arguments_iterator) { |
234 baked_argument_list.Append((Value *)*arguments_iterator); | 264 baked_argument_list.Append((Value *)*arguments_iterator); |
235 } | 265 } |
236 arguments.push_back(&baked_argument_list); | 266 arguments.push_back(&baked_argument_list); |
237 return WebUI::GetJavascriptCall(std::string("runTest"), arguments); | 267 return WebUI::GetJavascriptCall(std::string("runTest"), arguments); |
238 } | 268 } |
239 | 269 |
240 bool WebUIBrowserTest::RunJavascriptUsingHandler( | 270 bool WebUIBrowserTest::RunJavascriptUsingHandler( |
241 const std::string& function_name, | 271 const std::string& function_name, |
242 const ConstValueVector& function_arguments, | 272 const ConstValueVector& function_arguments, |
243 bool is_test, | 273 bool is_test, |
274 bool is_async, | |
244 RenderViewHost* preload_host) { | 275 RenderViewHost* preload_host) { |
245 | 276 |
246 string16 content; | 277 string16 content; |
247 if (!libraries_preloaded_) | 278 if (!libraries_preloaded_) |
248 BuildJavascriptLibraries(&content); | 279 BuildJavascriptLibraries(&content); |
249 | 280 |
250 if (!function_name.empty()) { | 281 if (!function_name.empty()) { |
251 string16 called_function; | 282 string16 called_function; |
252 if (is_test) { | 283 if (is_test) { |
253 called_function = BuildRunTestJSCall(function_name, function_arguments); | 284 called_function = BuildRunTestJSCall(function_name, function_arguments); |
254 } else { | 285 } else { |
255 called_function = WebUI::GetJavascriptCall(function_name, | 286 called_function = WebUI::GetJavascriptCall(function_name, |
256 function_arguments); | 287 function_arguments); |
257 } | 288 } |
258 content.append(called_function); | 289 content.append(called_function); |
259 } | 290 } |
260 | 291 |
261 if (!preload_host) | 292 if (!preload_host) |
262 SetupHandlers(); | 293 SetupHandlers(); |
263 | 294 |
264 logging::SetLogMessageHandler(&LogHandler); | 295 logging::SetLogMessageHandler(&LogHandler); |
265 bool result = true; | 296 bool result = true; |
266 | 297 |
267 if (is_test) | 298 if (is_test) |
268 result = test_handler_->RunJavaScriptTestWithResult(content); | 299 result = test_handler_->RunJavaScriptTestWithResult(content, is_async); |
269 else if (preload_host) | 300 else if (preload_host) |
270 test_handler_->PreloadJavaScript(content, preload_host); | 301 test_handler_->PreloadJavaScript(content, preload_host); |
271 else | 302 else |
272 test_handler_->RunJavaScript(content); | 303 test_handler_->RunJavaScript(content); |
273 | 304 |
274 logging::SetLogMessageHandler(NULL); | 305 logging::SetLogMessageHandler(NULL); |
275 | 306 |
276 if (error_messages_.Get().size() > 0) { | 307 if (error_messages_.Get().size() > 0) { |
277 LOG(ERROR) << "Encountered javascript console error(s)"; | 308 LOG(ERROR) << "Encountered javascript console error(s)"; |
278 result = false; | 309 result = false; |
(...skipping 29 matching lines...) Expand all Loading... | |
308 virtual ~WebUIBrowserExpectFailTest() { | 339 virtual ~WebUIBrowserExpectFailTest() { |
309 EXPECT_TRUE(s_test_); | 340 EXPECT_TRUE(s_test_); |
310 s_test_ = NULL; | 341 s_test_ = NULL; |
311 } | 342 } |
312 | 343 |
313 static void RunJavascriptTestNoReturn(const std::string& testname) { | 344 static void RunJavascriptTestNoReturn(const std::string& testname) { |
314 EXPECT_TRUE(s_test_); | 345 EXPECT_TRUE(s_test_); |
315 s_test_->RunJavascriptTest(testname); | 346 s_test_->RunJavascriptTest(testname); |
316 } | 347 } |
317 | 348 |
349 static void RunJavascriptAsyncTestNoReturn(const std::string& testname) { | |
350 EXPECT_TRUE(s_test_); | |
351 s_test_->RunJavascriptAsyncTest(testname); | |
352 } | |
353 | |
318 private: | 354 private: |
319 static WebUIBrowserTest* s_test_; | 355 static WebUIBrowserTest* s_test_; |
320 }; | 356 }; |
321 | 357 |
322 WebUIBrowserTest* WebUIBrowserExpectFailTest::s_test_ = NULL; | 358 WebUIBrowserTest* WebUIBrowserExpectFailTest::s_test_ = NULL; |
323 | 359 |
324 IN_PROC_BROWSER_TEST_F(WebUIBrowserExpectFailTest, TestFailsFast) { | 360 IN_PROC_BROWSER_TEST_F(WebUIBrowserExpectFailTest, TestFailsFast) { |
325 AddLibrary(FilePath(FILE_PATH_LITERAL("sample_downloads.js"))); | 361 AddLibrary(FilePath(FILE_PATH_LITERAL("sample_downloads.js"))); |
326 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIDownloadsURL)); | 362 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIDownloadsURL)); |
327 EXPECT_FATAL_FAILURE(RunJavascriptTestNoReturn("FAILS_BogusFunctionName"), | 363 EXPECT_FATAL_FAILURE(RunJavascriptTestNoReturn("FAILS_BogusFunctionName"), |
328 "WebUITestHandler::Observe"); | 364 "WebUITestHandler::Observe"); |
329 } | 365 } |
366 | |
367 IN_PROC_BROWSER_TEST_F(WebUIBrowserExpectFailTest, TestFailsAsyncFast) { | |
mmenke
2011/08/10 17:23:40
These tests should have brief descriptions.
Sheridan Rawlins
2011/08/11 01:58:44
Done.
| |
368 AddLibrary(FilePath(FILE_PATH_LITERAL("sample_downloads.js"))); | |
369 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIDownloadsURL)); | |
370 EXPECT_FATAL_FAILURE( | |
371 RunJavascriptAsyncTestNoReturn("FAILS_BogusFunctionName"), | |
372 "WebUITestHandler::Observe"); | |
373 } | |
374 | |
375 IN_PROC_BROWSER_TEST_F(WebUIBrowserExpectFailTest, TestFailsNonAsync) { | |
376 AddLibrary(FilePath(FILE_PATH_LITERAL("sample_downloads.js"))); | |
377 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIDownloadsURL)); | |
378 EXPECT_NONFATAL_FAILURE(RunJavascriptTest("asyncTestDone"), | |
379 "WebUITestHandler::WaitForResult"); | |
380 } | |
381 | |
382 // Tests that the async framework works. | |
383 class WebUIBrowserAsyncTest : public WebUIBrowserTest { | |
384 public: | |
385 // Calls the asyncTestDone() function from test_api.js | |
386 void AsyncTestDone() { | |
387 RunJavascriptFunction("asyncTestDone"); | |
388 } | |
389 | |
390 // starts a failing test. | |
mmenke
2011/08/10 17:23:40
nit: Capitalize "Starts" here, and just below.
Sheridan Rawlins
2011/08/11 01:58:44
Done.
| |
391 void RunTestFailsAssert() { | |
392 RunJavascriptFunction("runAsync", | |
393 *Value::CreateStringValue("testFailsAssert")); | |
394 } | |
395 | |
396 // starts a passing test. | |
397 void RunTestPasses() { | |
398 RunJavascriptFunction("runAsync", *Value::CreateStringValue("testPasses")); | |
399 } | |
400 | |
401 protected: | |
402 | |
mmenke
2011/08/10 17:23:40
nit: Remove blank line.
Sheridan Rawlins
2011/08/11 01:58:44
Done.
| |
403 WebUIBrowserAsyncTest() {} | |
404 | |
405 static const char kDummyURL[]; | |
406 | |
407 // Class to synchronize asynchronous javascript activity with the tests. | |
408 class AsyncWebUIMessageHandler : public WebUIMessageHandler { | |
409 public: | |
410 AsyncWebUIMessageHandler() {} | |
411 | |
412 MOCK_METHOD1(HandleTestContinues, void(const ListValue*)); | |
413 MOCK_METHOD1(HandleTestFails, void(const ListValue*)); | |
414 MOCK_METHOD1(HandleTestPasses, void(const ListValue*)); | |
415 | |
416 private: | |
417 virtual void RegisterMessages() OVERRIDE { | |
418 web_ui_->RegisterMessageCallback("startAsyncTest", NewCallback( | |
419 this, &AsyncWebUIMessageHandler::HandleStartAsyncTest)); | |
420 web_ui_->RegisterMessageCallback("testContinues", NewCallback( | |
421 this, &AsyncWebUIMessageHandler::HandleTestContinues)); | |
422 web_ui_->RegisterMessageCallback("testFails", NewCallback( | |
423 this, &AsyncWebUIMessageHandler::HandleTestFails)); | |
424 web_ui_->RegisterMessageCallback("testPasses", NewCallback( | |
425 this, &AsyncWebUIMessageHandler::HandleTestPasses)); | |
426 } | |
427 | |
428 // Starts the test in |list_value|[0] with the runAsync wrapper. | |
429 void HandleStartAsyncTest(const ListValue* list_value) { | |
430 Value* test_name; | |
431 ASSERT_TRUE(list_value->Get(0, &test_name)); | |
432 web_ui_->CallJavascriptFunction("runAsync", *test_name); | |
433 } | |
434 | |
435 DISALLOW_COPY_AND_ASSIGN(AsyncWebUIMessageHandler); | |
436 }; | |
437 | |
438 // Handler for this object. | |
439 ::testing::StrictMock<AsyncWebUIMessageHandler> message_handler_; | |
440 | |
441 private: | |
442 // Class to provide a ChromeWebUI for |kDummyURL|. | |
443 class MockWebUIProvider : public TestChromeWebUIFactory::WebUIProvider { | |
444 public: | |
445 MockWebUIProvider() {} | |
446 | |
447 // Returns a new ChromeWebUI | |
448 WebUI* NewWebUI(TabContents* tab_contents, const GURL& url) OVERRIDE { | |
449 return new ChromeWebUI(tab_contents); | |
450 } | |
451 }; | |
452 | |
453 // Provide this object's handler. | |
454 virtual WebUIMessageHandler* GetMockMessageHandler() OVERRIDE { | |
455 return &message_handler_; | |
456 } | |
457 | |
458 // Set up the kDummyURL to be a WebUI page. | |
459 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { | |
460 WebUIBrowserTest::SetUpInProcessBrowserTestFixture(); | |
461 TestChromeWebUIFactory::AddFactoryOverride(GURL(kDummyURL).host(), | |
462 &mock_provider_); | |
463 } | |
464 | |
465 // Tear down the kDummyURL WebUI page. | |
466 virtual void TearDownInProcessBrowserTestFixture() OVERRIDE { | |
467 WebUIBrowserTest::TearDownInProcessBrowserTestFixture(); | |
468 TestChromeWebUIFactory::RemoveFactoryOverride(GURL(kDummyURL).host()); | |
469 } | |
470 | |
471 // Set up and browse to kDummyURL for all tests. | |
472 virtual void SetUpOnMainThread() OVERRIDE { | |
473 WebUIBrowserTest::SetUpOnMainThread(); | |
474 AddLibrary(FilePath(FILE_PATH_LITERAL("async.js"))); | |
475 ui_test_utils::NavigateToURL(browser(), GURL(kDummyURL)); | |
476 } | |
477 | |
478 // Provider for this object. | |
479 MockWebUIProvider mock_provider_; | |
480 | |
481 DISALLOW_COPY_AND_ASSIGN(WebUIBrowserAsyncTest); | |
482 }; | |
483 | |
484 const char WebUIBrowserAsyncTest::kDummyURL[] = "chrome://Dummy"; | |
485 | |
486 // Test that assertions fail immediately without calling asyncTestDone(). | |
mmenke
2011/08/10 17:23:40
asyncTestDone() is, in fact, called by runAsync.
Sheridan Rawlins
2011/08/11 01:58:44
Done.
| |
487 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncFailsAssert) { | |
488 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); | |
489 ASSERT_FALSE(RunJavascriptAsyncTest( | |
490 "startAsyncTest", *Value::CreateStringValue("testFailsAssert"))); | |
491 } | |
492 | |
493 // Test that expectations continue the function, but fail the test without | |
494 // calling asyncTestDone(). | |
495 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncFailsExpect) { | |
496 ::testing::InSequence s; | |
497 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | |
498 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); | |
499 ASSERT_FALSE(RunJavascriptAsyncTest( | |
500 "startAsyncTest", *Value::CreateStringValue("testFailsExpect"))); | |
501 } | |
502 | |
503 // Test that test passes when this object's handler calls asyncTestDone(). | |
504 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPasses) { | |
505 ::testing::InSequence s; | |
506 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | |
507 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) | |
508 .WillOnce(::testing::InvokeWithoutArgs( | |
509 this, &WebUIBrowserAsyncTest::AsyncTestDone)); | |
510 ASSERT_TRUE(RunJavascriptAsyncTest( | |
511 "startAsyncTest", *Value::CreateStringValue("testPasses"))); | |
512 } | |
513 | |
514 // Test that two tests pass | |
515 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPassPass) { | |
516 ::testing::InSequence s; | |
517 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | |
518 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) | |
519 .WillOnce(::testing::InvokeWithoutArgs( | |
520 this, &WebUIBrowserAsyncTest::RunTestPasses)); | |
521 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | |
522 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) | |
523 .WillOnce(::testing::InvokeWithoutArgs( | |
524 this, &WebUIBrowserAsyncTest::AsyncTestDone)); | |
525 ASSERT_TRUE(RunJavascriptAsyncTest( | |
526 "startAsyncTest", *Value::CreateStringValue("testPasses"))); | |
527 } | |
528 | |
529 // Test that first test passes; second fails. | |
530 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPassThenFail) { | |
531 ::testing::InSequence s; | |
532 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | |
533 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) | |
534 .WillOnce(::testing::InvokeWithoutArgs( | |
535 this, &WebUIBrowserAsyncTest::RunTestFailsAssert)); | |
536 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); | |
537 ASSERT_FALSE(RunJavascriptAsyncTest( | |
538 "startAsyncTest", *Value::CreateStringValue("testPasses"))); | |
539 } | |
540 | |
541 // Test that async fail first then sync pass still fails. | |
542 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncDoneFailFirstSyncPass) { | |
543 ::testing::InSequence s; | |
544 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | |
545 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); | |
546 ASSERT_FALSE(RunJavascriptAsyncTest( | |
547 "runAsync", *Value::CreateStringValue("testAsyncDoneFailFirstSyncPass"))); | |
548 } | |
549 | |
550 // Test that calling asyncTestDone during RunJavascriptTest still completes when | |
551 // waiting for async result. | |
552 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncTestDoneEarly) { | |
553 ASSERT_TRUE(RunJavascriptAsyncTest("asyncTestDone")); | |
554 } | |
OLD | NEW |