summaryrefslogtreecommitdiff
path: root/base/task/thread_pool/scheduler_worker_pool_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/task/thread_pool/scheduler_worker_pool_unittest.cc')
-rw-r--r--base/task/thread_pool/scheduler_worker_pool_unittest.cc25
1 files changed, 25 insertions, 0 deletions
diff --git a/base/task/thread_pool/scheduler_worker_pool_unittest.cc b/base/task/thread_pool/scheduler_worker_pool_unittest.cc
index 5f5e7052e5..1f615b3876 100644
--- a/base/task/thread_pool/scheduler_worker_pool_unittest.cc
+++ b/base/task/thread_pool/scheduler_worker_pool_unittest.cc
@@ -437,6 +437,31 @@ TEST_P(ThreadPoolWorkerPoolTest, UpdatePriorityBestEffortToUserBlocking) {
task_tracker_.FlushForTesting();
}
+// Regression test for crbug.com/955953.
+TEST_P(ThreadPoolWorkerPoolTest, ScopedBlockingCallTwice) {
+ StartWorkerPool();
+ auto task_runner = test::CreateTaskRunnerWithExecutionMode(
+ GetParam().execution_mode, &mock_scheduler_task_runner_delegate_,
+ {MayBlock()});
+
+ WaitableEvent task_ran;
+ task_runner->PostTask(FROM_HERE,
+ BindOnce(
+ [](WaitableEvent* task_ran) {
+ {
+ ScopedBlockingCall scoped_blocking_call(
+ FROM_HERE, BlockingType::MAY_BLOCK);
+ }
+ {
+ ScopedBlockingCall scoped_blocking_call(
+ FROM_HERE, BlockingType::MAY_BLOCK);
+ }
+ task_ran->Signal();
+ },
+ Unretained(&task_ran)));
+ task_ran.Wait();
+}
+
#if defined(OS_WIN)
TEST_P(ThreadPoolWorkerPoolTest, COMMTAWorkerEnvironment) {
StartWorkerPool(SchedulerWorkerPool::WorkerEnvironment::COM_MTA);