| Index: cc/tiles/software_image_decode_controller_unittest.cc
 | 
| diff --git a/cc/tiles/software_image_decode_controller_unittest.cc b/cc/tiles/software_image_decode_controller_unittest.cc
 | 
| index 2a0695db43b225d779edee713745e482cdc2f7ec..d4fcdb5688ca08b0fd64acb38399720cabe8f263 100644
 | 
| --- a/cc/tiles/software_image_decode_controller_unittest.cc
 | 
| +++ b/cc/tiles/software_image_decode_controller_unittest.cc
 | 
| @@ -5,8 +5,8 @@
 | 
|  #include "cc/tiles/software_image_decode_controller.h"
 | 
|  
 | 
|  #include "cc/playback/draw_image.h"
 | 
| -#include "cc/raster/tile_task.h"
 | 
|  #include "cc/resources/resource_format.h"
 | 
| +#include "cc/test/test_tile_task_runner.h"
 | 
|  #include "testing/gtest/include/gtest/gtest.h"
 | 
|  #include "third_party/skia/include/core/SkRefCnt.h"
 | 
|  
 | 
| @@ -509,6 +509,8 @@ TEST(SoftwareImageDecodeControllerTest, GetTaskForImageSameImage) {
 | 
|    EXPECT_TRUE(need_unref);
 | 
|    EXPECT_TRUE(task.get() == another_task.get());
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
| +
 | 
|    controller.UnrefImage(draw_image);
 | 
|    controller.UnrefImage(draw_image);
 | 
|  }
 | 
