draw_waiter_for_test.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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
5#include "ui/compositor/test/draw_waiter_for_test.h"
6
7#include "ui/compositor/compositor.h"
8
9namespace ui {
10
11// static
12void DrawWaiterForTest::Wait(Compositor* compositor) {
13  DrawWaiterForTest waiter;
14  waiter.wait_for_commit_ = false;
15  waiter.WaitImpl(compositor);
16}
17
18// static
19void DrawWaiterForTest::WaitForCommit(Compositor* compositor) {
20  DrawWaiterForTest waiter;
21  waiter.wait_for_commit_ = true;
22  waiter.WaitImpl(compositor);
23}
24
25DrawWaiterForTest::DrawWaiterForTest() {}
26
27DrawWaiterForTest::~DrawWaiterForTest() {}
28
29void DrawWaiterForTest::WaitImpl(Compositor* compositor) {
30  compositor->AddObserver(this);
31  wait_run_loop_.reset(new base::RunLoop());
32  wait_run_loop_->Run();
33  compositor->RemoveObserver(this);
34}
35
36void DrawWaiterForTest::OnCompositingDidCommit(Compositor* compositor) {
37  if (wait_for_commit_)
38    wait_run_loop_->Quit();
39}
40
41void DrawWaiterForTest::OnCompositingStarted(Compositor* compositor,
42                                             base::TimeTicks start_time) {}
43
44void DrawWaiterForTest::OnCompositingEnded(Compositor* compositor) {
45  if (!wait_for_commit_)
46    wait_run_loop_->Quit();
47}
48
49void DrawWaiterForTest::OnCompositingAborted(Compositor* compositor) {}
50
51void DrawWaiterForTest::OnCompositingLockStateChanged(Compositor* compositor) {}
52
53}  // namespace ui
54