| Index: base/mac/libdispatch_task_runner_unittest.cc
|
| diff --git a/base/mac/libdispatch_task_runner_unittest.cc b/base/mac/libdispatch_task_runner_unittest.cc
|
| index abd8c30835fde46d46a345bf8de25582afe5bc74..c3488d275861564cdb737552ec0c64c8d6ed358f 100644
|
| --- a/base/mac/libdispatch_task_runner_unittest.cc
|
| +++ b/base/mac/libdispatch_task_runner_unittest.cc
|
| @@ -24,6 +24,7 @@ class LibDispatchTaskRunnerTest : public testing::Test {
|
| (&message_loop_)->PostTask(FROM_HERE, MessageLoop::QuitClosure());
|
| });
|
| message_loop_.Run();
|
| + task_runner_->Shutdown();
|
| }
|
|
|
| // VerifyTaskOrder takes the expectations from TaskOrderMarkers and compares
|
| @@ -34,7 +35,7 @@ class LibDispatchTaskRunnerTest : public testing::Test {
|
|
|
| for (size_t i = 0; i < num_expectations; ++i) {
|
| if (i >= actual_size) {
|
| - EXPECT_LT(i, actual_size) << "Expected " << expectations[i];
|
| + EXPECT_LE(i, actual_size) << "Expected " << expectations[i];
|
| continue;
|
| }
|
|
|
| @@ -126,17 +127,15 @@ TEST_F(LibDispatchTaskRunnerTest, NoMessageLoop) {
|
| VerifyTaskOrder(expectations, arraysize(expectations));
|
| }
|
|
|
| -// This test is flaky, see http://crbug.com/165117.
|
| -TEST_F(LibDispatchTaskRunnerTest, FLAKY_DispatchAndPostTasks) {
|
| +TEST_F(LibDispatchTaskRunnerTest, DispatchAndPostTasks) {
|
| dispatch_async(task_runner_->GetDispatchQueue(), ^{
|
| TaskOrderMarker marker(this, "First Block");
|
| - task_runner_->PostTask(FROM_HERE,
|
| - BoundRecordTaskOrder(this, "Second Task"));
|
| });
|
| task_runner_->PostTask(FROM_HERE, BoundRecordTaskOrder(this, "First Task"));
|
| dispatch_async(task_runner_->GetDispatchQueue(), ^{
|
| TaskOrderMarker marker(this, "Second Block");
|
| });
|
| + task_runner_->PostTask(FROM_HERE, BoundRecordTaskOrder(this, "Second Task"));
|
| DispatchLastTask();
|
|
|
| const char* const expectations[] = {
|
| @@ -152,24 +151,22 @@ TEST_F(LibDispatchTaskRunnerTest, FLAKY_DispatchAndPostTasks) {
|
| VerifyTaskOrder(expectations, arraysize(expectations));
|
| }
|
|
|
| -// This test is flaky, see http://crbug.com/165118.
|
| -TEST_F(LibDispatchTaskRunnerTest, FLAKY_NonNestable) {
|
| +TEST_F(LibDispatchTaskRunnerTest, NonNestable) {
|
| task_runner_->PostTask(FROM_HERE, base::BindBlock(^{
|
| TaskOrderMarker marker(this, "First");
|
| task_runner_->PostNonNestableTask(FROM_HERE, base::BindBlock(^{
|
| - TaskOrderMarker marker(this, "Third NonNestable");
|
| + TaskOrderMarker marker(this, "Second NonNestable");
|
| + (&message_loop_)->PostTask(FROM_HERE, MessageLoop::QuitClosure());
|
| }));
|
| }));
|
| - task_runner_->PostTask(FROM_HERE, BoundRecordTaskOrder(this, "Second"));
|
| - DispatchLastTask();
|
| + message_loop_.Run();
|
| + task_runner_->Shutdown();
|
|
|
| const char* const expectations[] = {
|
| "BEGIN First",
|
| "END First",
|
| - "BEGIN Second",
|
| - "END Second",
|
| - "BEGIN Third NonNestable",
|
| - "END Third NonNestable"
|
| + "BEGIN Second NonNestable",
|
| + "END Second NonNestable"
|
| };
|
| VerifyTaskOrder(expectations, arraysize(expectations));
|
| }
|
| @@ -188,6 +185,7 @@ TEST_F(LibDispatchTaskRunnerTest, PostDelayed) {
|
| }), delta);
|
| task_runner_->PostTask(FROM_HERE, BoundRecordTaskOrder(this, "Second"));
|
| message_loop_.Run();
|
| + task_runner_->Shutdown();
|
|
|
| const char* const expectations[] = {
|
| "BEGIN First",
|
| @@ -201,3 +199,23 @@ TEST_F(LibDispatchTaskRunnerTest, PostDelayed) {
|
|
|
| EXPECT_GE(run_time, post_time + delta);
|
| }
|
| +
|
| +TEST_F(LibDispatchTaskRunnerTest, PostAfterShutdown) {
|
| + EXPECT_TRUE(task_runner_->PostTask(FROM_HERE,
|
| + BoundRecordTaskOrder(this, "First")));
|
| + EXPECT_TRUE(task_runner_->PostTask(FROM_HERE,
|
| + BoundRecordTaskOrder(this, "Second")));
|
| + task_runner_->Shutdown();
|
| + EXPECT_FALSE(task_runner_->PostTask(FROM_HERE, base::BindBlock(^{
|
| + TaskOrderMarker marker(this, "Not Run");
|
| + ADD_FAILURE() << "Should not run a task after Shutdown";
|
| + })));
|
| +
|
| + const char* const expectations[] = {
|
| + "BEGIN First",
|
| + "END First",
|
| + "BEGIN Second",
|
| + "END Second"
|
| + };
|
| + VerifyTaskOrder(expectations, arraysize(expectations));
|
| +}
|
|
|