| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "base/task_scheduler/task_scheduler_impl.h" | 5 #include "base/task_scheduler/task_scheduler_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 {TaskPriority::USER_BLOCKING})); | 377 {TaskPriority::USER_BLOCKING})); |
| 378 EXPECT_EQ(12, scheduler_.GetMaxConcurrentTasksWithTraitsDeprecated( | 378 EXPECT_EQ(12, scheduler_.GetMaxConcurrentTasksWithTraitsDeprecated( |
| 379 {MayBlock(), TaskPriority::USER_BLOCKING})); | 379 {MayBlock(), TaskPriority::USER_BLOCKING})); |
| 380 } | 380 } |
| 381 | 381 |
| 382 // Verify that the RunsTasksOnCurrentThread() method of a SequencedTaskRunner | 382 // Verify that the RunsTasksOnCurrentThread() method of a SequencedTaskRunner |
| 383 // returns false when called from a task that isn't part of the sequence. | 383 // returns false when called from a task that isn't part of the sequence. |
| 384 TEST_F(TaskSchedulerImplTest, SequencedRunsTasksOnCurrentThread) { | 384 TEST_F(TaskSchedulerImplTest, SequencedRunsTasksOnCurrentThread) { |
| 385 StartTaskScheduler(); | 385 StartTaskScheduler(); |
| 386 auto single_thread_task_runner = | 386 auto single_thread_task_runner = |
| 387 scheduler_.CreateSingleThreadTaskRunnerWithTraits(TaskTraits()); | 387 scheduler_.CreateSingleThreadTaskRunnerWithTraits( |
| 388 TaskTraits(), SingleThreadTaskRunnerThreadMode::SHARED); |
| 388 auto sequenced_task_runner = | 389 auto sequenced_task_runner = |
| 389 scheduler_.CreateSequencedTaskRunnerWithTraits(TaskTraits()); | 390 scheduler_.CreateSequencedTaskRunnerWithTraits(TaskTraits()); |
| 390 | 391 |
| 391 WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, | 392 WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, |
| 392 WaitableEvent::InitialState::NOT_SIGNALED); | 393 WaitableEvent::InitialState::NOT_SIGNALED); |
| 393 single_thread_task_runner->PostTask( | 394 single_thread_task_runner->PostTask( |
| 394 FROM_HERE, | 395 FROM_HERE, |
| 395 BindOnce( | 396 BindOnce( |
| 396 [](scoped_refptr<TaskRunner> sequenced_task_runner, | 397 [](scoped_refptr<TaskRunner> sequenced_task_runner, |
| 397 WaitableEvent* task_ran) { | 398 WaitableEvent* task_ran) { |
| 398 EXPECT_FALSE(sequenced_task_runner->RunsTasksOnCurrentThread()); | 399 EXPECT_FALSE(sequenced_task_runner->RunsTasksOnCurrentThread()); |
| 399 task_ran->Signal(); | 400 task_ran->Signal(); |
| 400 }, | 401 }, |
| 401 sequenced_task_runner, Unretained(&task_ran))); | 402 sequenced_task_runner, Unretained(&task_ran))); |
| 402 task_ran.Wait(); | 403 task_ran.Wait(); |
| 403 } | 404 } |
| 404 | 405 |
| 405 // Verify that the RunsTasksOnCurrentThread() method of a SingleThreadTaskRunner | 406 // Verify that the RunsTasksOnCurrentThread() method of a SingleThreadTaskRunner |
| 406 // returns false when called from a task that isn't part of the sequence. | 407 // returns false when called from a task that isn't part of the sequence. |
| 407 TEST_F(TaskSchedulerImplTest, SingleThreadRunsTasksOnCurrentThread) { | 408 TEST_F(TaskSchedulerImplTest, SingleThreadRunsTasksOnCurrentThread) { |
| 408 StartTaskScheduler(); | 409 StartTaskScheduler(); |
| 409 auto sequenced_task_runner = | 410 auto sequenced_task_runner = |
| 410 scheduler_.CreateSequencedTaskRunnerWithTraits(TaskTraits()); | 411 scheduler_.CreateSequencedTaskRunnerWithTraits(TaskTraits()); |
| 411 auto single_thread_task_runner = | 412 auto single_thread_task_runner = |
| 412 scheduler_.CreateSingleThreadTaskRunnerWithTraits(TaskTraits()); | 413 scheduler_.CreateSingleThreadTaskRunnerWithTraits( |
| 414 TaskTraits(), SingleThreadTaskRunnerThreadMode::SHARED); |
| 413 | 415 |
| 414 WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, | 416 WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, |
| 415 WaitableEvent::InitialState::NOT_SIGNALED); | 417 WaitableEvent::InitialState::NOT_SIGNALED); |
| 416 sequenced_task_runner->PostTask( | 418 sequenced_task_runner->PostTask( |
| 417 FROM_HERE, | 419 FROM_HERE, |
| 418 BindOnce( | 420 BindOnce( |
| 419 [](scoped_refptr<TaskRunner> single_thread_task_runner, | 421 [](scoped_refptr<TaskRunner> single_thread_task_runner, |
| 420 WaitableEvent* task_ran) { | 422 WaitableEvent* task_ran) { |
| 421 EXPECT_FALSE(single_thread_task_runner->RunsTasksOnCurrentThread()); | 423 EXPECT_FALSE(single_thread_task_runner->RunsTasksOnCurrentThread()); |
| 422 task_ran->Signal(); | 424 task_ran->Signal(); |
| 423 }, | 425 }, |
| 424 single_thread_task_runner, Unretained(&task_ran))); | 426 single_thread_task_runner, Unretained(&task_ran))); |
| 425 task_ran.Wait(); | 427 task_ran.Wait(); |
| 426 } | 428 } |
| 427 | 429 |
| 428 #if defined(OS_WIN) | 430 #if defined(OS_WIN) |
| 429 TEST_F(TaskSchedulerImplTest, COMSTATaskRunnersRunWithCOMSTA) { | 431 TEST_F(TaskSchedulerImplTest, COMSTATaskRunnersRunWithCOMSTA) { |
| 430 StartTaskScheduler(); | 432 StartTaskScheduler(); |
| 431 auto com_sta_task_runner = | 433 auto com_sta_task_runner = scheduler_.CreateCOMSTATaskRunnerWithTraits( |
| 432 scheduler_.CreateCOMSTATaskRunnerWithTraits(TaskTraits()); | 434 TaskTraits(), SingleThreadTaskRunnerThreadMode::SHARED); |
| 433 | 435 |
| 434 WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, | 436 WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, |
| 435 WaitableEvent::InitialState::NOT_SIGNALED); | 437 WaitableEvent::InitialState::NOT_SIGNALED); |
| 436 com_sta_task_runner->PostTask( | 438 com_sta_task_runner->PostTask( |
| 437 FROM_HERE, | 439 FROM_HERE, |
| 438 Bind( | 440 Bind( |
| 439 [](scoped_refptr<TaskRunner> single_thread_task_runner, | 441 [](scoped_refptr<TaskRunner> single_thread_task_runner, |
| 440 WaitableEvent* task_ran) { | 442 WaitableEvent* task_ran) { |
| 441 HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED); | 443 HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED); |
| 442 if (SUCCEEDED(hr)) { | 444 if (SUCCEEDED(hr)) { |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 513 // Give a chance for the file watcher to fire before closing the handles. | 515 // Give a chance for the file watcher to fire before closing the handles. |
| 514 PlatformThread::Sleep(TestTimeouts::tiny_timeout()); | 516 PlatformThread::Sleep(TestTimeouts::tiny_timeout()); |
| 515 | 517 |
| 516 EXPECT_EQ(0, IGNORE_EINTR(close(pipes[0]))); | 518 EXPECT_EQ(0, IGNORE_EINTR(close(pipes[0]))); |
| 517 EXPECT_EQ(0, IGNORE_EINTR(close(pipes[1]))); | 519 EXPECT_EQ(0, IGNORE_EINTR(close(pipes[1]))); |
| 518 } | 520 } |
| 519 #endif // defined(OS_POSIX) | 521 #endif // defined(OS_POSIX) |
| 520 | 522 |
| 521 } // namespace internal | 523 } // namespace internal |
| 522 } // namespace base | 524 } // namespace base |
| OLD | NEW |