| 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/sequence.h" |    5 #include "base/task_scheduler/sequence.h" | 
|    6  |    6  | 
|    7 #include <utility> |    7 #include <utility> | 
|    8  |    8  | 
|    9 #include "base/bind.h" |    9 #include "base/bind.h" | 
|   10 #include "base/macros.h" |   10 #include "base/macros.h" | 
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  209  |  209  | 
|  210   // Pop task D. The highest priority is now from task E (BACKGROUND). The |  210   // Pop task D. The highest priority is now from task E (BACKGROUND). The | 
|  211   // task in front of the sequence is now task E. |  211   // task in front of the sequence is now task E. | 
|  212   sequence->PopTask(); |  212   sequence->PopTask(); | 
|  213   EXPECT_EQ(SequenceSortKey(TaskPriority::BACKGROUND, task_e_->sequenced_time), |  213   EXPECT_EQ(SequenceSortKey(TaskPriority::BACKGROUND, task_e_->sequenced_time), | 
|  214             sequence->GetSortKey()); |  214             sequence->GetSortKey()); | 
|  215 } |  215 } | 
|  216  |  216  | 
|  217 TEST_F(TaskSchedulerSequenceTest, CanPushTaskInTaskDestructor) { |  217 TEST_F(TaskSchedulerSequenceTest, CanPushTaskInTaskDestructor) { | 
|  218   scoped_refptr<Sequence> sequence(new Sequence); |  218   scoped_refptr<Sequence> sequence(new Sequence); | 
|  219   sequence->PushTask(WrapUnique( |  219   sequence->PushTask(MakeUnique<Task>( | 
|  220       new Task(FROM_HERE, Bind(&DoNothing, PushTaskInDestructor(sequence)), |  220       FROM_HERE, Bind(&DoNothing, PushTaskInDestructor(sequence)), TaskTraits(), | 
|  221                TaskTraits(), TimeDelta()))); |  221       TimeDelta())); | 
|  222  |  222  | 
|  223   // PushTask() is invoked on |sequence| when the popped Task is destroyed. If |  223   // PushTask() is invoked on |sequence| when the popped Task is destroyed. If | 
|  224   // PopTask() destroys the Task outside the scope of its lock as expected, no |  224   // PopTask() destroys the Task outside the scope of its lock as expected, no | 
|  225   // deadlock will occur when PushTask() tries to acquire the Sequence's lock. |  225   // deadlock will occur when PushTask() tries to acquire the Sequence's lock. | 
|  226   sequence->PopTask(); |  226   sequence->PopTask(); | 
|  227  |  227  | 
|  228   // Verify that |sequence| contains exactly one Task. |  228   // Verify that |sequence| contains exactly one Task. | 
|  229   EXPECT_TRUE(sequence->PeekTask()); |  229   EXPECT_TRUE(sequence->PeekTask()); | 
|  230   EXPECT_TRUE(sequence->PopTask()); |  230   EXPECT_TRUE(sequence->PopTask()); | 
|  231 } |  231 } | 
|  232  |  232  | 
|  233 }  // namespace internal |  233 }  // namespace internal | 
|  234 }  // namespace base |  234 }  // namespace base | 
| OLD | NEW |