| // 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 |