#ifndef UI_COMPOSITOR_TEST_DRAW_WAITER_FOR_TEST_H_
#define UI_COMPOSITOR_TEST_DRAW_WAITER_FOR_TEST_H_
#include <memory>
#include "base/run_loop.h"
#include "ui/compositor/compositor_observer.h"
namespace ui {
class Compositor;
class DrawWaiterForTest : public CompositorObserver {
public:
DrawWaiterForTest(const DrawWaiterForTest&) = delete;
DrawWaiterForTest& operator=(const DrawWaiterForTest&) = delete;
static void WaitForCompositingStarted(Compositor* compositor);
static void WaitForCompositingEnded(Compositor* compositor);
static void WaitForCommit(Compositor* compositor);
private:
enum WaitEvent {
WAIT_FOR_COMMIT,
WAIT_FOR_COMPOSITING_STARTED,
WAIT_FOR_COMPOSITING_ENDED,
};
DrawWaiterForTest(WaitEvent wait_event);
~DrawWaiterForTest() override;
void WaitImpl(Compositor* compositor);
void OnCompositingDidCommit(Compositor* compositor) override;
void OnCompositingStarted(Compositor* compositor,
base::TimeTicks start_time) override;
void OnDidPresentCompositorFrame(
Compositor* compositor,
uint32_t frame_token,
const gfx::PresentationFeedback& feedback) override;
std::unique_ptr<base::RunLoop> wait_run_loop_;
WaitEvent wait_event_;
};
}
#endif