OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/resources/tile_task_worker_pool.h" | 5 #include "cc/resources/tile_task_worker_pool.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/cancelable_callback.h" | 10 #include "base/cancelable_callback.h" |
| 11 #include "cc/base/unique_notifier.h" |
11 #include "cc/resources/bitmap_tile_task_worker_pool.h" | 12 #include "cc/resources/bitmap_tile_task_worker_pool.h" |
12 #include "cc/resources/gpu_tile_task_worker_pool.h" | 13 #include "cc/resources/gpu_tile_task_worker_pool.h" |
13 #include "cc/resources/one_copy_tile_task_worker_pool.h" | 14 #include "cc/resources/one_copy_tile_task_worker_pool.h" |
14 #include "cc/resources/picture_pile.h" | 15 #include "cc/resources/picture_pile.h" |
15 #include "cc/resources/picture_pile_impl.h" | 16 #include "cc/resources/picture_pile_impl.h" |
16 #include "cc/resources/pixel_buffer_tile_task_worker_pool.h" | 17 #include "cc/resources/pixel_buffer_tile_task_worker_pool.h" |
17 #include "cc/resources/raster_buffer.h" | 18 #include "cc/resources/raster_buffer.h" |
18 #include "cc/resources/resource_pool.h" | 19 #include "cc/resources/resource_pool.h" |
19 #include "cc/resources/resource_provider.h" | 20 #include "cc/resources/resource_provider.h" |
20 #include "cc/resources/scoped_resource.h" | 21 #include "cc/resources/scoped_resource.h" |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 unsigned id; | 119 unsigned id; |
119 bool canceled; | 120 bool canceled; |
120 }; | 121 }; |
121 | 122 |
122 typedef std::vector<scoped_refptr<RasterTask>> RasterTaskVector; | 123 typedef std::vector<scoped_refptr<RasterTask>> RasterTaskVector; |
123 | 124 |
124 enum NamedTaskSet { ALL, REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW }; | 125 enum NamedTaskSet { ALL, REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW }; |
125 | 126 |
126 TileTaskWorkerPoolTest() | 127 TileTaskWorkerPoolTest() |
127 : context_provider_(TestContextProvider::Create()), | 128 : context_provider_(TestContextProvider::Create()), |
| 129 all_tile_tasks_finished_( |
| 130 base::MessageLoopProxy::current().get(), |
| 131 base::Bind(&TileTaskWorkerPoolTest::AllTileTasksFinished, |
| 132 base::Unretained(this))), |
128 timeout_seconds_(5), | 133 timeout_seconds_(5), |
129 timed_out_(false) {} | 134 timed_out_(false) {} |
130 | 135 |
131 // Overridden from testing::Test: | 136 // Overridden from testing::Test: |
132 void SetUp() override { | 137 void SetUp() override { |
133 switch (GetParam()) { | 138 switch (GetParam()) { |
134 case TILE_TASK_WORKER_POOL_TYPE_PIXEL_BUFFER: | 139 case TILE_TASK_WORKER_POOL_TYPE_PIXEL_BUFFER: |
135 Create3dOutputSurfaceAndResourceProvider(); | 140 Create3dOutputSurfaceAndResourceProvider(); |
136 tile_task_worker_pool_ = PixelBufferTileTaskWorkerPool::Create( | 141 tile_task_worker_pool_ = PixelBufferTileTaskWorkerPool::Create( |
137 base::MessageLoopProxy::current().get(), | 142 base::MessageLoopProxy::current().get(), |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 | 174 |
170 DCHECK(tile_task_worker_pool_); | 175 DCHECK(tile_task_worker_pool_); |
171 tile_task_worker_pool_->AsTileTaskRunner()->SetClient(this); | 176 tile_task_worker_pool_->AsTileTaskRunner()->SetClient(this); |
172 } | 177 } |
173 | 178 |
174 void TearDown() override { | 179 void TearDown() override { |
175 tile_task_worker_pool_->AsTileTaskRunner()->Shutdown(); | 180 tile_task_worker_pool_->AsTileTaskRunner()->Shutdown(); |
176 tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); | 181 tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); |
177 } | 182 } |
178 | 183 |
| 184 void AllTileTasksFinished() { |
| 185 tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); |
| 186 base::MessageLoop::current()->Quit(); |
| 187 } |
| 188 |
179 // Overriden from TileTaskWorkerPoolClient: | 189 // Overriden from TileTaskWorkerPoolClient: |
180 void DidFinishRunningTileTasks(TaskSet task_set) override { | 190 void DidFinishRunningTileTasks(TaskSet task_set) override { |
181 if (task_set == ALL) { | 191 if (task_set == ALL) |
182 tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); | 192 all_tile_tasks_finished_.Schedule(); |
183 base::MessageLoop::current()->Quit(); | |
184 } | |
185 } | 193 } |
| 194 |
186 TaskSetCollection TasksThatShouldBeForcedToComplete() const override { | 195 TaskSetCollection TasksThatShouldBeForcedToComplete() const override { |
187 return TaskSetCollection(); | 196 return TaskSetCollection(); |
188 } | 197 } |
189 | 198 |
190 void RunMessageLoopUntilAllTasksHaveCompleted() { | 199 void RunMessageLoopUntilAllTasksHaveCompleted() { |
191 if (timeout_seconds_) { | 200 if (timeout_seconds_) { |
192 timeout_.Reset(base::Bind(&TileTaskWorkerPoolTest::OnTimeout, | 201 timeout_.Reset(base::Bind(&TileTaskWorkerPoolTest::OnTimeout, |
193 base::Unretained(this))); | 202 base::Unretained(this))); |
194 base::MessageLoopProxy::current()->PostDelayedTask( | 203 base::MessageLoopProxy::current()->PostDelayedTask( |
195 FROM_HERE, timeout_.callback(), | 204 FROM_HERE, timeout_.callback(), |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 protected: | 299 protected: |
291 scoped_refptr<TestContextProvider> context_provider_; | 300 scoped_refptr<TestContextProvider> context_provider_; |
292 FakeOutputSurfaceClient output_surface_client_; | 301 FakeOutputSurfaceClient output_surface_client_; |
293 scoped_ptr<FakeOutputSurface> output_surface_; | 302 scoped_ptr<FakeOutputSurface> output_surface_; |
294 scoped_ptr<ResourceProvider> resource_provider_; | 303 scoped_ptr<ResourceProvider> resource_provider_; |
295 scoped_ptr<ResourcePool> staging_resource_pool_; | 304 scoped_ptr<ResourcePool> staging_resource_pool_; |
296 scoped_ptr<TileTaskWorkerPool> tile_task_worker_pool_; | 305 scoped_ptr<TileTaskWorkerPool> tile_task_worker_pool_; |
297 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; | 306 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; |
298 TestSharedBitmapManager shared_bitmap_manager_; | 307 TestSharedBitmapManager shared_bitmap_manager_; |
299 base::CancelableClosure timeout_; | 308 base::CancelableClosure timeout_; |
| 309 UniqueNotifier all_tile_tasks_finished_; |
300 int timeout_seconds_; | 310 int timeout_seconds_; |
301 bool timed_out_; | 311 bool timed_out_; |
302 RasterTaskVector tasks_; | 312 RasterTaskVector tasks_; |
303 std::vector<RasterTaskResult> completed_tasks_; | 313 std::vector<RasterTaskResult> completed_tasks_; |
304 }; | 314 }; |
305 | 315 |
306 TEST_P(TileTaskWorkerPoolTest, Basic) { | 316 TEST_P(TileTaskWorkerPoolTest, Basic) { |
307 AppendTask(0u); | 317 AppendTask(0u); |
308 AppendTask(1u); | 318 AppendTask(1u); |
309 ScheduleTasks(); | 319 ScheduleTasks(); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 TileTaskWorkerPoolTests, | 389 TileTaskWorkerPoolTests, |
380 TileTaskWorkerPoolTest, | 390 TileTaskWorkerPoolTest, |
381 ::testing::Values(TILE_TASK_WORKER_POOL_TYPE_PIXEL_BUFFER, | 391 ::testing::Values(TILE_TASK_WORKER_POOL_TYPE_PIXEL_BUFFER, |
382 TILE_TASK_WORKER_POOL_TYPE_ZERO_COPY, | 392 TILE_TASK_WORKER_POOL_TYPE_ZERO_COPY, |
383 TILE_TASK_WORKER_POOL_TYPE_ONE_COPY, | 393 TILE_TASK_WORKER_POOL_TYPE_ONE_COPY, |
384 TILE_TASK_WORKER_POOL_TYPE_GPU, | 394 TILE_TASK_WORKER_POOL_TYPE_GPU, |
385 TILE_TASK_WORKER_POOL_TYPE_BITMAP)); | 395 TILE_TASK_WORKER_POOL_TYPE_BITMAP)); |
386 | 396 |
387 } // namespace | 397 } // namespace |
388 } // namespace cc | 398 } // namespace cc |
OLD | NEW |