| 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 |