| @@ -555,6 +557,10 @@ TEST(SoftwareImageDecodeControllerTest,
 | 
|    EXPECT_TRUE(high_quality_task.get() != low_quality_task.get());
 | 
|    EXPECT_TRUE(medium_quality_task.get() != low_quality_task.get());
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(high_quality_task.get());
 | 
| +  TestTileTaskRunner::ProcessTask(medium_quality_task.get());
 | 
| +  TestTileTaskRunner::ProcessTask(low_quality_task.get());
 | 
| +
 | 
|    controller.UnrefImage(high_quality_draw_image);
 | 
|    controller.UnrefImage(medium_quality_draw_image);
 | 
|    controller.UnrefImage(low_quality_draw_image);
 | 
| @@ -587,6 +593,9 @@ TEST(SoftwareImageDecodeControllerTest, GetTaskForImageSameImageDifferentSize) {
 | 
|    EXPECT_TRUE(quarter_size_task);
 | 
|    EXPECT_TRUE(half_size_task.get() != quarter_size_task.get());
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(half_size_task.get());
 | 
| +  TestTileTaskRunner::ProcessTask(quarter_size_task.get());
 | 
| +
 | 
|    controller.UnrefImage(half_size_draw_image);
 | 
|    controller.UnrefImage(quarter_size_draw_image);
 | 
|  }
 | 
| @@ -618,6 +627,9 @@ TEST(SoftwareImageDecodeControllerTest, GetTaskForImageDifferentImage) {
 | 
|    EXPECT_TRUE(second_task);
 | 
|    EXPECT_TRUE(first_task.get() != second_task.get());
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(first_task.get());
 | 
| +  TestTileTaskRunner::ProcessTask(second_task.get());
 | 
| +
 | 
|    controller.UnrefImage(first_draw_image);
 | 
|    controller.UnrefImage(second_draw_image);
 | 
|  }
 | 
| @@ -637,8 +649,8 @@ TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyDecoded) {
 | 
|    EXPECT_TRUE(need_unref);
 | 
|    EXPECT_TRUE(task);
 | 
|  
 | 
| -  // TODO(prashant.n): Implement proper task life cycle. crbug.com/599863.
 | 
| -  task->RunOnWorkerThread();
 | 
| +  TestTileTaskRunner::ScheduleTask(task.get());
 | 
| +  TestTileTaskRunner::RunTask(task.get());
 | 
|  
 | 
|    scoped_refptr<TileTask> another_task;
 | 
|    need_unref = controller.GetTaskForImageAndRef(
 | 
| @@ -646,7 +658,7 @@ TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyDecoded) {
 | 
|    EXPECT_TRUE(need_unref);
 | 
|    EXPECT_FALSE(another_task);
 | 
|  
 | 
| -  task->OnTaskCompleted();
 | 
| +  TestTileTaskRunner::CompleteTask(task.get());
 | 
|  
 | 
|    controller.UnrefImage(draw_image);
 | 
|    controller.UnrefImage(draw_image);
 | 
| @@ -667,7 +679,8 @@ TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyPrerolled) {
 | 
|    EXPECT_TRUE(need_unref);
 | 
|    EXPECT_TRUE(task);
 | 
|  
 | 
| -  task->RunOnWorkerThread();
 | 
| +  TestTileTaskRunner::ScheduleTask(task.get());
 | 
| +  TestTileTaskRunner::RunTask(task.get());
 | 
|  
 | 
|    scoped_refptr<TileTask> another_task;
 | 
|    need_unref = controller.GetTaskForImageAndRef(
 | 
| @@ -675,7 +688,7 @@ TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyPrerolled) {
 | 
|    EXPECT_TRUE(need_unref);
 | 
|    EXPECT_FALSE(another_task);
 | 
|  
 | 
| -  task->OnTaskCompleted();
 | 
| +  TestTileTaskRunner::CompleteTask(task.get());
 | 
|  
 | 
|    scoped_refptr<TileTask> third_task;
 | 
|    need_unref = controller.GetTaskForImageAndRef(
 | 
| @@ -710,7 +723,8 @@ TEST(SoftwareImageDecodeControllerTest, GetTaskForImageCanceledGetsNewTask) {
 | 
|    EXPECT_TRUE(another_task.get() == task.get());
 | 
|  
 | 
|    // Didn't run the task, complete it (it was canceled).
 | 
| -  task->OnTaskCompleted();
 | 
| +  TestTileTaskRunner::CancelTask(task.get());
 | 
| +  TestTileTaskRunner::CompleteTask(task.get());
 | 
|  
 | 
|    // Fully cancel everything (so the raster would unref things).
 | 
|    controller.UnrefImage(draw_image);
 | 
| @@ -724,6 +738,8 @@ TEST(SoftwareImageDecodeControllerTest, GetTaskForImageCanceledGetsNewTask) {
 | 
|    EXPECT_TRUE(third_task);
 | 
|    EXPECT_FALSE(third_task.get() == task.get());
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(third_task.get());
 | 
| +
 | 
|    controller.UnrefImage(draw_image);
 | 
|  }
 | 
|  
 | 
| @@ -750,7 +766,8 @@ TEST(SoftwareImageDecodeControllerTest,
 | 
|    EXPECT_TRUE(another_task.get() == task.get());
 | 
|  
 | 
|    // Didn't run the task, complete it (it was canceled).
 | 
| -  task->OnTaskCompleted();
 | 
| +  TestTileTaskRunner::CancelTask(task.get());
 | 
| +  TestTileTaskRunner::CompleteTask(task.get());
 | 
|  
 | 
|    // Note that here, everything is reffed, but a new task is created. This is
 | 
|    // possible with repeated schedule/cancel operations.
 | 
| @@ -761,6 +778,8 @@ TEST(SoftwareImageDecodeControllerTest,
 | 
|    EXPECT_TRUE(third_task);
 | 
|    EXPECT_FALSE(third_task.get() == task.get());
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(third_task.get());
 | 
| +
 | 
|    // 3 Unrefs!
 | 
|    controller.UnrefImage(draw_image);
 | 
|    controller.UnrefImage(draw_image);
 | 
| @@ -782,9 +801,7 @@ TEST(SoftwareImageDecodeControllerTest, GetDecodedImageForDraw) {
 | 
|    EXPECT_TRUE(need_unref);
 | 
|    EXPECT_TRUE(task);
 | 
|  
 | 
| -  task->RunOnWorkerThread();
 | 
| -
 | 
| -  task->OnTaskCompleted();
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
|  
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
| @@ -817,9 +834,7 @@ TEST(SoftwareImageDecodeControllerTest,
 | 
|    EXPECT_TRUE(need_unref);
 | 
|    EXPECT_TRUE(task);
 | 
|  
 | 
| -  task->RunOnWorkerThread();
 | 
| -
 | 
| -  task->OnTaskCompleted();
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
|  
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
| @@ -919,9 +934,7 @@ TEST(SoftwareImageDecodeControllerTest,
 | 
|    EXPECT_TRUE(need_unref);
 | 
|    EXPECT_TRUE(task);
 | 
|  
 | 
| -  task->RunOnWorkerThread();
 | 
| -
 | 
| -  task->OnTaskCompleted();
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
|  
 | 
|    DecodedDrawImage another_decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
| @@ -970,9 +983,7 @@ TEST(SoftwareImageDecodeControllerTest,
 | 
|    // instead of decoding again.
 | 
|    controller.DrawWithImageFinished(draw_image, decoded_draw_image);
 | 
|  
 | 
| -  task->RunOnWorkerThread();
 | 
| -
 | 
| -  task->OnTaskCompleted();
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
|  
 | 
|    DecodedDrawImage another_decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
| @@ -1048,6 +1059,8 @@ TEST(SoftwareImageDecodeControllerTest, LowQualityFilterIsHandled) {
 | 
|    EXPECT_TRUE(task);
 | 
|    EXPECT_TRUE(need_unref);
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
| +
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
|    EXPECT_TRUE(decoded_draw_image.image());
 | 
| @@ -1074,6 +1087,8 @@ TEST(SoftwareImageDecodeControllerTest, LowQualityScaledSubrectIsHandled) {
 | 
|    EXPECT_TRUE(task);
 | 
|    EXPECT_TRUE(need_unref);
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
| +
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
|    EXPECT_TRUE(decoded_draw_image.image());
 | 
| @@ -1102,6 +1117,8 @@ TEST(SoftwareImageDecodeControllerTest, NoneQualityScaledSubrectIsHandled) {
 | 
|    EXPECT_TRUE(task);
 | 
|    EXPECT_TRUE(need_unref);
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
| +
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
|    EXPECT_TRUE(decoded_draw_image.image());
 | 
| @@ -1131,6 +1148,8 @@ TEST(SoftwareImageDecodeControllerTest, MediumQualityAt01_5ScaleIsHandled) {
 | 
|    EXPECT_TRUE(task);
 | 
|    EXPECT_TRUE(need_unref);
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
| +
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
|    EXPECT_TRUE(decoded_draw_image.image());
 | 
| @@ -1161,6 +1180,8 @@ TEST(SoftwareImageDecodeControllerTest, MediumQualityAt1_0ScaleIsHandled) {
 | 
|    EXPECT_TRUE(task);
 | 
|    EXPECT_TRUE(need_unref);
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
| +
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
|    EXPECT_TRUE(decoded_draw_image.image());
 | 
| @@ -1191,6 +1212,8 @@ TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_75ScaleIsHandled) {
 | 
|    EXPECT_TRUE(task);
 | 
|    EXPECT_TRUE(need_unref);
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
| +
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
|    EXPECT_TRUE(decoded_draw_image.image());
 | 
| @@ -1221,6 +1244,8 @@ TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_5ScaleIsHandled) {
 | 
|    EXPECT_TRUE(task);
 | 
|    EXPECT_TRUE(need_unref);
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
| +
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
|    EXPECT_TRUE(decoded_draw_image.image());
 | 
| @@ -1251,6 +1276,8 @@ TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_49ScaleIsHandled) {
 | 
|    EXPECT_TRUE(task);
 | 
|    EXPECT_TRUE(need_unref);
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
| +
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
|    EXPECT_TRUE(decoded_draw_image.image());
 | 
| @@ -1281,6 +1308,8 @@ TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_1ScaleIsHandled) {
 | 
|    EXPECT_TRUE(task);
 | 
|    EXPECT_TRUE(need_unref);
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
| +
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
|    EXPECT_TRUE(decoded_draw_image.image());
 | 
| @@ -1311,6 +1340,8 @@ TEST(SoftwareImageDecodeControllerTest, MediumQualityAt0_01ScaleIsHandled) {
 | 
|    EXPECT_TRUE(task);
 | 
|    EXPECT_TRUE(need_unref);
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(task.get());
 | 
| +
 | 
|    DecodedDrawImage decoded_draw_image =
 | 
|        controller.GetDecodedImageForDraw(draw_image);
 | 
|    EXPECT_TRUE(decoded_draw_image.image());
 | 
| @@ -1373,6 +1404,8 @@ TEST(SoftwareImageDecodeControllerTest,
 | 
|    EXPECT_TRUE(task_49);
 | 
|    EXPECT_TRUE(need_unref_49);
 | 
|  
 | 
| +  TestTileTaskRunner::ProcessTask(task_49.get());
 | 
| +
 | 
|    DecodedDrawImage decoded_draw_image_50 =
 | 
|        controller.GetDecodedImageForDraw(draw_image_50);
 | 
|    EXPECT_TRUE(decoded_draw_image_50.image());
 | 
| 
 |