Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(416)

Side by Side Diff: cc/resources/raster_worker_pool_unittest.cc

Issue 165603002: cc: Move GPU raster to DirectRasterWorkerPool. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/raster_worker_pool.h" 5 #include "cc/resources/raster_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/resources/direct_raster_worker_pool.h"
11 #include "cc/resources/image_raster_worker_pool.h" 12 #include "cc/resources/image_raster_worker_pool.h"
12 #include "cc/resources/picture_pile.h" 13 #include "cc/resources/picture_pile.h"
13 #include "cc/resources/picture_pile_impl.h" 14 #include "cc/resources/picture_pile_impl.h"
14 #include "cc/resources/pixel_buffer_raster_worker_pool.h" 15 #include "cc/resources/pixel_buffer_raster_worker_pool.h"
15 #include "cc/resources/resource_provider.h" 16 #include "cc/resources/resource_provider.h"
16 #include "cc/resources/scoped_resource.h" 17 #include "cc/resources/scoped_resource.h"
17 #include "cc/test/fake_output_surface.h" 18 #include "cc/test/fake_output_surface.h"
18 #include "cc/test/fake_output_surface_client.h" 19 #include "cc/test/fake_output_surface_client.h"
19 #include "cc/test/test_web_graphics_context_3d.h" 20 #include "cc/test/test_web_graphics_context_3d.h"
20 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
21 22
22 namespace cc { 23 namespace cc {
23 namespace { 24 namespace {
24 25
25 enum RasterThread { 26 enum RasterThread {
26 RASTER_THREAD_NONE, 27 RASTER_THREAD_NONE,
27 RASTER_THREAD_ORIGIN, 28 RASTER_THREAD_ORIGIN,
28 RASTER_THREAD_WORKER 29 RASTER_THREAD_WORKER
29 }; 30 };
30 31
31 enum RasterWorkerPoolType { 32 enum RasterWorkerPoolType {
32 RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER, 33 RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER,
33 RASTER_WORKER_POOL_TYPE_IMAGE 34 RASTER_WORKER_POOL_TYPE_IMAGE,
35 RASTER_WORKER_POOL_TYPE_DIRECT
34 }; 36 };
35 37
36 class TestRasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { 38 class TestRasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
37 public: 39 public:
38 typedef base::Callback<void(const PicturePileImpl::Analysis& analysis, 40 typedef base::Callback<void(const PicturePileImpl::Analysis& analysis,
39 bool was_canceled, 41 bool was_canceled,
40 RasterThread raster_thread)> Reply; 42 RasterThread raster_thread)> Reply;
41 43
42 TestRasterWorkerPoolTaskImpl(const Resource* resource, 44 TestRasterWorkerPoolTaskImpl(const Resource* resource,
43 const Reply& reply, 45 const Reply& reply,
44 internal::Task::Vector* dependencies, 46 internal::WorkerPoolTask::Vector* dependencies)
45 bool use_gpu_rasterization) 47 : internal::RasterWorkerPoolTask(resource, dependencies),
46 : internal::RasterWorkerPoolTask(resource,
47 dependencies,
48 use_gpu_rasterization),
49 reply_(reply), 48 reply_(reply),
50 raster_thread_(RASTER_THREAD_NONE) {} 49 raster_thread_(RASTER_THREAD_NONE) {}
51 50
52 // Overridden from internal::Task: 51 // Overridden from internal::Task:
53 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE { 52 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE {
54 raster_thread_ = RASTER_THREAD_WORKER; 53 raster_thread_ = RASTER_THREAD_WORKER;
55 } 54 }
56 55
57 // Overridden from internal::WorkerPoolTask: 56 // Overridden from internal::WorkerPoolTask:
58 virtual void ScheduleOnOriginThread(internal::WorkerPoolTaskClient* client) 57 virtual void ScheduleOnOriginThread(internal::WorkerPoolTaskClient* client)
59 OVERRIDE { 58 OVERRIDE {
60 client->AcquireCanvasForRaster(this); 59 client->AcquireCanvasForRaster(this);
61 } 60 }
61 virtual void RunOnOriginThread() OVERRIDE {
62 raster_thread_ = RASTER_THREAD_ORIGIN;
63 }
62 virtual void CompleteOnOriginThread(internal::WorkerPoolTaskClient* client) 64 virtual void CompleteOnOriginThread(internal::WorkerPoolTaskClient* client)
63 OVERRIDE { 65 OVERRIDE {
64 client->OnRasterCompleted(this, PicturePileImpl::Analysis()); 66 client->OnRasterCompleted(this, PicturePileImpl::Analysis());
65 } 67 }
66 virtual void RunReplyOnOriginThread() OVERRIDE { 68 virtual void RunReplyOnOriginThread() OVERRIDE {
67 reply_.Run( 69 reply_.Run(
68 PicturePileImpl::Analysis(), !HasFinishedRunning(), raster_thread_); 70 PicturePileImpl::Analysis(), !HasFinishedRunning(), raster_thread_);
69 } 71 }
70 72
71 // Overridden from internal::RasterWorkerPoolTask:
72 virtual void RunOnOriginThread(ResourceProvider* resource_provider,
73 ContextProvider* context_provider) OVERRIDE {
74 raster_thread_ = RASTER_THREAD_ORIGIN;
75 }
76
77 protected: 73 protected:
78 virtual ~TestRasterWorkerPoolTaskImpl() {} 74 virtual ~TestRasterWorkerPoolTaskImpl() {}
79 75
80 private: 76 private:
81 const Reply reply_; 77 const Reply reply_;
82 RasterThread raster_thread_; 78 RasterThread raster_thread_;
83 79
84 DISALLOW_COPY_AND_ASSIGN(TestRasterWorkerPoolTaskImpl); 80 DISALLOW_COPY_AND_ASSIGN(TestRasterWorkerPoolTaskImpl);
85 }; 81 };
86 82
87 class BlockingTestRasterWorkerPoolTaskImpl 83 class BlockingTestRasterWorkerPoolTaskImpl
88 : public TestRasterWorkerPoolTaskImpl { 84 : public TestRasterWorkerPoolTaskImpl {
89 public: 85 public:
90 BlockingTestRasterWorkerPoolTaskImpl(const Resource* resource, 86 BlockingTestRasterWorkerPoolTaskImpl(
91 const Reply& reply, 87 const Resource* resource,
92 base::Lock* lock, 88 const Reply& reply,
93 internal::Task::Vector* dependencies, 89 base::Lock* lock,
94 bool use_gpu_rasterization) 90 internal::WorkerPoolTask::Vector* dependencies)
95 : TestRasterWorkerPoolTaskImpl(resource, 91 : TestRasterWorkerPoolTaskImpl(resource, reply, dependencies),
96 reply,
97 dependencies,
98 use_gpu_rasterization),
99 lock_(lock) {} 92 lock_(lock) {}
100 93
101 // Overridden from internal::Task: 94 // Overridden from internal::Task:
102 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE { 95 virtual void RunOnWorkerThread(unsigned thread_index) OVERRIDE {
103 base::AutoLock lock(*lock_); 96 base::AutoLock lock(*lock_);
104 TestRasterWorkerPoolTaskImpl::RunOnWorkerThread(thread_index); 97 TestRasterWorkerPoolTaskImpl::RunOnWorkerThread(thread_index);
105 } 98 }
106 99
107 // Overridden from internal::WorkerPoolTask: 100 // Overridden from internal::WorkerPoolTask:
108 virtual void RunReplyOnOriginThread() OVERRIDE {} 101 virtual void RunReplyOnOriginThread() OVERRIDE {}
109 102
110 protected: 103 protected:
111 virtual ~BlockingTestRasterWorkerPoolTaskImpl() {} 104 virtual ~BlockingTestRasterWorkerPoolTaskImpl() {}
112 105
113 private: 106 private:
114 base::Lock* lock_; 107 base::Lock* lock_;
115 108
116 DISALLOW_COPY_AND_ASSIGN(BlockingTestRasterWorkerPoolTaskImpl); 109 DISALLOW_COPY_AND_ASSIGN(BlockingTestRasterWorkerPoolTaskImpl);
117 }; 110 };
118 111
119 class RasterWorkerPoolTest 112 class RasterWorkerPoolTest
120 : public testing::TestWithParam<RasterWorkerPoolType>, 113 : public testing::TestWithParam<RasterWorkerPoolType>,
121 public RasterWorkerPoolClient { 114 public RasterWorkerPoolClient {
122 public: 115 public:
123 class RasterTask : public RasterWorkerPool::RasterTask {
124 public:
125 typedef std::vector<RasterTask> Vector;
126
127 static RasterTask Create(const Resource* resource,
128 const TestRasterWorkerPoolTaskImpl::Reply& reply,
129 bool use_gpu_rasterization) {
130 internal::Task::Vector dependencies;
131 return RasterTask(new TestRasterWorkerPoolTaskImpl(
132 resource, reply, &dependencies, use_gpu_rasterization));
133 }
134
135 static RasterTask CreateBlocking(
136 const Resource* resource,
137 const TestRasterWorkerPoolTaskImpl::Reply& reply,
138 base::Lock* lock,
139 bool use_gpu_rasterization) {
140 internal::Task::Vector dependencies;
141 return RasterTask(new BlockingTestRasterWorkerPoolTaskImpl(
142 resource, reply, lock, &dependencies, use_gpu_rasterization));
143 }
144
145 private:
146 friend class RasterWorkerPoolTest;
147
148 explicit RasterTask(internal::RasterWorkerPoolTask* task)
149 : RasterWorkerPool::RasterTask(task) {}
150 };
151
152 struct RasterTaskResult { 116 struct RasterTaskResult {
153 unsigned id; 117 unsigned id;
154 bool canceled; 118 bool canceled;
155 RasterThread raster_thread; 119 RasterThread raster_thread;
156 }; 120 };
157 121
122 typedef std::vector<scoped_refptr<internal::RasterWorkerPoolTask> >
123 RasterTaskVector;
124
158 RasterWorkerPoolTest() 125 RasterWorkerPoolTest()
159 : context_provider_(TestContextProvider::Create()), 126 : context_provider_(TestContextProvider::Create()),
160 timeout_seconds_(5), 127 timeout_seconds_(5),
161 timed_out_(false) { 128 timed_out_(false) {
162 output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass(); 129 output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass();
163 CHECK(output_surface_->BindToClient(&output_surface_client_)); 130 CHECK(output_surface_->BindToClient(&output_surface_client_));
164 131
165 resource_provider_ = ResourceProvider::Create( 132 resource_provider_ = ResourceProvider::Create(
166 output_surface_.get(), NULL, 0, false, 1).Pass(); 133 output_surface_.get(), NULL, 0, false, 1).Pass();
167 134
168 switch (GetParam()) { 135 switch (GetParam()) {
169 case RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER: 136 case RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER:
170 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( 137 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create(
171 resource_provider_.get(), 138 resource_provider_.get(),
172 context_provider_.get(),
173 std::numeric_limits<size_t>::max()); 139 std::numeric_limits<size_t>::max());
174 break; 140 break;
175 case RASTER_WORKER_POOL_TYPE_IMAGE: 141 case RASTER_WORKER_POOL_TYPE_IMAGE:
176 raster_worker_pool_ = ImageRasterWorkerPool::Create( 142 raster_worker_pool_ = ImageRasterWorkerPool::Create(
177 resource_provider_.get(), context_provider_.get(), GL_TEXTURE_2D); 143 resource_provider_.get(), GL_TEXTURE_2D);
144 break;
145 case RASTER_WORKER_POOL_TYPE_DIRECT:
146 raster_worker_pool_ = DirectRasterWorkerPool::Create(
147 resource_provider_.get(), context_provider_.get());
178 break; 148 break;
179 } 149 }
180 150
181 DCHECK(raster_worker_pool_); 151 DCHECK(raster_worker_pool_);
182 raster_worker_pool_->SetClient(this); 152 raster_worker_pool_->SetClient(this);
183 } 153 }
184 virtual ~RasterWorkerPoolTest() { resource_provider_.reset(); } 154 virtual ~RasterWorkerPoolTest() { resource_provider_.reset(); }
185 155
186 // Overridden from testing::Test: 156 // Overridden from testing::Test:
187 virtual void TearDown() OVERRIDE { 157 virtual void TearDown() OVERRIDE {
(...skipping 23 matching lines...) Expand all
211 } 181 }
212 182
213 base::MessageLoop::current()->Run(); 183 base::MessageLoop::current()->Run();
214 184
215 timeout_.Cancel(); 185 timeout_.Cancel();
216 186
217 ASSERT_FALSE(timed_out_) << "Test timed out"; 187 ASSERT_FALSE(timed_out_) << "Test timed out";
218 } 188 }
219 189
220 void ScheduleTasks() { 190 void ScheduleTasks() {
221 RasterWorkerPool::RasterTask::Queue tasks; 191 RasterTaskQueue queue;
222 192
223 for (RasterTask::Vector::iterator it = tasks_.begin(); it != tasks_.end(); 193 for (RasterTaskVector::const_iterator it = tasks_.begin();
194 it != tasks_.end();
224 ++it) 195 ++it)
225 tasks.Append(*it, false); 196 queue.tasks.push_back(RasterTaskQueue::Task(*it, false));
226 197
227 raster_worker_pool_->ScheduleTasks(&tasks); 198 raster_worker_pool_->ScheduleTasks(&queue);
228 } 199 }
229 200
230 void AppendTask(unsigned id, bool use_gpu_rasterization) { 201 void AppendTask(unsigned id) {
231 const gfx::Size size(1, 1); 202 const gfx::Size size(1, 1);
232 203
233 scoped_ptr<ScopedResource> resource( 204 scoped_ptr<ScopedResource> resource(
234 ScopedResource::Create(resource_provider_.get())); 205 ScopedResource::Create(resource_provider_.get()));
235 resource->Allocate(size, ResourceProvider::TextureUsageAny, RGBA_8888); 206 resource->Allocate(size, ResourceProvider::TextureUsageAny, RGBA_8888);
236 const Resource* const_resource = resource.get(); 207 const Resource* const_resource = resource.get();
237 208
238 tasks_.push_back( 209 internal::WorkerPoolTask::Vector empty;
239 RasterTask::Create(const_resource, 210 tasks_.push_back(new TestRasterWorkerPoolTaskImpl(
240 base::Bind(&RasterWorkerPoolTest::OnTaskCompleted, 211 const_resource,
241 base::Unretained(this), 212 base::Bind(&RasterWorkerPoolTest::OnTaskCompleted,
242 base::Passed(&resource), 213 base::Unretained(this),
243 id), 214 base::Passed(&resource),
244 use_gpu_rasterization)); 215 id),
216 &empty));
245 } 217 }
246 218
247 void AppendBlockingTask(unsigned id, base::Lock* lock) { 219 void AppendBlockingTask(unsigned id, base::Lock* lock) {
248 const gfx::Size size(1, 1); 220 const gfx::Size size(1, 1);
249 221
250 scoped_ptr<ScopedResource> resource( 222 scoped_ptr<ScopedResource> resource(
251 ScopedResource::Create(resource_provider_.get())); 223 ScopedResource::Create(resource_provider_.get()));
252 resource->Allocate(size, ResourceProvider::TextureUsageAny, RGBA_8888); 224 resource->Allocate(size, ResourceProvider::TextureUsageAny, RGBA_8888);
253 const Resource* const_resource = resource.get(); 225 const Resource* const_resource = resource.get();
254 226
255 tasks_.push_back(RasterTask::CreateBlocking( 227 internal::WorkerPoolTask::Vector empty;
228 tasks_.push_back(new BlockingTestRasterWorkerPoolTaskImpl(
256 const_resource, 229 const_resource,
257 base::Bind(&RasterWorkerPoolTest::OnTaskCompleted, 230 base::Bind(&RasterWorkerPoolTest::OnTaskCompleted,
258 base::Unretained(this), 231 base::Unretained(this),
259 base::Passed(&resource), 232 base::Passed(&resource),
260 id), 233 id),
261 lock, 234 lock,
262 false)); 235 &empty));
263 } 236 }
264 237
265 const std::vector<RasterTaskResult>& completed_tasks() const { 238 const std::vector<RasterTaskResult>& completed_tasks() const {
266 return completed_tasks_; 239 return completed_tasks_;
267 } 240 }
268 241
269 private: 242 private:
270 void OnTaskCompleted(scoped_ptr<ScopedResource> resource, 243 void OnTaskCompleted(scoped_ptr<ScopedResource> resource,
271 unsigned id, 244 unsigned id,
272 const PicturePileImpl::Analysis& analysis, 245 const PicturePileImpl::Analysis& analysis,
(...skipping 13 matching lines...) Expand all
286 259
287 protected: 260 protected:
288 scoped_refptr<TestContextProvider> context_provider_; 261 scoped_refptr<TestContextProvider> context_provider_;
289 FakeOutputSurfaceClient output_surface_client_; 262 FakeOutputSurfaceClient output_surface_client_;
290 scoped_ptr<FakeOutputSurface> output_surface_; 263 scoped_ptr<FakeOutputSurface> output_surface_;
291 scoped_ptr<ResourceProvider> resource_provider_; 264 scoped_ptr<ResourceProvider> resource_provider_;
292 scoped_ptr<RasterWorkerPool> raster_worker_pool_; 265 scoped_ptr<RasterWorkerPool> raster_worker_pool_;
293 base::CancelableClosure timeout_; 266 base::CancelableClosure timeout_;
294 int timeout_seconds_; 267 int timeout_seconds_;
295 bool timed_out_; 268 bool timed_out_;
296 std::vector<RasterTask> tasks_; 269 RasterTaskVector tasks_;
297 std::vector<RasterTaskResult> completed_tasks_; 270 std::vector<RasterTaskResult> completed_tasks_;
298 }; 271 };
299 272
300 TEST_P(RasterWorkerPoolTest, Basic) { 273 TEST_P(RasterWorkerPoolTest, Basic) {
301 AppendTask(0u, false); 274 AppendTask(0u);
302 AppendTask(1u, false); 275 AppendTask(1u);
303 ScheduleTasks(); 276 ScheduleTasks();
304 277
305 RunMessageLoopUntilAllTasksHaveCompleted(); 278 RunMessageLoopUntilAllTasksHaveCompleted();
306 279
307 ASSERT_EQ(2u, completed_tasks().size()); 280 ASSERT_EQ(2u, completed_tasks().size());
308 EXPECT_FALSE(completed_tasks()[0].canceled); 281 EXPECT_FALSE(completed_tasks()[0].canceled);
309 EXPECT_FALSE(completed_tasks()[1].canceled); 282 EXPECT_FALSE(completed_tasks()[1].canceled);
310 EXPECT_EQ(RASTER_THREAD_WORKER, completed_tasks()[0].raster_thread); 283 EXPECT_NE(RASTER_THREAD_NONE, completed_tasks()[0].raster_thread);
311 EXPECT_EQ(RASTER_THREAD_WORKER, completed_tasks()[1].raster_thread); 284 EXPECT_NE(RASTER_THREAD_NONE, completed_tasks()[1].raster_thread);
312 }
313
314 TEST_P(RasterWorkerPoolTest, GpuRaster) {
315 AppendTask(0u, true); // GPU raster.
316 ScheduleTasks();
317
318 RunMessageLoopUntilAllTasksHaveCompleted();
319
320 ASSERT_EQ(1u, completed_tasks().size());
321 EXPECT_EQ(0u, completed_tasks()[0].id);
322 EXPECT_FALSE(completed_tasks()[0].canceled);
323 EXPECT_EQ(RASTER_THREAD_ORIGIN, completed_tasks()[0].raster_thread);
324 }
325
326 TEST_P(RasterWorkerPoolTest, HybridRaster) {
327 AppendTask(0u, false); // Software raster.
328 AppendTask(1u, true); // GPU raster.
329 ScheduleTasks();
330
331 RunMessageLoopUntilAllTasksHaveCompleted();
332
333 ASSERT_EQ(2u, completed_tasks().size());
334 for (int i = 0; i < 2; ++i) {
335 EXPECT_FALSE(completed_tasks()[i].canceled);
336 switch (completed_tasks()[i].id) {
337 case 0u:
338 EXPECT_EQ(RASTER_THREAD_WORKER, completed_tasks()[i].raster_thread);
339 break;
340 case 1u:
341 EXPECT_EQ(RASTER_THREAD_ORIGIN, completed_tasks()[i].raster_thread);
342 break;
343 default:
344 NOTREACHED();
345 }
346 }
347 } 285 }
348 286
349 TEST_P(RasterWorkerPoolTest, FailedMapResource) { 287 TEST_P(RasterWorkerPoolTest, FailedMapResource) {
350 TestWebGraphicsContext3D* context3d = context_provider_->TestContext3d(); 288 TestWebGraphicsContext3D* context3d = context_provider_->TestContext3d();
351 context3d->set_times_map_image_chromium_succeeds(0); 289 context3d->set_times_map_image_chromium_succeeds(0);
352 context3d->set_times_map_buffer_chromium_succeeds(0); 290 context3d->set_times_map_buffer_chromium_succeeds(0);
353 AppendTask(0u, false); 291 AppendTask(0u);
354 ScheduleTasks(); 292 ScheduleTasks();
355 293
356 RunMessageLoopUntilAllTasksHaveCompleted(); 294 RunMessageLoopUntilAllTasksHaveCompleted();
357 295
358 ASSERT_EQ(1u, completed_tasks().size()); 296 ASSERT_EQ(1u, completed_tasks().size());
359 EXPECT_FALSE(completed_tasks()[0].canceled); 297 EXPECT_FALSE(completed_tasks()[0].canceled);
360 EXPECT_EQ(RASTER_THREAD_WORKER, completed_tasks()[0].raster_thread); 298 EXPECT_NE(RASTER_THREAD_NONE, completed_tasks()[0].raster_thread);
361 } 299 }
362 300
363 // This test checks that replacing a pending raster task with another does 301 // This test checks that replacing a pending raster task with another does
364 // not prevent the DidFinishRunningTasks notification from being sent. 302 // not prevent the DidFinishRunningTasks notification from being sent.
365 TEST_P(RasterWorkerPoolTest, FalseThrottling) { 303 TEST_P(RasterWorkerPoolTest, FalseThrottling) {
366 base::Lock lock; 304 base::Lock lock;
367 305
368 // Schedule a task that is prevented from completing with a lock. 306 // Schedule a task that is prevented from completing with a lock.
369 lock.Acquire(); 307 lock.Acquire();
370 AppendBlockingTask(0u, &lock); 308 AppendBlockingTask(0u, &lock);
371 ScheduleTasks(); 309 ScheduleTasks();
372 310
373 // Schedule another task to replace the still-pending task. Because the old 311 // Schedule another task to replace the still-pending task. Because the old
374 // task is not a throttled task in the new task set, it should not prevent 312 // task is not a throttled task in the new task set, it should not prevent
375 // DidFinishRunningTasks from getting signaled. 313 // DidFinishRunningTasks from getting signaled.
376 tasks_.clear(); 314 tasks_.clear();
377 AppendTask(1u, false); 315 AppendTask(1u);
378 ScheduleTasks(); 316 ScheduleTasks();
379 317
380 // Unblock the first task to allow the second task to complete. 318 // Unblock the first task to allow the second task to complete.
381 lock.Release(); 319 lock.Release();
382 320
383 RunMessageLoopUntilAllTasksHaveCompleted(); 321 RunMessageLoopUntilAllTasksHaveCompleted();
384 } 322 }
385 323
386 INSTANTIATE_TEST_CASE_P(RasterWorkerPoolTests, 324 INSTANTIATE_TEST_CASE_P(RasterWorkerPoolTests,
387 RasterWorkerPoolTest, 325 RasterWorkerPoolTest,
388 ::testing::Values(RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER, 326 ::testing::Values(RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER,
389 RASTER_WORKER_POOL_TYPE_IMAGE)); 327 RASTER_WORKER_POOL_TYPE_IMAGE,
328 RASTER_WORKER_POOL_TYPE_DIRECT));
390 329
391 } // namespace 330 } // namespace
392 } // namespace cc 331 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698