| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/test/fake_tile_manager.h" | 5 #include "cc/test/fake_tile_manager.h" |
| 6 | 6 |
| 7 #include <deque> | 7 #include <deque> |
| 8 #include <limits> | 8 #include <limits> |
| 9 | 9 |
| 10 #include "cc/resources/raster_worker_pool.h" | 10 #include "cc/resources/raster_worker_pool.h" |
| 11 | 11 |
| 12 namespace cc { | 12 namespace cc { |
| 13 | 13 |
| 14 namespace { | 14 namespace { |
| 15 | 15 |
| 16 class FakeTaskGraphRunner : public internal::TaskGraphRunner { | |
| 17 public: | |
| 18 FakeTaskGraphRunner() : internal::TaskGraphRunner(0, "CompositorRaster") {} | |
| 19 }; | |
| 20 base::LazyInstance<FakeTaskGraphRunner> g_task_graph_runner = | |
| 21 LAZY_INSTANCE_INITIALIZER; | |
| 22 | |
| 23 class FakeRasterWorkerPool : public RasterWorkerPool { | 16 class FakeRasterWorkerPool : public RasterWorkerPool { |
| 24 public: | 17 public: |
| 25 FakeRasterWorkerPool() | 18 FakeRasterWorkerPool() : RasterWorkerPool(NULL, NULL) {} |
| 26 : RasterWorkerPool(g_task_graph_runner.Pointer(), NULL, NULL) {} | |
| 27 | 19 |
| 28 // Overridden from RasterWorkerPool: | 20 // Overridden from RasterWorkerPool: |
| 29 virtual void ScheduleTasks(RasterTask::Queue* queue) OVERRIDE { | 21 virtual void ScheduleTasks(RasterTaskQueue* queue) OVERRIDE { |
| 30 for (RasterTaskQueueIterator it(queue); it; ++it) { | 22 for (RasterTaskQueueIterator it(queue); it; ++it) { |
| 31 internal::RasterWorkerPoolTask* task = *it; | 23 internal::RasterWorkerPoolTask* task = *it; |
| 32 | 24 |
| 33 task->DidSchedule(); | 25 task->DidSchedule(); |
| 34 | 26 |
| 35 completed_tasks_.push_back(task); | 27 completed_tasks_.push_back(task); |
| 36 } | 28 } |
| 37 } | 29 } |
| 38 virtual void CheckForCompletedTasks() OVERRIDE { | 30 virtual void CheckForCompletedTasks() OVERRIDE { |
| 39 internal::Task::Vector completed_tasks; | |
| 40 CollectCompletedWorkerPoolTasks(&completed_tasks); | |
| 41 | |
| 42 while (!completed_tasks_.empty()) { | 31 while (!completed_tasks_.empty()) { |
| 43 internal::WorkerPoolTask* task = completed_tasks_.front().get(); | 32 internal::WorkerPoolTask* task = completed_tasks_.front().get(); |
| 44 | 33 |
| 45 task->WillComplete(); | 34 task->WillComplete(); |
| 46 task->DidComplete(); | 35 task->DidComplete(); |
| 47 task->RunReplyOnOriginThread(); | 36 task->RunReplyOnOriginThread(); |
| 48 | 37 |
| 49 completed_tasks_.pop_front(); | 38 completed_tasks_.pop_front(); |
| 50 } | 39 } |
| 51 } | 40 } |
| (...skipping 21 matching lines...) Expand all Loading... |
| 73 virtual void OnRasterTasksRequiredForActivationFinished() OVERRIDE {} | 62 virtual void OnRasterTasksRequiredForActivationFinished() OVERRIDE {} |
| 74 | 63 |
| 75 TaskDeque completed_tasks_; | 64 TaskDeque completed_tasks_; |
| 76 }; | 65 }; |
| 77 | 66 |
| 78 } // namespace | 67 } // namespace |
| 79 | 68 |
| 80 FakeTileManager::FakeTileManager(TileManagerClient* client) | 69 FakeTileManager::FakeTileManager(TileManagerClient* client) |
| 81 : TileManager(client, | 70 : TileManager(client, |
| 82 NULL, | 71 NULL, |
| 72 NULL, |
| 73 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool), |
| 83 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool), | 74 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool), |
| 84 std::numeric_limits<unsigned>::max(), | 75 std::numeric_limits<unsigned>::max(), |
| 85 NULL, | 76 NULL, |
| 86 true) {} | 77 true) {} |
| 87 | 78 |
| 88 FakeTileManager::FakeTileManager(TileManagerClient* client, | 79 FakeTileManager::FakeTileManager(TileManagerClient* client, |
| 89 ResourceProvider* resource_provider) | 80 ResourceProvider* resource_provider) |
| 90 : TileManager(client, | 81 : TileManager(client, |
| 91 resource_provider, | 82 resource_provider, |
| 83 NULL, |
| 84 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool), |
| 92 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool), | 85 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool), |
| 93 std::numeric_limits<unsigned>::max(), | 86 std::numeric_limits<unsigned>::max(), |
| 94 NULL, | 87 NULL, |
| 95 true) {} | 88 true) {} |
| 96 | 89 |
| 97 FakeTileManager::FakeTileManager(TileManagerClient* client, | 90 FakeTileManager::FakeTileManager(TileManagerClient* client, |
| 98 ResourceProvider* resource_provider, | 91 ResourceProvider* resource_provider, |
| 99 bool allow_on_demand_raster) | 92 bool allow_on_demand_raster) |
| 100 : TileManager(client, | 93 : TileManager(client, |
| 101 resource_provider, | 94 resource_provider, |
| 95 NULL, |
| 96 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool), |
| 102 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool), | 97 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool), |
| 103 std::numeric_limits<unsigned>::max(), | 98 std::numeric_limits<unsigned>::max(), |
| 104 NULL, | 99 NULL, |
| 105 allow_on_demand_raster) {} | 100 allow_on_demand_raster) {} |
| 106 | 101 |
| 107 FakeTileManager::FakeTileManager(TileManagerClient* client, | 102 FakeTileManager::FakeTileManager(TileManagerClient* client, |
| 108 ResourceProvider* resource_provider, | 103 ResourceProvider* resource_provider, |
| 109 size_t raster_task_limit_bytes) | 104 size_t raster_task_limit_bytes) |
| 110 : TileManager(client, | 105 : TileManager(client, |
| 111 resource_provider, | 106 resource_provider, |
| 107 NULL, |
| 108 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool), |
| 112 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool), | 109 make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool), |
| 113 raster_task_limit_bytes, | 110 raster_task_limit_bytes, |
| 114 NULL, | 111 NULL, |
| 115 true) {} | 112 true) {} |
| 116 | 113 |
| 117 FakeTileManager::~FakeTileManager() {} | 114 FakeTileManager::~FakeTileManager() {} |
| 118 | 115 |
| 119 void FakeTileManager::AssignMemoryToTiles( | 116 void FakeTileManager::AssignMemoryToTiles( |
| 120 const GlobalStateThatImpactsTilePriority& state) { | 117 const GlobalStateThatImpactsTilePriority& state) { |
| 121 tiles_for_raster.clear(); | 118 tiles_for_raster.clear(); |
| 122 all_tiles.Clear(); | 119 all_tiles.Clear(); |
| 123 | 120 |
| 124 SetGlobalStateForTesting(state); | 121 SetGlobalStateForTesting(state); |
| 125 GetTilesWithAssignedBins(&all_tiles); | 122 GetTilesWithAssignedBins(&all_tiles); |
| 126 AssignGpuMemoryToTiles(&all_tiles, &tiles_for_raster); | 123 AssignGpuMemoryToTiles(&all_tiles, &tiles_for_raster); |
| 127 } | 124 } |
| 128 | 125 |
| 129 bool FakeTileManager::HasBeenAssignedMemory(Tile* tile) { | 126 bool FakeTileManager::HasBeenAssignedMemory(Tile* tile) { |
| 130 return std::find(tiles_for_raster.begin(), | 127 return std::find(tiles_for_raster.begin(), |
| 131 tiles_for_raster.end(), | 128 tiles_for_raster.end(), |
| 132 tile) != tiles_for_raster.end(); | 129 tile) != tiles_for_raster.end(); |
| 133 } | 130 } |
| 134 | 131 |
| 135 void FakeTileManager::CheckForCompletedTasks() { | |
| 136 RasterWorkerPoolForTesting()->CheckForCompletedTasks(); | |
| 137 } | |
| 138 | |
| 139 void FakeTileManager::DidFinishRunningTasksForTesting() { | 132 void FakeTileManager::DidFinishRunningTasksForTesting() { |
| 140 DidFinishRunningTasks(); | 133 DidFinishRunningTasks(); |
| 141 } | 134 } |
| 142 | 135 |
| 143 void FakeTileManager::Release(Tile* tile) { | 136 void FakeTileManager::Release(Tile* tile) { |
| 144 TileManager::Release(tile); | 137 TileManager::Release(tile); |
| 145 CleanUpReleasedTiles(); | 138 CleanUpReleasedTiles(); |
| 146 } | 139 } |
| 147 | 140 |
| 148 } // namespace cc | 141 } // namespace cc |
| OLD | NEW |