Chromium Code Reviews| Index: cc/raster/tile_task_worker_pool_unittest.cc |
| diff --git a/cc/raster/tile_task_worker_pool_unittest.cc b/cc/raster/tile_task_worker_pool_unittest.cc |
| index 919a88577175eea8e01652d1311733d5090b0471..bb1b389d07570bf628832864b8ef126ccab3ffad 100644 |
| --- a/cc/raster/tile_task_worker_pool_unittest.cc |
| +++ b/cc/raster/tile_task_worker_pool_unittest.cc |
| @@ -52,17 +52,19 @@ enum TileTaskWorkerPoolType { |
| TILE_TASK_WORKER_POOL_TYPE_BITMAP |
| }; |
| +class TileTaskWorkerPoolTest; |
| + |
| class TestRasterTaskImpl : public RasterTask { |
| public: |
| - typedef base::Callback<void(bool was_canceled)> Reply; |
| - |
| - TestRasterTaskImpl(const Resource* resource, |
| - const Reply& reply, |
| + TestRasterTaskImpl(std::unique_ptr<ScopedResource> resource, |
| + std::unique_ptr<RasterBuffer> raster_buffer, |
| ImageDecodeTask::Vector* dependencies) |
| : RasterTask(dependencies), |
| - resource_(resource), |
| - reply_(reply), |
| - raster_source_(FakeRasterSource::CreateFilled(gfx::Size(1, 1))) {} |
| + resource_(std::move(resource)), |
| + raster_buffer_(std::move(raster_buffer)), |
| + raster_source_(FakeRasterSource::CreateFilled(gfx::Size(1, 1))) { |
| + SetTaskTypeId(kRasterTaskTypeId); |
| + } |
| // Overridden from Task: |
| void RunOnWorkerThread() override { |
| @@ -72,23 +74,12 @@ class TestRasterTaskImpl : public RasterTask { |
| RasterSource::PlaybackSettings()); |
| } |
| - // Overridden from TileTask: |
| - void ScheduleOnOriginThread(TileTaskClient* client) override { |
| - // The raster buffer has no tile ids associated with it for partial update, |
| - // so doesn't need to provide a valid dirty rect. |
| - raster_buffer_ = client->AcquireBufferForRaster(resource_, 0, 0); |
| - } |
| - void CompleteOnOriginThread(TileTaskClient* client) override { |
| - client->ReleaseBufferForRaster(std::move(raster_buffer_)); |
| - reply_.Run(!HasFinishedRunning()); |
| - } |
| - |
| protected: |
| ~TestRasterTaskImpl() override {} |
| private: |
| - const Resource* resource_; |
| - const Reply reply_; |
| + friend class TileTaskWorkerPoolTest; |
| + std::unique_ptr<ScopedResource> resource_; |
| std::unique_ptr<RasterBuffer> raster_buffer_; |
| scoped_refptr<RasterSource> raster_source_; |
| @@ -97,11 +88,14 @@ class TestRasterTaskImpl : public RasterTask { |
| class BlockingTestRasterTaskImpl : public TestRasterTaskImpl { |
| public: |
| - BlockingTestRasterTaskImpl(const Resource* resource, |
| - const Reply& reply, |
| + BlockingTestRasterTaskImpl(std::unique_ptr<ScopedResource> resource, |
| + std::unique_ptr<RasterBuffer> raster_buffer, |
| base::Lock* lock, |
| ImageDecodeTask::Vector* dependencies) |
| - : TestRasterTaskImpl(resource, reply, dependencies), lock_(lock) {} |
| + : TestRasterTaskImpl(std::move(resource), |
| + std::move(raster_buffer), |
| + dependencies), |
| + lock_(lock) {} |
| // Overridden from Task: |
| void RunOnWorkerThread() override { |
| @@ -177,17 +171,32 @@ class TileTaskWorkerPoolTest |
| void TearDown() override { |
| tile_task_worker_pool_->AsTileTaskRunner()->Shutdown(); |
| - tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); |
| + CheckAndProcessCompletedTasks(); |
| } |
| void AllTileTasksFinished() { |
| - tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); |
| + CheckAndProcessCompletedTasks(); |
| base::MessageLoop::current()->QuitWhenIdle(); |
| } |
| + void CheckAndProcessCompletedTasks() { |
| + Task::Vector completed_tasks; |
| + tile_task_worker_pool_->AsTileTaskRunner()->CollectCompletedTasks( |
| + &completed_tasks); |
| + |
| + for (auto task : completed_tasks) { |
|
prashant.n
2016/04/11 14:51:52
Add comment or processing completed imagedecodetas
|
| + if (task->GetTaskTypeId() == kRasterTaskTypeId) { |
| + TestRasterTaskImpl* raster_task = |
| + static_cast<TestRasterTaskImpl*>(task.get()); |
| + CompleteRasterTask(0, !raster_task->HasFinishedRunning()); |
| + } |
| + static_cast<TileTask*>(task.get())->DidComplete(); |
| + } |
| + } |
| + |
| void RunMessageLoopUntilAllTasksHaveCompleted() { |
| task_graph_runner_.RunUntilIdle(); |
| - tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); |
| + CheckAndProcessCompletedTasks(); |
| } |
| void ScheduleTasks() { |
| @@ -212,11 +221,12 @@ class TileTaskWorkerPoolTest |
| const Resource* const_resource = resource.get(); |
| ImageDecodeTask::Vector empty; |
| - tasks_.push_back(new TestRasterTaskImpl( |
| - const_resource, |
| - base::Bind(&TileTaskWorkerPoolTest::OnTaskCompleted, |
| - base::Unretained(this), base::Passed(&resource), id), |
| - &empty)); |
| + std::unique_ptr<RasterBuffer> raster_buffer = |
| + tile_task_worker_pool_->AsTileTaskRunner() |
| + ->AsTileTaskClient() |
| + ->AcquireBufferForRaster(const_resource, 0, 0); |
| + tasks_.push_back(new TestRasterTaskImpl(std::move(resource), |
| + std::move(raster_buffer), &empty)); |
| } |
| void AppendTask(unsigned id) { AppendTask(id, gfx::Size(1, 1)); } |
| @@ -231,11 +241,13 @@ class TileTaskWorkerPoolTest |
| const Resource* const_resource = resource.get(); |
| ImageDecodeTask::Vector empty; |
| + std::unique_ptr<RasterBuffer> raster_buffer = |
| + tile_task_worker_pool_->AsTileTaskRunner() |
| + ->AsTileTaskClient() |
| + ->AcquireBufferForRaster(const_resource, 0, 0); |
| + |
| tasks_.push_back(new BlockingTestRasterTaskImpl( |
| - const_resource, |
| - base::Bind(&TileTaskWorkerPoolTest::OnTaskCompleted, |
| - base::Unretained(this), base::Passed(&resource), id), |
| - lock, &empty)); |
| + std::move(resource), std::move(raster_buffer), lock, &empty)); |
| } |
| const std::vector<RasterTaskResult>& completed_tasks() const { |
| @@ -269,9 +281,7 @@ class TileTaskWorkerPoolTest |
| output_surface_.get(), &shared_bitmap_manager_, nullptr); |
| } |
| - void OnTaskCompleted(std::unique_ptr<ScopedResource> resource, |
| - unsigned id, |
| - bool was_canceled) { |
| + void CompleteRasterTask(unsigned id, bool was_canceled) { |
| RasterTaskResult result; |
| result.id = id; |
| result.canceled = was_canceled; |