1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "cc/test/fake_tile_manager.h"
10 #include "cc/resources/raster_worker_pool.h"
16 class FakeRasterWorkerPool : public RasterWorkerPool {
18 FakeRasterWorkerPool() : RasterWorkerPool(NULL, NULL) {}
20 // Overridden from RasterWorkerPool:
21 virtual void ScheduleTasks(RasterTask::Queue* queue) OVERRIDE {
22 for (RasterTaskQueueIterator it(queue); it; ++it) {
23 internal::RasterWorkerPoolTask* task = *it;
27 completed_tasks_.push_back(task);
30 virtual void CheckForCompletedTasks() OVERRIDE {
31 while (!completed_tasks_.empty()) {
32 internal::WorkerPoolTask* task = completed_tasks_.front().get();
36 task->RunReplyOnOriginThread();
38 completed_tasks_.pop_front();
41 virtual GLenum GetResourceTarget() const OVERRIDE {
44 virtual ResourceFormat GetResourceFormat() const OVERRIDE {
48 // Overridden from internal::WorkerPoolTaskClient:
49 virtual SkCanvas* AcquireCanvasForRaster(internal::RasterWorkerPoolTask* task)
53 virtual void OnRasterCompleted(internal::RasterWorkerPoolTask* task,
54 const PicturePileImpl::Analysis& analysis)
56 virtual void OnImageDecodeCompleted(internal::WorkerPoolTask* task) OVERRIDE {
60 // Overridden from RasterWorkerPool:
61 virtual void OnRasterTasksFinished() OVERRIDE {}
62 virtual void OnRasterTasksRequiredForActivationFinished() OVERRIDE {}
64 TaskDeque completed_tasks_;
69 FakeTileManager::FakeTileManager(TileManagerClient* client)
73 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
74 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
75 std::numeric_limits<unsigned>::max(),
79 FakeTileManager::FakeTileManager(TileManagerClient* client,
80 ResourceProvider* resource_provider)
84 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
85 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
86 std::numeric_limits<unsigned>::max(),
90 FakeTileManager::FakeTileManager(TileManagerClient* client,
91 ResourceProvider* resource_provider,
92 bool allow_on_demand_raster)
96 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
97 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
98 std::numeric_limits<unsigned>::max(),
100 allow_on_demand_raster) {}
102 FakeTileManager::FakeTileManager(TileManagerClient* client,
103 ResourceProvider* resource_provider,
104 size_t raster_task_limit_bytes)
105 : TileManager(client,
108 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
109 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
110 raster_task_limit_bytes,
114 FakeTileManager::~FakeTileManager() {}
116 void FakeTileManager::AssignMemoryToTiles(
117 const GlobalStateThatImpactsTilePriority& state) {
118 tiles_for_raster.clear();
121 SetGlobalStateForTesting(state);
122 GetTilesWithAssignedBins(&all_tiles);
123 AssignGpuMemoryToTiles(&all_tiles, &tiles_for_raster);
126 bool FakeTileManager::HasBeenAssignedMemory(Tile* tile) {
127 return std::find(tiles_for_raster.begin(),
128 tiles_for_raster.end(),
129 tile) != tiles_for_raster.end();
132 void FakeTileManager::DidFinishRunningTasksForTesting() {
133 DidFinishRunningTasks();
136 void FakeTileManager::Release(Tile* tile) {
137 TileManager::Release(tile);
138 CleanUpReleasedTiles();