| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ui/compositor/test/draw_waiter_for_test.h" |
| |
| #include "ui/compositor/compositor.h" |
| |
| namespace ui { |
| |
| // static |
| void DrawWaiterForTest::Wait(Compositor* compositor) { |
| DrawWaiterForTest waiter; |
| waiter.wait_for_commit_ = false; |
| waiter.WaitImpl(compositor); |
| } |
| |
| // static |
| void DrawWaiterForTest::WaitForCommit(Compositor* compositor) { |
| DrawWaiterForTest waiter; |
| waiter.wait_for_commit_ = true; |
| waiter.WaitImpl(compositor); |
| } |
| |
| DrawWaiterForTest::DrawWaiterForTest() { |
| } |
| |
| DrawWaiterForTest::~DrawWaiterForTest() {} |
| |
| void DrawWaiterForTest::WaitImpl(Compositor* compositor) { |
| compositor->AddObserver(this); |
| wait_run_loop_.reset(new base::RunLoop()); |
| wait_run_loop_->Run(); |
| compositor->RemoveObserver(this); |
| } |
| |
| void DrawWaiterForTest::OnCompositingDidCommit(Compositor* compositor) { |
| if (wait_for_commit_) |
| wait_run_loop_->Quit(); |
| } |
| |
| void DrawWaiterForTest::OnCompositingStarted(Compositor* compositor, |
| base::TimeTicks start_time) { |
| } |
| |
| void DrawWaiterForTest::OnCompositingEnded(Compositor* compositor) { |
| if (!wait_for_commit_) |
| wait_run_loop_->Quit(); |
| } |
| |
| void DrawWaiterForTest::OnCompositingAborted(Compositor* compositor) { |
| } |
| |
| void DrawWaiterForTest::OnCompositingLockStateChanged(Compositor* compositor) {} |
| |
| } // namespace ui |