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" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 bool WebUIBrowserTest::RunJavascriptFunction( | 75 bool WebUIBrowserTest::RunJavascriptFunction( |
76 const std::string& function_name, | 76 const std::string& function_name, |
77 const ConstValueVector& function_arguments) { | 77 const ConstValueVector& function_arguments) { |
78 return RunJavascriptUsingHandler( | 78 return RunJavascriptUsingHandler( |
79 function_name, function_arguments, false, false, NULL); | 79 function_name, function_arguments, false, false, NULL); |
80 } | 80 } |
81 | 81 |
82 bool WebUIBrowserTest::RunJavascriptTestF(const std::string& test_fixture, | 82 bool WebUIBrowserTest::RunJavascriptTestF(const std::string& test_fixture, |
83 const std::string& test_name) { | 83 const std::string& test_name) { |
84 ConstValueVector args; | 84 ConstValueVector args; |
85 args.push_back(Value::CreateStringValue(test_fixture)); | 85 args.push_back(base::StringValue::New(test_fixture)); |
86 args.push_back(Value::CreateStringValue(test_name)); | 86 args.push_back(base::StringValue::New(test_name)); |
87 return RunJavascriptTest("RUN_TEST_F", args); | 87 return RunJavascriptTest("RUN_TEST_F", args); |
88 } | 88 } |
89 | 89 |
90 bool WebUIBrowserTest::RunJavascriptTest(const std::string& test_name) { | 90 bool WebUIBrowserTest::RunJavascriptTest(const std::string& test_name) { |
91 return RunJavascriptTest(test_name, ConstValueVector()); | 91 return RunJavascriptTest(test_name, ConstValueVector()); |
92 } | 92 } |
93 | 93 |
94 bool WebUIBrowserTest::RunJavascriptTest(const std::string& test_name, | 94 bool WebUIBrowserTest::RunJavascriptTest(const std::string& test_name, |
95 const Value& arg) { | 95 const Value& arg) { |
96 ConstValueVector args; | 96 ConstValueVector args; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 const ConstValueVector& test_arguments) { | 139 const ConstValueVector& test_arguments) { |
140 return RunJavascriptUsingHandler(test_name, test_arguments, true, true, NULL); | 140 return RunJavascriptUsingHandler(test_name, test_arguments, true, true, NULL); |
141 } | 141 } |
142 | 142 |
143 void WebUIBrowserTest::PreLoadJavascriptLibraries( | 143 void WebUIBrowserTest::PreLoadJavascriptLibraries( |
144 const std::string& preload_test_fixture, | 144 const std::string& preload_test_fixture, |
145 const std::string& preload_test_name, | 145 const std::string& preload_test_name, |
146 RenderViewHost* preload_host) { | 146 RenderViewHost* preload_host) { |
147 ASSERT_FALSE(libraries_preloaded_); | 147 ASSERT_FALSE(libraries_preloaded_); |
148 ConstValueVector args; | 148 ConstValueVector args; |
149 args.push_back(Value::CreateStringValue(preload_test_fixture)); | 149 args.push_back(base::StringValue::New(preload_test_fixture)); |
150 args.push_back(Value::CreateStringValue(preload_test_name)); | 150 args.push_back(base::StringValue::New(preload_test_name)); |
151 RunJavascriptUsingHandler( | 151 RunJavascriptUsingHandler( |
152 "preloadJavascriptLibraries", args, false, false, preload_host); | 152 "preloadJavascriptLibraries", args, false, false, preload_host); |
153 libraries_preloaded_ = true; | 153 libraries_preloaded_ = true; |
154 } | 154 } |
155 | 155 |
156 void WebUIBrowserTest::BrowsePreload(const GURL& browse_to, | 156 void WebUIBrowserTest::BrowsePreload(const GURL& browse_to, |
157 const std::string& preload_test_fixture, | 157 const std::string& preload_test_fixture, |
158 const std::string& preload_test_name) { | 158 const std::string& preload_test_name) { |
159 // Remember for callback OnJsInjectionReady(). | 159 // Remember for callback OnJsInjectionReady(). |
160 preload_test_fixture_ = preload_test_fixture; | 160 preload_test_fixture_ = preload_test_fixture; |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 utf8_content.append(";\n"); | 248 utf8_content.append(";\n"); |
249 } | 249 } |
250 content->append(UTF8ToUTF16(utf8_content)); | 250 content->append(UTF8ToUTF16(utf8_content)); |
251 } | 251 } |
252 | 252 |
253 string16 WebUIBrowserTest::BuildRunTestJSCall( | 253 string16 WebUIBrowserTest::BuildRunTestJSCall( |
254 bool is_async, | 254 bool is_async, |
255 const std::string& function_name, | 255 const std::string& function_name, |
256 const WebUIBrowserTest::ConstValueVector& test_func_args) { | 256 const WebUIBrowserTest::ConstValueVector& test_func_args) { |
257 WebUIBrowserTest::ConstValueVector arguments; | 257 WebUIBrowserTest::ConstValueVector arguments; |
258 base::FundamentalValue is_async_arg(is_async); | 258 base::BooleanValue is_async_arg(is_async); |
259 arguments.push_back(&is_async_arg); | 259 arguments.push_back(&is_async_arg); |
260 StringValue function_name_arg(function_name); | 260 StringValue function_name_arg(function_name); |
261 arguments.push_back(&function_name_arg); | 261 arguments.push_back(&function_name_arg); |
262 ListValue baked_argument_list; | 262 ListValue baked_argument_list; |
263 WebUIBrowserTest::ConstValueVector::const_iterator arguments_iterator; | 263 WebUIBrowserTest::ConstValueVector::const_iterator arguments_iterator; |
264 for (arguments_iterator = test_func_args.begin(); | 264 for (arguments_iterator = test_func_args.begin(); |
265 arguments_iterator != test_func_args.end(); | 265 arguments_iterator != test_func_args.end(); |
266 ++arguments_iterator) { | 266 ++arguments_iterator) { |
267 baked_argument_list.Append((Value *)*arguments_iterator); | 267 baked_argument_list.Append((Value *)*arguments_iterator); |
268 } | 268 } |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
383 class WebUIBrowserAsyncTest : public WebUIBrowserTest { | 383 class WebUIBrowserAsyncTest : public WebUIBrowserTest { |
384 public: | 384 public: |
385 // Calls the testDone() function from test_api.js | 385 // Calls the testDone() function from test_api.js |
386 void TestDone() { | 386 void TestDone() { |
387 RunJavascriptFunction("testDone"); | 387 RunJavascriptFunction("testDone"); |
388 } | 388 } |
389 | 389 |
390 // Starts a failing test. | 390 // Starts a failing test. |
391 void RunTestFailsAssert() { | 391 void RunTestFailsAssert() { |
392 RunJavascriptFunction("runAsync", | 392 RunJavascriptFunction("runAsync", |
393 *Value::CreateStringValue("testFailsAssert")); | 393 *base::StringValue::New("testFailsAssert")); |
394 } | 394 } |
395 | 395 |
396 // Starts a passing test. | 396 // Starts a passing test. |
397 void RunTestPasses() { | 397 void RunTestPasses() { |
398 RunJavascriptFunction("runAsync", *Value::CreateStringValue("testPasses")); | 398 RunJavascriptFunction("runAsync", *base::StringValue::New("testPasses")); |
399 } | 399 } |
400 | 400 |
401 protected: | 401 protected: |
402 WebUIBrowserAsyncTest() {} | 402 WebUIBrowserAsyncTest() {} |
403 | 403 |
404 static const char kDummyURL[]; | 404 static const char kDummyURL[]; |
405 | 405 |
406 // Class to synchronize asynchronous javascript activity with the tests. | 406 // Class to synchronize asynchronous javascript activity with the tests. |
407 class AsyncWebUIMessageHandler : public WebUIMessageHandler { | 407 class AsyncWebUIMessageHandler : public WebUIMessageHandler { |
408 public: | 408 public: |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 // message). (Sync version). | 486 // message). (Sync version). |
487 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestSyncOkTestFail) { | 487 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestSyncOkTestFail) { |
488 ASSERT_FALSE(RunJavascriptTest("testFailsAssert")); | 488 ASSERT_FALSE(RunJavascriptTest("testFailsAssert")); |
489 } | 489 } |
490 | 490 |
491 // Test that assertions fail immediately after assertion fails (no testContinues | 491 // Test that assertions fail immediately after assertion fails (no testContinues |
492 // message). (Async version). | 492 // message). (Async version). |
493 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncFailsAssert) { | 493 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncFailsAssert) { |
494 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); | 494 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); |
495 ASSERT_FALSE(RunJavascriptAsyncTest( | 495 ASSERT_FALSE(RunJavascriptAsyncTest( |
496 "startAsyncTest", *Value::CreateStringValue("testFailsAssert"))); | 496 "startAsyncTest", *base::StringValue::New("testFailsAssert"))); |
497 } | 497 } |
498 | 498 |
499 // Test that expectations continue the function, but fail the test. | 499 // Test that expectations continue the function, but fail the test. |
500 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncFailsExpect) { | 500 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncFailsExpect) { |
501 ::testing::InSequence s; | 501 ::testing::InSequence s; |
502 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 502 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
503 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); | 503 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); |
504 ASSERT_FALSE(RunJavascriptAsyncTest( | 504 ASSERT_FALSE(RunJavascriptAsyncTest( |
505 "startAsyncTest", *Value::CreateStringValue("testFailsExpect"))); | 505 "startAsyncTest", *base::StringValue::New("testFailsExpect"))); |
506 } | 506 } |
507 | 507 |
508 // Test that test continues and passes. (Sync version). | 508 // Test that test continues and passes. (Sync version). |
509 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestSyncPasses) { | 509 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestSyncPasses) { |
510 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 510 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
511 ASSERT_TRUE(RunJavascriptTest("testPasses")); | 511 ASSERT_TRUE(RunJavascriptTest("testPasses")); |
512 } | 512 } |
513 | 513 |
514 // Test that test continues and passes. (Async version). | 514 // Test that test continues and passes. (Async version). |
515 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPasses) { | 515 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPasses) { |
516 ::testing::InSequence s; | 516 ::testing::InSequence s; |
517 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 517 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
518 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) | 518 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) |
519 .WillOnce(::testing::InvokeWithoutArgs( | 519 .WillOnce(::testing::InvokeWithoutArgs( |
520 this, &WebUIBrowserAsyncTest::TestDone)); | 520 this, &WebUIBrowserAsyncTest::TestDone)); |
521 ASSERT_TRUE(RunJavascriptAsyncTest( | 521 ASSERT_TRUE(RunJavascriptAsyncTest( |
522 "startAsyncTest", *Value::CreateStringValue("testPasses"))); | 522 "startAsyncTest", *base::StringValue::New("testPasses"))); |
523 } | 523 } |
524 | 524 |
525 // Test that two tests pass. | 525 // Test that two tests pass. |
526 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPassPass) { | 526 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPassPass) { |
527 ::testing::InSequence s; | 527 ::testing::InSequence s; |
528 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 528 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
529 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) | 529 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) |
530 .WillOnce(::testing::InvokeWithoutArgs( | 530 .WillOnce(::testing::InvokeWithoutArgs( |
531 this, &WebUIBrowserAsyncTest::RunTestPasses)); | 531 this, &WebUIBrowserAsyncTest::RunTestPasses)); |
532 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 532 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
533 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) | 533 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) |
534 .WillOnce(::testing::InvokeWithoutArgs( | 534 .WillOnce(::testing::InvokeWithoutArgs( |
535 this, &WebUIBrowserAsyncTest::TestDone)); | 535 this, &WebUIBrowserAsyncTest::TestDone)); |
536 ASSERT_TRUE(RunJavascriptAsyncTest( | 536 ASSERT_TRUE(RunJavascriptAsyncTest( |
537 "startAsyncTest", *Value::CreateStringValue("testPasses"))); | 537 "startAsyncTest", *base::StringValue::New("testPasses"))); |
538 } | 538 } |
539 | 539 |
540 // Test that first test passes; second fails. | 540 // Test that first test passes; second fails. |
541 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPassThenFail) { | 541 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncPassThenFail) { |
542 ::testing::InSequence s; | 542 ::testing::InSequence s; |
543 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 543 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
544 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) | 544 EXPECT_CALL(message_handler_, HandleTestPasses(::testing::_)) |
545 .WillOnce(::testing::InvokeWithoutArgs( | 545 .WillOnce(::testing::InvokeWithoutArgs( |
546 this, &WebUIBrowserAsyncTest::RunTestFailsAssert)); | 546 this, &WebUIBrowserAsyncTest::RunTestFailsAssert)); |
547 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); | 547 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); |
548 ASSERT_FALSE(RunJavascriptAsyncTest( | 548 ASSERT_FALSE(RunJavascriptAsyncTest( |
549 "startAsyncTest", *Value::CreateStringValue("testPasses"))); | 549 "startAsyncTest", *base::StringValue::New("testPasses"))); |
550 } | 550 } |
551 | 551 |
552 // Test that testDone() with failure first then sync pass still fails. | 552 // Test that testDone() with failure first then sync pass still fails. |
553 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncDoneFailFirstSyncPass) { | 553 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestAsyncDoneFailFirstSyncPass) { |
554 ::testing::InSequence s; | 554 ::testing::InSequence s; |
555 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); | 555 EXPECT_CALL(message_handler_, HandleTestContinues(::testing::_)); |
556 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); | 556 EXPECT_CALL(message_handler_, HandleTestFails(::testing::_)); |
557 | 557 |
558 // Call runAsync directly instead of deferring through startAsyncTest. It will | 558 // Call runAsync directly instead of deferring through startAsyncTest. It will |
559 // call testDone() on failure, then return. | 559 // call testDone() on failure, then return. |
560 ASSERT_FALSE(RunJavascriptAsyncTest( | 560 ASSERT_FALSE(RunJavascriptAsyncTest( |
561 "runAsync", *Value::CreateStringValue("testAsyncDoneFailFirstSyncPass"))); | 561 "runAsync", *base::StringValue::New("testAsyncDoneFailFirstSyncPass"))); |
562 } | 562 } |
563 | 563 |
564 // Test that calling testDone during RunJavascriptAsyncTest still completes | 564 // Test that calling testDone during RunJavascriptAsyncTest still completes |
565 // when waiting for async result. This is similar to the previous test, but call | 565 // when waiting for async result. This is similar to the previous test, but call |
566 // testDone directly and expect pass result. | 566 // testDone directly and expect pass result. |
567 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestTestDoneEarlyPassesAsync) { | 567 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestTestDoneEarlyPassesAsync) { |
568 ASSERT_TRUE(RunJavascriptAsyncTest("testDone")); | 568 ASSERT_TRUE(RunJavascriptAsyncTest("testDone")); |
569 } | 569 } |
570 | 570 |
571 // Test that calling testDone during RunJavascriptTest still completes when | 571 // Test that calling testDone during RunJavascriptTest still completes when |
572 // waiting for async result. | 572 // waiting for async result. |
573 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestTestDoneEarlyPasses) { | 573 IN_PROC_BROWSER_TEST_F(WebUIBrowserAsyncTest, TestTestDoneEarlyPasses) { |
574 ASSERT_TRUE(RunJavascriptTest("testDone")); | 574 ASSERT_TRUE(RunJavascriptTest("testDone")); |
575 } | 575 } |
OLD | NEW |