| Index: ui/compositor/compositor.cc
|
| diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc
|
| index d3b801cbc84f248602213fc97e1b54f652b7cbc1..9ab2c65ae5f158e81b98e6d5dc863803976c2755 100644
|
| --- a/ui/compositor/compositor.cc
|
| +++ b/ui/compositor/compositor.cc
|
| @@ -8,9 +8,11 @@
|
| #include <deque>
|
|
|
| #include "base/bind.h"
|
| +#include "base/cancelable_callback.h"
|
| #include "base/command_line.h"
|
| #include "base/memory/singleton.h"
|
| #include "base/message_loop.h"
|
| +#include "base/run_loop.h"
|
| #include "base/string_util.h"
|
| #include "base/threading/thread.h"
|
| #include "base/threading/thread_restrictions.h"
|
| @@ -335,6 +337,63 @@ void CompositorLock::CancelLock() {
|
| compositor_ = NULL;
|
| }
|
|
|
| +// static
|
| +bool DrawWaiterForTest::Wait(Compositor* compositor) {
|
| + DrawWaiterForTest waiter;
|
| + return waiter.WaitImpl(compositor);
|
| +}
|
| +
|
| +DrawWaiterForTest::DrawWaiterForTest()
|
| + : kDrawWaitTimeOutMs(1000),
|
| + did_draw_(false) {
|
| +}
|
| +
|
| +DrawWaiterForTest::~DrawWaiterForTest() {
|
| +}
|
| +
|
| +bool DrawWaiterForTest::WaitImpl(Compositor* compositor) {
|
| + did_draw_ = false;
|
| + compositor->AddObserver(this);
|
| + wait_run_loop_.reset(new base::RunLoop());
|
| + base::CancelableClosure timeout(
|
| + base::Bind(&DrawWaiterForTest::TimedOutWhileWaiting,
|
| + base::Unretained(this)));
|
| + MessageLoop::current()->PostDelayedTask(
|
| + FROM_HERE, timeout.callback(),
|
| + base::TimeDelta::FromMilliseconds(kDrawWaitTimeOutMs));
|
| + wait_run_loop_->Run();
|
| + compositor->RemoveObserver(this);
|
| + return did_draw_;
|
| +}
|
| +
|
| +void DrawWaiterForTest::TimedOutWhileWaiting() {
|
| + LOG(ERROR) << "Timed out waiting for draw.";
|
| + wait_run_loop_->Quit();
|
| +}
|
| +
|
| +void DrawWaiterForTest::OnCompositingDidCommit(Compositor* compositor) {
|
| +}
|
| +
|
| +void DrawWaiterForTest::OnCompositingStarted(Compositor* compositor,
|
| + base::TimeTicks start_time) {
|
| +}
|
| +
|
| +void DrawWaiterForTest::OnCompositingEnded(Compositor* compositor) {
|
| + did_draw_ = true;
|
| + wait_run_loop_->Quit();
|
| +}
|
| +
|
| +void DrawWaiterForTest::OnCompositingAborted(Compositor* compositor) {
|
| +}
|
| +
|
| +void DrawWaiterForTest::OnCompositingLockStateChanged(Compositor* compositor) {
|
| +}
|
| +
|
| +void DrawWaiterForTest::OnUpdateVSyncParameters(Compositor* compositor,
|
| + base::TimeTicks timebase,
|
| + base::TimeDelta interval) {
|
| +}
|
| +
|
| class PostedSwapQueue {
|
| public:
|
| PostedSwapQueue() : pending_swap_(NULL) {
|
|
|