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 |