Index: content/child/scheduler/task_queue_manager_unittest.cc |
diff --git a/content/child/scheduler/task_queue_manager_unittest.cc b/content/child/scheduler/task_queue_manager_unittest.cc |
index 8fa5e29d7818820be834cf46c8192442352e82d8..1a803ec6334fe47f9050b09e3c8f7d0a4f3eda6a 100644 |
--- a/content/child/scheduler/task_queue_manager_unittest.cc |
+++ b/content/child/scheduler/task_queue_manager_unittest.cc |
@@ -98,6 +98,11 @@ class ExplicitSelectorForTest : public SelectorForTest { |
}; |
class TaskQueueManagerTest : public testing::Test { |
+ public: |
+ void DeleteTaskQueueManager() { |
+ manager_.reset(); |
+ } |
+ |
protected: |
enum class SelectorType { |
Automatic, |
@@ -1036,5 +1041,19 @@ TEST_F(TaskQueueManagerTest, NextPendingDelayedTaskRunTime_MultipleQueues) { |
manager_->NextPendingDelayedTaskRunTime()); |
} |
+TEST_F(TaskQueueManagerTest, DeleteTqmInTask) { |
Sami
2015/04/08 14:24:04
nit: s/Tqm/Manager/ or something since we're not r
alex clarke (OOO till 29th)
2015/04/08 14:33:05
Done.
|
+ Initialize(1u, SelectorType::Automatic); |
+ |
+ scoped_refptr<base::SingleThreadTaskRunner> runner = |
+ manager_->TaskRunnerForQueue(0); |
+ runner->PostTask(FROM_HERE, |
+ base::Bind(&TaskQueueManagerTest::DeleteTaskQueueManager, |
+ base::Unretained(this))); |
+ |
+ // This should not crash, assuming DoWork detects the TaskQueueManager has |
+ // been deleted. |
+ test_task_runner_->RunUntilIdle(); |
+} |
+ |
} // namespace |
} // namespace content |