Index: cc/tiles/tile_manager_unittest.cc |
diff --git a/cc/tiles/tile_manager_unittest.cc b/cc/tiles/tile_manager_unittest.cc |
index a691b442c8f396b421e6b8fc407a2361bb8dff59..18cdcb834bf49190ebd4d9204ddcb76a66fbc7ee 100644 |
--- a/cc/tiles/tile_manager_unittest.cc |
+++ b/cc/tiles/tile_manager_unittest.cc |
@@ -23,6 +23,7 @@ |
#include "cc/test/fake_raster_source.h" |
#include "cc/test/fake_recording_source.h" |
#include "cc/test/fake_tile_manager.h" |
+#include "cc/test/fake_tile_task_manager.h" |
#include "cc/test/test_gpu_memory_buffer_manager.h" |
#include "cc/test/test_shared_bitmap_manager.h" |
#include "cc/test/test_task_graph_runner.h" |
@@ -1907,51 +1908,21 @@ TEST_F(ActivationTasksDoNotBlockReadyToDrawTest, |
run_loop.Run(); |
} |
-// Fake TileTaskRunner that just no-ops all calls. |
-// Fake TileTaskWorkerPool that just no-ops all calls. |
-class FakeTileTaskWorkerPool : public TileTaskWorkerPool, |
- public RasterBufferProvider { |
+// Fake TileTaskManager that just cancels all scheduled tasks immediately. |
+class CancellingTileTaskManager : public FakeTileTaskManagerImpl { |
public: |
- FakeTileTaskWorkerPool() {} |
- ~FakeTileTaskWorkerPool() override {} |
- |
- // TileTaskWorkerPool methods. |
- void Shutdown() override {} |
- void CheckForCompletedTasks() override {} |
- ResourceFormat GetResourceFormat(bool must_support_alpha) const override { |
- return ResourceFormat::RGBA_8888; |
- } |
- bool GetResourceRequiresSwizzle(bool must_support_alpha) const override { |
- return false; |
- } |
- RasterBufferProvider* AsRasterBufferProvider() override { return this; } |
- |
- void ScheduleTasks(TaskGraph* graph) override {} |
- |
- // RasterBufferProvider methods. |
- std::unique_ptr<RasterBuffer> AcquireBufferForRaster( |
- const Resource* resource, |
- uint64_t resource_content_id, |
- uint64_t previous_content_id) override { |
- NOTREACHED(); |
- return nullptr; |
- } |
- void ReleaseBufferForRaster(std::unique_ptr<RasterBuffer> buffer) override {} |
-}; |
- |
-// Fake TileTaskWorkerPool that just cancels all scheduled tasks immediately. |
-class CancellingTileTaskWorkerPool : public FakeTileTaskWorkerPool { |
- public: |
- CancellingTileTaskWorkerPool() {} |
- ~CancellingTileTaskWorkerPool() override {} |
+ CancellingTileTaskManager() {} |
+ ~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( |
+ raster_buffer_provider_.get()); |
} |
} |
+ void CheckForCompletedTasks() override {} |
}; |
class PartialRasterTileManagerTest : public TileManagerTest { |
@@ -1966,9 +1937,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; |
@@ -2001,9 +1972,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 |
@@ -2012,31 +1982,20 @@ 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 |
+// FakeRasterBufferProviderImpl that verifies the resource content ID of raster |
// tasks. |
-class VerifyResourceContentIdTileTaskWorkerPool |
- : public FakeTileTaskWorkerPool { |
+class VerifyResourceContentIdRasterBufferProvider |
+ : public FakeRasterBufferProviderImpl { |
public: |
- explicit VerifyResourceContentIdTileTaskWorkerPool( |
+ explicit VerifyResourceContentIdRasterBufferProvider( |
uint64_t expected_resource_id) |
: 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); |
- } |
- } |
+ ~VerifyResourceContentIdRasterBufferProvider() override {} |
// RasterBufferProvider methods. |
std::unique_ptr<RasterBuffer> AcquireBufferForRaster( |
@@ -2051,6 +2010,26 @@ class VerifyResourceContentIdTileTaskWorkerPool |
uint64_t expected_resource_id_; |
}; |
+class VerifyResourceContentIdTileTaskManager : public FakeTileTaskManagerImpl { |
+ public: |
+ explicit VerifyResourceContentIdTileTaskManager(uint64_t expected_resource_id) |
+ : FakeTileTaskManagerImpl(base::WrapUnique<RasterBufferProvider>( |
+ new VerifyResourceContentIdRasterBufferProvider( |
+ 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(raster_buffer_provider_.get()); |
+ // Calls TileManager as though task was cancelled. |
+ task->CompleteOnOriginThread(raster_buffer_provider_.get()); |
+ } |
+ } |
+ void CheckForCompletedTasks() override {} |
+}; |
+ |
// 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. |
@@ -2062,12 +2041,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( |
@@ -2102,13 +2080,12 @@ void RunPartialRasterCheck(std::unique_ptr<LayerTreeHostImpl> host_impl, |
queue->Top().tile()->SetInvalidated(gfx::Rect(), kInvalidatedId); |
// PrepareTiles to schedule tasks. Due to the |
- // VerifyPreviousContentTileTaskWorkerPool, these tasks will verified and |
+ // VerifyPreviousContentRasterBufferProvider, these tasks will verified and |
// 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; |
} |