Index: cc/tiles/tile_manager_unittest.cc |
diff --git a/cc/tiles/tile_manager_unittest.cc b/cc/tiles/tile_manager_unittest.cc |
index 3b82483b45eac140aa09b2fe504b36dcf2b34f9b..a11c1349b9b5760d659f0a23bd1320213b422ace 100644 |
--- a/cc/tiles/tile_manager_unittest.cc |
+++ b/cc/tiles/tile_manager_unittest.cc |
@@ -1835,8 +1835,7 @@ class FakeTileTaskWorkerPool : public TileTaskWorkerPool, |
~FakeTileTaskWorkerPool() override {} |
// TileTaskWorkerPool methods. |
- void Shutdown() override {} |
- void CheckForCompletedTasks() override {} |
+ void BarrierToSyncResources() override {} |
ResourceFormat GetResourceFormat(bool must_support_alpha) const override { |
return ResourceFormat::RGBA_8888; |
} |
@@ -1845,8 +1844,6 @@ class FakeTileTaskWorkerPool : public TileTaskWorkerPool, |
} |
RasterBufferProvider* AsRasterBufferProvider() override { return this; } |
- void ScheduleTasks(TaskGraph* graph) override {} |
- |
// RasterBufferProvider methods. |
std::unique_ptr<RasterBuffer> AcquireBufferForRaster( |
const Resource* resource, |
@@ -1858,17 +1855,36 @@ class FakeTileTaskWorkerPool : public TileTaskWorkerPool, |
void ReleaseBufferForRaster(std::unique_ptr<RasterBuffer> buffer) override {} |
}; |
-// Fake TileTaskWorkerPool that just cancels all scheduled tasks immediately. |
-class CancellingTileTaskWorkerPool : public FakeTileTaskWorkerPool { |
+class FakeTileTaskManager : public TileTaskManager { |
+ public: |
+ explicit FakeTileTaskManager( |
+ std::unique_ptr<TileTaskWorkerPool> tile_task_worker_pool) |
+ : TileTaskManager(std::move(tile_task_worker_pool)) {} |
+ ~FakeTileTaskManager() override {} |
+ void Shutdown() override {} |
+ void ScheduleTasks(TaskGraph* graph) override {} |
+ void CheckForCompletedTasks() override {} |
+ |
+ // Get TileTaskWorkerPool. |
+ TileTaskWorkerPool* GetTileTaskWorkerPool() const override { |
+ return tile_task_worker_pool_.get(); |
+ } |
+}; |
+ |
+// Fake TileTaskManager that just cancels all scheduled tasks immediately. |
+class CancellingTileTaskManager : public FakeTileTaskManager { |
public: |
- CancellingTileTaskWorkerPool() {} |
- ~CancellingTileTaskWorkerPool() override {} |
+ CancellingTileTaskManager() |
+ : FakeTileTaskManager( |
+ base::WrapUnique<TileTaskWorkerPool>(new FakeTileTaskWorkerPool)) {} |
+ ~CancellingTileTaskManager() override {} |
void ScheduleTasks(TaskGraph* graph) override { |
// Just call CompleteOnOriginThread on each item in the queue. As none of |
// these items have run yet, they will be treated as cancelled tasks. |
for (const auto& node : graph->nodes) { |
- static_cast<TileTask*>(node.task)->CompleteOnOriginThread(this); |
+ static_cast<TileTask*>(node.task)->CompleteOnOriginThread( |
+ tile_task_worker_pool_->AsRasterBufferProvider()); |
} |
} |
}; |
@@ -1885,9 +1901,9 @@ class PartialRasterTileManagerTest : public TileManagerTest { |
TEST_F(PartialRasterTileManagerTest, CancelledTasksHaveNoContentId) { |
// Create a CancellingTaskRunner and set it on the tile manager so that all |
// scheduled work is immediately cancelled. |
- CancellingTileTaskWorkerPool cancelling_worker_pool; |
- host_impl_->tile_manager()->SetTileTaskWorkerPoolForTesting( |
- &cancelling_worker_pool); |
+ CancellingTileTaskManager cancelling_task_manager; |
+ host_impl_->tile_manager()->SetTileTaskManagerForTesting( |
+ &cancelling_task_manager); |
// Pick arbitrary IDs - they don't really matter as long as they're constant. |
const int kLayerId = 7; |
@@ -1920,9 +1936,8 @@ TEST_F(PartialRasterTileManagerTest, CancelledTasksHaveNoContentId) { |
EXPECT_FALSE(queue->IsEmpty()); |
queue->Top().tile()->SetInvalidated(gfx::Rect(), kInvalidatedId); |
- // PrepareTiles to schedule tasks. Due to the CancellingTileTaskWorkerPool, |
- // these |
- // tasks will immediately be canceled. |
+ // PrepareTiles to schedule tasks. Due to the CancellingTileTaskManager, |
+ // these tasks will immediately be canceled. |
host_impl_->tile_manager()->PrepareTiles(host_impl_->global_tile_state()); |
// Make sure that the tile we invalidated above was not returned to the pool |
@@ -1931,13 +1946,12 @@ TEST_F(PartialRasterTileManagerTest, CancelledTasksHaveNoContentId) { |
EXPECT_FALSE(host_impl_->resource_pool()->TryAcquireResourceWithContentId( |
kInvalidatedId)); |
- // Free our host_impl_ before the cancelling_worker_pool we passed it, as it |
- // will |
- // use that class in clean up. |
+ // Free our host_impl_ before the cancelling_task_manager we passed it, as it |
+ // will use that class in clean up. |
host_impl_ = nullptr; |
} |
-// Fake TileTaskWorkerPool that verifies the resource content ID of raster |
+// FakeTileTaskWorkerPool that verifies the resource content ID of raster |
// tasks. |
class VerifyResourceContentIdTileTaskWorkerPool |
: public FakeTileTaskWorkerPool { |
@@ -1947,16 +1961,6 @@ class VerifyResourceContentIdTileTaskWorkerPool |
: expected_resource_id_(expected_resource_id) {} |
~VerifyResourceContentIdTileTaskWorkerPool() override {} |
- void ScheduleTasks(TaskGraph* graph) override { |
- for (const auto& node : graph->nodes) { |
- TileTask* task = static_cast<TileTask*>(node.task); |
- // Triggers a call to AcquireBufferForRaster. |
- task->ScheduleOnOriginThread(this); |
- // Calls TileManager as though task was cancelled. |
- task->CompleteOnOriginThread(this); |
- } |
- } |
- |
// RasterBufferProvider methods. |
std::unique_ptr<RasterBuffer> AcquireBufferForRaster( |
const Resource* resource, |
@@ -1970,6 +1974,27 @@ class VerifyResourceContentIdTileTaskWorkerPool |
uint64_t expected_resource_id_; |
}; |
+class VerifyResourceContentIdTileTaskManager : public FakeTileTaskManager { |
+ public: |
+ explicit VerifyResourceContentIdTileTaskManager(uint64_t expected_resource_id) |
+ : FakeTileTaskManager(base::WrapUnique<TileTaskWorkerPool>( |
+ new VerifyResourceContentIdTileTaskWorkerPool( |
+ expected_resource_id))) {} |
+ ~VerifyResourceContentIdTileTaskManager() override {} |
+ |
+ void ScheduleTasks(TaskGraph* graph) override { |
+ for (const auto& node : graph->nodes) { |
+ TileTask* task = static_cast<TileTask*>(node.task); |
+ // Triggers a call to AcquireBufferForRaster. |
+ task->ScheduleOnOriginThread( |
+ tile_task_worker_pool_->AsRasterBufferProvider()); |
+ // Calls TileManager as though task was cancelled. |
+ task->CompleteOnOriginThread( |
+ tile_task_worker_pool_->AsRasterBufferProvider()); |
+ } |
+ } |
+}; |
+ |
// Runs a test to ensure that partial raster is either enabled or disabled, |
// depending on |partial_raster_enabled|'s value. Takes ownership of host_impl |
// so that cleanup order can be controlled. |
@@ -1981,12 +2006,11 @@ void RunPartialRasterCheck(std::unique_ptr<LayerTreeHostImpl> host_impl, |
const uint64_t kExpectedId = partial_raster_enabled ? kInvalidatedId : 0u; |
const gfx::Size kTileSize(128, 128); |
- // Create a VerifyResourceContentIdTileTaskWorkerPool to ensure that the |
- // raster |
- // task we see is created with |kExpectedId|. |
- VerifyResourceContentIdTileTaskWorkerPool verifying_worker_pool(kExpectedId); |
- host_impl->tile_manager()->SetTileTaskWorkerPoolForTesting( |
- &verifying_worker_pool); |
+ // Create a VerifyResourceContentIdTileTaskManager to ensure that the |
+ // raster task we see is created with |kExpectedId|. |
+ VerifyResourceContentIdTileTaskManager verifying_task_manager(kExpectedId); |
+ host_impl->tile_manager()->SetTileTaskManagerForTesting( |
+ &verifying_task_manager); |
// Ensure there's a resource with our |kInvalidatedId| in the resource pool. |
host_impl->resource_pool()->ReleaseResource( |
@@ -2025,9 +2049,8 @@ void RunPartialRasterCheck(std::unique_ptr<LayerTreeHostImpl> host_impl, |
// cancelled. |
host_impl->tile_manager()->PrepareTiles(host_impl->global_tile_state()); |
- // Free our host_impl before the cancelling_worker_pool we passed it, as it |
- // will |
- // use that class in clean up. |
+ // Free our host_impl before the verifying_task_manager we passed it, as it |
+ // will use that class in clean up. |
host_impl = nullptr; |
} |