draw_waiter_for_test.cc 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright 2014 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "ui/compositor/test/draw_waiter_for_test.h"
  5. #include "ui/compositor/compositor.h"
  6. namespace ui {
  7. // static
  8. void DrawWaiterForTest::WaitForCompositingStarted(Compositor* compositor) {
  9. DrawWaiterForTest waiter(WAIT_FOR_COMPOSITING_STARTED);
  10. waiter.WaitImpl(compositor);
  11. }
  12. void DrawWaiterForTest::WaitForCompositingEnded(Compositor* compositor) {
  13. DrawWaiterForTest waiter(WAIT_FOR_COMPOSITING_ENDED);
  14. waiter.WaitImpl(compositor);
  15. }
  16. // static
  17. void DrawWaiterForTest::WaitForCommit(Compositor* compositor) {
  18. DrawWaiterForTest waiter(WAIT_FOR_COMMIT);
  19. waiter.WaitImpl(compositor);
  20. }
  21. DrawWaiterForTest::DrawWaiterForTest(WaitEvent wait_event)
  22. : wait_event_(wait_event) {
  23. }
  24. DrawWaiterForTest::~DrawWaiterForTest() {}
  25. void DrawWaiterForTest::WaitImpl(Compositor* compositor) {
  26. compositor->AddObserver(this);
  27. wait_run_loop_ = std::make_unique<base::RunLoop>(
  28. base::RunLoop::Type::kNestableTasksAllowed);
  29. wait_run_loop_->Run();
  30. compositor->RemoveObserver(this);
  31. }
  32. void DrawWaiterForTest::OnCompositingDidCommit(Compositor* compositor) {
  33. if (wait_event_ == WAIT_FOR_COMMIT)
  34. wait_run_loop_->Quit();
  35. }
  36. void DrawWaiterForTest::OnCompositingStarted(Compositor* compositor,
  37. base::TimeTicks start_time) {
  38. if (wait_event_ == WAIT_FOR_COMPOSITING_STARTED)
  39. wait_run_loop_->Quit();
  40. }
  41. void DrawWaiterForTest::OnCompositingEnded(Compositor* compositor) {
  42. if (wait_event_ == WAIT_FOR_COMPOSITING_ENDED)
  43. wait_run_loop_->Quit();
  44. }
  45. } // namespace ui