| 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 f7613856351ab366ca22483de47a74c169122694..faad7c76f8257b565fde083d739e58ddd07891ae 100644
|
| --- a/cc/raster/tile_task_worker_pool_unittest.cc
|
| +++ b/cc/raster/tile_task_worker_pool_unittest.cc
|
| @@ -51,16 +51,16 @@ 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,
|
| + scoped_ptr<RasterBuffer> raster_buffer,
|
| ImageDecodeTask::Vector* dependencies)
|
| : RasterTask(dependencies),
|
| resource_(resource),
|
| - reply_(reply),
|
| + raster_buffer_(std::move(raster_buffer)),
|
| raster_source_(FakeRasterSource::CreateFilled(gfx::Size(1, 1))) {}
|
|
|
| // Overridden from Task:
|
| @@ -71,23 +71,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:
|
| + friend class TileTaskWorkerPoolTest;
|
| const Resource* resource_;
|
| - const Reply reply_;
|
| scoped_ptr<RasterBuffer> raster_buffer_;
|
| scoped_refptr<RasterSource> raster_source_;
|
|
|
| @@ -97,10 +86,11 @@ class TestRasterTaskImpl : public RasterTask {
|
| class BlockingTestRasterTaskImpl : public TestRasterTaskImpl {
|
| public:
|
| BlockingTestRasterTaskImpl(const Resource* resource,
|
| - const Reply& reply,
|
| + scoped_ptr<RasterBuffer> raster_buffer,
|
| base::Lock* lock,
|
| ImageDecodeTask::Vector* dependencies)
|
| - : TestRasterTaskImpl(resource, reply, dependencies), lock_(lock) {}
|
| + : TestRasterTaskImpl(resource, std::move(raster_buffer), dependencies),
|
| + lock_(lock) {}
|
|
|
| // Overridden from Task:
|
| void RunOnWorkerThread() override {
|
| @@ -176,17 +166,30 @@ class TileTaskWorkerPoolTest
|
|
|
| void TearDown() override {
|
| tile_task_worker_pool_->AsTileTaskRunner()->Shutdown();
|
| - tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks();
|
| + CheckForCompletedTasks();
|
| }
|
|
|
| void AllTileTasksFinished() {
|
| - tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks();
|
| + CheckForCompletedTasks();
|
| base::MessageLoop::current()->QuitWhenIdle();
|
| }
|
|
|
| + void CheckForCompletedTasks() {
|
| + Task::Vector completed_tasks;
|
| + tile_task_worker_pool_->AsTileTaskRunner()->CollectCompletedTasks(
|
| + &completed_tasks);
|
| +
|
| + for (auto task : completed_tasks) {
|
| + 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();
|
| + CheckForCompletedTasks();
|
| }
|
|
|
| void ScheduleTasks() {
|
| @@ -211,11 +214,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));
|
| + TileTaskClient* client =
|
| + reinterpret_cast<TileTaskClient*>(tile_task_worker_pool_.get());
|
| + scoped_ptr<RasterBuffer> raster_buffer =
|
| + client->AcquireBufferForRaster(const_resource, 0, 0);
|
| + tasks_.push_back(new TestRasterTaskImpl(const_resource,
|
| + std::move(raster_buffer), &empty));
|
| }
|
|
|
| void AppendTask(unsigned id) { AppendTask(id, gfx::Size(1, 1)); }
|
| @@ -230,11 +234,12 @@ class TileTaskWorkerPoolTest
|
| const Resource* const_resource = resource.get();
|
|
|
| ImageDecodeTask::Vector empty;
|
| + TileTaskClient* client =
|
| + reinterpret_cast<TileTaskClient*>(tile_task_worker_pool_.get());
|
| + scoped_ptr<RasterBuffer> raster_buffer =
|
| + client->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));
|
| + const_resource, std::move(raster_buffer), lock, &empty));
|
| }
|
|
|
| const std::vector<RasterTaskResult>& completed_tasks() const {
|
| @@ -268,10 +273,7 @@ class TileTaskWorkerPoolTest
|
| output_surface_.get(), &shared_bitmap_manager_, nullptr);
|
| }
|
|
|
| - void OnTaskCompleted(
|
| - scoped_ptr<ScopedResource> resource,
|
| - unsigned id,
|
| - bool was_canceled) {
|
| + void CompleteRasterTask(unsigned id, bool was_canceled) {
|
| RasterTaskResult result;
|
| result.id = id;
|
| result.canceled = was_canceled;
|
|
|