| Index: cc/raster/raster_buffer_provider_unittest.cc
|
| diff --git a/cc/raster/raster_buffer_provider_unittest.cc b/cc/raster/raster_buffer_provider_unittest.cc
|
| index 6890dd24d8da4e03a67952a91974d7836a146c2b..9d05f30a6779e77b5abf3da3cb26f3435b7f8833 100644
|
| --- a/cc/raster/raster_buffer_provider_unittest.cc
|
| +++ b/cc/raster/raster_buffer_provider_unittest.cc
|
| @@ -51,16 +51,26 @@ enum RasterBufferProviderType {
|
| RASTER_BUFFER_PROVIDER_TYPE_BITMAP
|
| };
|
|
|
| -class TestRasterTaskImpl : public TileTask {
|
| +class TestRasterTaskCompletionHandler {
|
| public:
|
| - typedef base::Callback<void(bool was_canceled)> Reply;
|
| + virtual void OnRasterTaskCompleted(
|
| + std::unique_ptr<RasterBuffer> raster_buffer,
|
| + unsigned id,
|
| + bool was_canceled) = 0;
|
| +};
|
|
|
| - TestRasterTaskImpl(const Resource* resource,
|
| - const Reply& reply,
|
| +class TestRasterTaskImpl : public TileTask {
|
| + public:
|
| + TestRasterTaskImpl(TestRasterTaskCompletionHandler* completion_handler,
|
| + std::unique_ptr<ScopedResource> resource,
|
| + unsigned id,
|
| + std::unique_ptr<RasterBuffer> raster_buffer,
|
| TileTask::Vector* dependencies)
|
| : TileTask(true, dependencies),
|
| - resource_(resource),
|
| - reply_(reply),
|
| + completion_handler_(completion_handler),
|
| + resource_(std::move(resource)),
|
| + id_(id),
|
| + raster_buffer_(std::move(raster_buffer)),
|
| raster_source_(FakeRasterSource::CreateFilled(gfx::Size(1, 1))) {}
|
|
|
| // Overridden from Task:
|
| @@ -72,22 +82,18 @@ class TestRasterTaskImpl : public TileTask {
|
| }
|
|
|
| // Overridden from TileTask:
|
| - void ScheduleOnOriginThread(RasterBufferProvider* provider) 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_ = provider->AcquireBufferForRaster(resource_, 0, 0);
|
| - }
|
| - void CompleteOnOriginThread(RasterBufferProvider* provider) override {
|
| - provider->ReleaseBufferForRaster(std::move(raster_buffer_));
|
| - reply_.Run(!state().IsFinished());
|
| + void OnTaskCompleted() override {
|
| + completion_handler_->OnRasterTaskCompleted(std::move(raster_buffer_), id_,
|
| + state().IsCanceled());
|
| }
|
|
|
| protected:
|
| ~TestRasterTaskImpl() override {}
|
|
|
| private:
|
| - const Resource* resource_;
|
| - const Reply reply_;
|
| + TestRasterTaskCompletionHandler* completion_handler_;
|
| + std::unique_ptr<ScopedResource> resource_;
|
| + unsigned id_;
|
| std::unique_ptr<RasterBuffer> raster_buffer_;
|
| scoped_refptr<RasterSource> raster_source_;
|
|
|
| @@ -96,11 +102,19 @@ class TestRasterTaskImpl : public TileTask {
|
|
|
| class BlockingTestRasterTaskImpl : public TestRasterTaskImpl {
|
| public:
|
| - BlockingTestRasterTaskImpl(const Resource* resource,
|
| - const Reply& reply,
|
| - base::Lock* lock,
|
| - TileTask::Vector* dependencies)
|
| - : TestRasterTaskImpl(resource, reply, dependencies), lock_(lock) {}
|
| + BlockingTestRasterTaskImpl(
|
| + TestRasterTaskCompletionHandler* completion_handler,
|
| + std::unique_ptr<ScopedResource> resource,
|
| + unsigned id,
|
| + std::unique_ptr<RasterBuffer> raster_buffer,
|
| + base::Lock* lock,
|
| + TileTask::Vector* dependencies)
|
| + : TestRasterTaskImpl(completion_handler,
|
| + std::move(resource),
|
| + id,
|
| + std::move(raster_buffer),
|
| + dependencies),
|
| + lock_(lock) {}
|
|
|
| // Overridden from Task:
|
| void RunOnWorkerThread() override {
|
| @@ -118,7 +132,8 @@ class BlockingTestRasterTaskImpl : public TestRasterTaskImpl {
|
| };
|
|
|
| class RasterBufferProviderTest
|
| - : public testing::TestWithParam<RasterBufferProviderType> {
|
| + : public TestRasterTaskCompletionHandler,
|
| + public testing::TestWithParam<RasterBufferProviderType> {
|
| public:
|
| struct RasterTaskResult {
|
| unsigned id;
|
| @@ -207,14 +222,15 @@ class RasterBufferProviderTest
|
| ScopedResource::Create(resource_provider_.get()));
|
| resource->Allocate(size, ResourceProvider::TEXTURE_HINT_IMMUTABLE,
|
| RGBA_8888);
|
| - const Resource* const_resource = resource.get();
|
|
|
| + // The raster buffer has no tile ids associated with it for partial update,
|
| + // so doesn't need to provide a valid dirty rect.
|
| + std::unique_ptr<RasterBuffer> raster_buffer =
|
| + tile_task_manager_->GetRasterBufferProvider()->AcquireBufferForRaster(
|
| + resource.get(), 0, 0);
|
| TileTask::Vector empty;
|
| - tasks_.push_back(new TestRasterTaskImpl(
|
| - const_resource,
|
| - base::Bind(&RasterBufferProviderTest::OnTaskCompleted,
|
| - base::Unretained(this), base::Passed(&resource), id),
|
| - &empty));
|
| + tasks_.push_back(new TestRasterTaskImpl(this, std::move(resource), id,
|
| + std::move(raster_buffer), &empty));
|
| }
|
|
|
| void AppendTask(unsigned id) { AppendTask(id, gfx::Size(1, 1)); }
|
| @@ -226,14 +242,13 @@ class RasterBufferProviderTest
|
| ScopedResource::Create(resource_provider_.get()));
|
| resource->Allocate(size, ResourceProvider::TEXTURE_HINT_IMMUTABLE,
|
| RGBA_8888);
|
| - const Resource* const_resource = resource.get();
|
|
|
| + std::unique_ptr<RasterBuffer> raster_buffer =
|
| + tile_task_manager_->GetRasterBufferProvider()->AcquireBufferForRaster(
|
| + resource.get(), 0, 0);
|
| TileTask::Vector empty;
|
| tasks_.push_back(new BlockingTestRasterTaskImpl(
|
| - const_resource,
|
| - base::Bind(&RasterBufferProviderTest::OnTaskCompleted,
|
| - base::Unretained(this), base::Passed(&resource), id),
|
| - lock, &empty));
|
| + this, std::move(resource), id, std::move(raster_buffer), lock, &empty));
|
| }
|
|
|
| const std::vector<RasterTaskResult>& completed_tasks() const {
|
| @@ -248,6 +263,17 @@ class RasterBufferProviderTest
|
| context_provider->ContextGL()->Flush();
|
| }
|
|
|
| + void OnRasterTaskCompleted(std::unique_ptr<RasterBuffer> raster_buffer,
|
| + unsigned id,
|
| + bool was_canceled) override {
|
| + tile_task_manager_->GetRasterBufferProvider()->ReleaseBufferForRaster(
|
| + std::move(raster_buffer));
|
| + RasterTaskResult result;
|
| + result.id = id;
|
| + result.canceled = was_canceled;
|
| + completed_tasks_.push_back(result);
|
| + }
|
| +
|
| private:
|
| void Create3dOutputSurfaceAndResourceProvider() {
|
| output_surface_ = FakeOutputSurface::Create3d(context_provider_,
|
| @@ -267,15 +293,6 @@ class RasterBufferProviderTest
|
| output_surface_.get(), &shared_bitmap_manager_, nullptr);
|
| }
|
|
|
| - void OnTaskCompleted(std::unique_ptr<ScopedResource> resource,
|
| - unsigned id,
|
| - bool was_canceled) {
|
| - RasterTaskResult result;
|
| - result.id = id;
|
| - result.canceled = was_canceled;
|
| - completed_tasks_.push_back(result);
|
| - }
|
| -
|
| void OnTimeout() {
|
| timed_out_ = true;
|
| base::MessageLoop::current()->QuitWhenIdle();
|
|
|