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

Side by Side Diff: cc/test/layer_tree_test_common.cc

Issue 11344004: Remove WebKit::Platform dependencies from cc (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix webkit_compositor_bindings_unittests Created 8 years, 1 month 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
« no previous file with comments | « cc/test/layer_tree_test_common.h ('k') | cc/test/run_all_unittests.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "config.h" 5 #include "config.h"
6 6
7 #include "cc/test/layer_tree_test_common.h" 7 #include "cc/test/layer_tree_test_common.h"
8 8
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "cc/active_animation.h" 10 #include "cc/active_animation.h"
11 #include "cc/content_layer.h" 11 #include "cc/content_layer.h"
12 #include "cc/input_handler.h" 12 #include "cc/input_handler.h"
13 #include "cc/layer.h" 13 #include "cc/layer.h"
14 #include "cc/layer_animation_controller.h" 14 #include "cc/layer_animation_controller.h"
15 #include "cc/layer_impl.h" 15 #include "cc/layer_impl.h"
16 #include "cc/layer_tree_host_impl.h" 16 #include "cc/layer_tree_host_impl.h"
17 #include "cc/scoped_thread_proxy.h" 17 #include "cc/scoped_thread_proxy.h"
18 #include "cc/settings.h" 18 #include "cc/settings.h"
19 #include "cc/single_thread_proxy.h" 19 #include "cc/single_thread_proxy.h"
20 #include "cc/thread_impl.h"
20 #include "cc/test/animation_test_common.h" 21 #include "cc/test/animation_test_common.h"
21 #include "cc/test/fake_web_compositor_output_surface.h" 22 #include "cc/test/fake_web_compositor_output_surface.h"
22 #include "cc/test/fake_web_graphics_context_3d.h" 23 #include "cc/test/fake_web_graphics_context_3d.h"
23 #include "cc/test/occlusion_tracker_test_common.h" 24 #include "cc/test/occlusion_tracker_test_common.h"
24 #include "cc/test/test_common.h" 25 #include "cc/test/test_common.h"
25 #include "cc/test/tiled_layer_test_common.h" 26 #include "cc/test/tiled_layer_test_common.h"
26 #include "cc/thread_task.h"
27 #include "cc/timing_function.h" 27 #include "cc/timing_function.h"
28 #include "testing/gmock/include/gmock/gmock.h" 28 #include "testing/gmock/include/gmock/gmock.h"
29 #include <public/Platform.h>
30 #include <public/WebCompositorSupport.h>
31 #include <public/WebFilterOperation.h> 29 #include <public/WebFilterOperation.h>
32 #include <public/WebFilterOperations.h> 30 #include <public/WebFilterOperations.h>
33 #include <public/WebThread.h> 31 #include <public/WebThread.h>
34 32
35 using namespace cc; 33 using namespace cc;
36 using namespace WebKit; 34 using namespace WebKit;
37 35
38 namespace WebKitTests { 36 namespace WebKitTests {
39 37
40 scoped_ptr<CompositorFakeWebGraphicsContext3DWithTextureTracking> CompositorFake WebGraphicsContext3DWithTextureTracking::create(Attributes attrs) 38 scoped_ptr<CompositorFakeWebGraphicsContext3DWithTextureTracking> CompositorFake WebGraphicsContext3DWithTextureTracking::create(Attributes attrs)
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 { 261 {
264 m_testHooks->scheduleComposite(); 262 m_testHooks->scheduleComposite();
265 } 263 }
266 264
267 private: 265 private:
268 explicit ThreadedMockLayerTreeHostClient(TestHooks* testHooks) : m_testHooks (testHooks) { } 266 explicit ThreadedMockLayerTreeHostClient(TestHooks* testHooks) : m_testHooks (testHooks) { }
269 267
270 TestHooks* m_testHooks; 268 TestHooks* m_testHooks;
271 }; 269 };
272 270
273 class TimeoutTask : public WebThread::Task {
274 public:
275 explicit TimeoutTask(ThreadedTest* test)
276 : m_test(test)
277 {
278 }
279
280 void clearTest()
281 {
282 m_test = 0;
283 }
284
285 virtual ~TimeoutTask()
286 {
287 if (m_test)
288 m_test->clearTimeout();
289 }
290
291 virtual void run()
292 {
293 if (m_test)
294 m_test->timeout();
295 }
296
297 private:
298 ThreadedTest* m_test;
299 };
300
301 class BeginTask : public WebThread::Task {
302 public:
303 explicit BeginTask(ThreadedTest* test)
304 : m_test(test)
305 {
306 }
307
308 virtual ~BeginTask() { }
309 virtual void run()
310 {
311 m_test->doBeginTest();
312 }
313 private:
314 ThreadedTest* m_test;
315 };
316
317 ThreadedTest::ThreadedTest() 271 ThreadedTest::ThreadedTest()
318 : m_beginning(false) 272 : m_beginning(false)
319 , m_endWhenBeginReturns(false) 273 , m_endWhenBeginReturns(false)
320 , m_timedOut(false) 274 , m_timedOut(false)
321 , m_finished(false) 275 , m_finished(false)
322 , m_scheduled(false) 276 , m_scheduled(false)
323 , m_started(false) 277 , m_started(false)
324 { 278 {
325 } 279 }
326 280
327 ThreadedTest::~ThreadedTest() 281 ThreadedTest::~ThreadedTest()
328 { 282 {
329 } 283 }
330 284
331 void ThreadedTest::endTest() 285 void ThreadedTest::endTest()
332 { 286 {
333 m_finished = true; 287 m_finished = true;
334 288
335 // For the case where we endTest during beginTest(), set a flag to indicate that 289 // For the case where we endTest during beginTest(), set a flag to indicate that
336 // the test should end the second beginTest regains control. 290 // the test should end the second beginTest regains control.
337 if (m_beginning) 291 if (m_beginning)
338 m_endWhenBeginReturns = true; 292 m_endWhenBeginReturns = true;
339 else 293 else
340 m_mainThreadProxy->postTask(createThreadTask(this, &ThreadedTest::realEn dTest)); 294 m_mainThreadProxy->postTask(FROM_HERE, base::Bind(&ThreadedTest::realEnd Test, base::Unretained(this)));
341 } 295 }
342 296
343 void ThreadedTest::endTestAfterDelay(int delayMilliseconds) 297 void ThreadedTest::endTestAfterDelay(int delayMilliseconds)
344 { 298 {
345 m_mainThreadProxy->postTask(createThreadTask(this, &ThreadedTest::endTest)); 299 m_mainThreadProxy->postTask(FROM_HERE, base::Bind(&ThreadedTest::endTest, ba se::Unretained(this)));
346 } 300 }
347 301
348 void ThreadedTest::postSetNeedsAnimateToMainThread() 302 void ThreadedTest::postSetNeedsAnimateToMainThread()
349 { 303 {
350 m_mainThreadProxy->postTask(createThreadTask(this, &ThreadedTest::dispatchSe tNeedsAnimate)); 304 m_mainThreadProxy->postTask(FROM_HERE, base::Bind(&ThreadedTest::dispatchSet NeedsAnimate, base::Unretained(this)));
351 } 305 }
352 306
353 void ThreadedTest::postAddAnimationToMainThread() 307 void ThreadedTest::postAddAnimationToMainThread()
354 { 308 {
355 m_mainThreadProxy->postTask(createThreadTask(this, &ThreadedTest::dispatchAd dAnimation)); 309 m_mainThreadProxy->postTask(FROM_HERE, base::Bind(&ThreadedTest::dispatchAdd Animation, base::Unretained(this)));
356 } 310 }
357 311
358 void ThreadedTest::postAddInstantAnimationToMainThread() 312 void ThreadedTest::postAddInstantAnimationToMainThread()
359 { 313 {
360 m_mainThreadProxy->postTask(createThreadTask(this, &ThreadedTest::dispatchAd dInstantAnimation)); 314 m_mainThreadProxy->postTask(FROM_HERE, base::Bind(&ThreadedTest::dispatchAdd InstantAnimation, base::Unretained(this)));
361 } 315 }
362 316
363 void ThreadedTest::postSetNeedsCommitToMainThread() 317 void ThreadedTest::postSetNeedsCommitToMainThread()
364 { 318 {
365 m_mainThreadProxy->postTask(createThreadTask(this, &ThreadedTest::dispatchSe tNeedsCommit)); 319 m_mainThreadProxy->postTask(FROM_HERE, base::Bind(&ThreadedTest::dispatchSet NeedsCommit, base::Unretained(this)));
366 } 320 }
367 321
368 void ThreadedTest::postAcquireLayerTextures() 322 void ThreadedTest::postAcquireLayerTextures()
369 { 323 {
370 m_mainThreadProxy->postTask(createThreadTask(this, &ThreadedTest::dispatchAc quireLayerTextures)); 324 m_mainThreadProxy->postTask(FROM_HERE, base::Bind(&ThreadedTest::dispatchAcq uireLayerTextures, base::Unretained(this)));
371 } 325 }
372 326
373 void ThreadedTest::postSetNeedsRedrawToMainThread() 327 void ThreadedTest::postSetNeedsRedrawToMainThread()
374 { 328 {
375 m_mainThreadProxy->postTask(createThreadTask(this, &ThreadedTest::dispatchSe tNeedsRedraw)); 329 m_mainThreadProxy->postTask(FROM_HERE, base::Bind(&ThreadedTest::dispatchSet NeedsRedraw, base::Unretained(this)));
376 } 330 }
377 331
378 void ThreadedTest::postSetNeedsAnimateAndCommitToMainThread() 332 void ThreadedTest::postSetNeedsAnimateAndCommitToMainThread()
379 { 333 {
380 m_mainThreadProxy->postTask(createThreadTask(this, &ThreadedTest::dispatchSe tNeedsAnimateAndCommit)); 334 m_mainThreadProxy->postTask(FROM_HERE, base::Bind(&ThreadedTest::dispatchSet NeedsAnimateAndCommit, base::Unretained(this)));
381 } 335 }
382 336
383 void ThreadedTest::postSetVisibleToMainThread(bool visible) 337 void ThreadedTest::postSetVisibleToMainThread(bool visible)
384 { 338 {
385 m_mainThreadProxy->postTask(createThreadTask(this, &ThreadedTest::dispatchSe tVisible, visible)); 339 m_mainThreadProxy->postTask(FROM_HERE, base::Bind(&ThreadedTest::dispatchSet Visible, base::Unretained(this), visible));
386 } 340 }
387 341
388 void ThreadedTest::postDidAddAnimationToMainThread() 342 void ThreadedTest::postDidAddAnimationToMainThread()
389 { 343 {
390 m_mainThreadProxy->postTask(createThreadTask(this, &ThreadedTest::dispatchDi dAddAnimation)); 344 m_mainThreadProxy->postTask(FROM_HERE, base::Bind(&ThreadedTest::dispatchDid AddAnimation, base::Unretained(this)));
391 } 345 }
392 346
393 void ThreadedTest::doBeginTest() 347 void ThreadedTest::doBeginTest()
394 { 348 {
395 DCHECK(Proxy::isMainThread()); 349 DCHECK(Proxy::isMainThread());
396 m_client = ThreadedMockLayerTreeHostClient::create(this); 350 m_client = ThreadedMockLayerTreeHostClient::create(this);
397 351
398 scoped_refptr<Layer> rootLayer = Layer::create(); 352 scoped_refptr<Layer> rootLayer = Layer::create();
399 m_layerTreeHost = MockLayerTreeHost::create(this, m_client.get(), rootLayer, m_settings); 353 m_layerTreeHost = MockLayerTreeHost::create(this, m_client.get(), rootLayer, m_settings);
400 ASSERT_TRUE(m_layerTreeHost.get()); 354 ASSERT_TRUE(m_layerTreeHost.get());
(...skipping 17 matching lines...) Expand all
418 { 372 {
419 m_timedOut = true; 373 m_timedOut = true;
420 endTest(); 374 endTest();
421 } 375 }
422 376
423 void ThreadedTest::scheduleComposite() 377 void ThreadedTest::scheduleComposite()
424 { 378 {
425 if (!m_started || m_scheduled || m_finished) 379 if (!m_started || m_scheduled || m_finished)
426 return; 380 return;
427 m_scheduled = true; 381 m_scheduled = true;
428 m_mainThreadProxy->postTask(createThreadTask(this, &ThreadedTest::dispatchCo mposite)); 382 m_mainThreadProxy->postTask(FROM_HERE, base::Bind(&ThreadedTest::dispatchCom posite, base::Unretained(this)));
429 } 383 }
430 384
431 void ThreadedTest::realEndTest() 385 void ThreadedTest::realEndTest()
432 { 386 {
433 DCHECK(Proxy::isMainThread()); 387 DCHECK(Proxy::isMainThread());
434 WebKit::Platform::current()->currentThread()->exitRunLoop(); 388 MessageLoop::current()->Quit();
435 } 389 }
436 390
437 void ThreadedTest::dispatchSetNeedsAnimate() 391 void ThreadedTest::dispatchSetNeedsAnimate()
438 { 392 {
439 DCHECK(Proxy::isMainThread()); 393 DCHECK(Proxy::isMainThread());
440 394
441 if (m_finished) 395 if (m_finished)
442 return; 396 return;
443 397
444 if (m_layerTreeHost.get()) 398 if (m_layerTreeHost.get())
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 m_layerTreeHost->didAddAnimation(); 496 m_layerTreeHost->didAddAnimation();
543 } 497 }
544 498
545 void ThreadedTest::runTest(bool threaded) 499 void ThreadedTest::runTest(bool threaded)
546 { 500 {
547 // For these tests, we will enable threaded animations. 501 // For these tests, we will enable threaded animations.
548 ScopedSettings scopedSettings; 502 ScopedSettings scopedSettings;
549 Settings::setAcceleratedAnimationEnabled(true); 503 Settings::setAcceleratedAnimationEnabled(true);
550 504
551 if (threaded) { 505 if (threaded) {
552 m_webThread.reset(WebKit::Platform::current()->createThread("ThreadedTes t")); 506 m_implThread.reset(new base::Thread("ThreadedTest"));
553 Platform::current()->compositorSupport()->initialize(m_webThread.get()); 507 ASSERT_TRUE(m_implThread->Start());
554 } else 508 m_implCCThread = cc::ThreadImpl::createForDifferentThread(m_implThread-> message_loop_proxy());
555 Platform::current()->compositorSupport()->initialize(0); 509 cc::Proxy::setImplThread(m_implCCThread.get());
510 }
556 511
557 DCHECK(Proxy::isMainThread()); 512 DCHECK(Proxy::isMainThread());
558 m_mainThreadProxy = ScopedThreadProxy::create(Proxy::mainThread()); 513 m_mainThreadProxy = ScopedThreadProxy::create(Proxy::mainThread());
559 514
560 initializeSettings(m_settings); 515 initializeSettings(m_settings);
561 516
562 m_beginTask = new BeginTask(this); 517 cc::Proxy::mainThread()->postTask(base::Bind(&ThreadedTest::doBeginTest, bas e::Unretained(this)));
563 WebKit::Platform::current()->currentThread()->postDelayedTask(m_beginTask, 0 ); // postDelayedTask takes ownership of the task 518 m_timeout.Reset(base::Bind(&ThreadedTest::timeout, base::Unretained(this)));
564 m_timeoutTask = new TimeoutTask(this); 519 cc::Proxy::mainThread()->postDelayedTask(m_timeout.callback(), 5000);
565 WebKit::Platform::current()->currentThread()->postDelayedTask(m_timeoutTask, 5000); 520 MessageLoop::current()->Run();
566 WebKit::Platform::current()->currentThread()->enterRunLoop();
567
568 if (m_layerTreeHost.get() && m_layerTreeHost->rootLayer()) 521 if (m_layerTreeHost.get() && m_layerTreeHost->rootLayer())
569 m_layerTreeHost->rootLayer()->setLayerTreeHost(0); 522 m_layerTreeHost->rootLayer()->setLayerTreeHost(0);
570 m_layerTreeHost.reset(); 523 m_layerTreeHost.reset();
571 524
572 if (m_timeoutTask) 525 cc::Proxy::setImplThread(0);
573 m_timeoutTask->clearTest(); 526
527 m_timeout.Cancel();
574 528
575 ASSERT_FALSE(m_layerTreeHost.get()); 529 ASSERT_FALSE(m_layerTreeHost.get());
576 m_client.reset(); 530 m_client.reset();
577 if (m_timedOut) { 531 if (m_timedOut) {
578 FAIL() << "Test timed out"; 532 FAIL() << "Test timed out";
579 Platform::current()->compositorSupport()->shutdown();
580 return; 533 return;
581 } 534 }
582 afterTest(); 535 afterTest();
583 Platform::current()->compositorSupport()->shutdown();
584 } 536 }
585 537
586 } // namespace WebKitTests 538 } // namespace WebKitTests
OLDNEW
« no previous file with comments | « cc/test/layer_tree_test_common.h ('k') | cc/test/run_all_unittests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698