Index: ui/compositor/compositor.h |
diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h |
index ad0cf30225e6294ccfee69a4185b58315624e450..7837bcacb45633f64302d6ebb2da1faa46d34407 100644 |
--- a/ui/compositor/compositor.h |
+++ b/ui/compositor/compositor.h |
@@ -15,6 +15,7 @@ |
#include "cc/trees/layer_tree_host_client.h" |
#include "third_party/skia/include/core/SkColor.h" |
#include "ui/compositor/compositor_export.h" |
+#include "ui/compositor/compositor_observer.h" |
#include "ui/gfx/native_widget_types.h" |
#include "ui/gfx/size.h" |
#include "ui/gfx/transform.h" |
@@ -23,6 +24,10 @@ |
class SkBitmap; |
+namespace base { |
+class RunLoop; |
+} |
+ |
namespace cc { |
class ContextProvider; |
class Layer; |
@@ -207,6 +212,38 @@ class COMPOSITOR_EXPORT CompositorLock |
DISALLOW_COPY_AND_ASSIGN(CompositorLock); |
}; |
+class COMPOSITOR_EXPORT DrawWaiterForTest : public ui::CompositorObserver { |
+ public: |
+ // Waits at most |kDrawWaitTimeOutMs| milliseconds for a draw to be issued. |
+ // If a draw is issued in that timeframe, it will complete. Returns true if |
+ // a draw completed, false otherwise. |
+ static bool Wait(Compositor* compositor); |
+ |
+ private: |
+ DrawWaiterForTest(); |
+ virtual ~DrawWaiterForTest(); |
+ |
+ bool WaitImpl(Compositor* compositor); |
+ void TimedOutWhileWaiting(); |
+ |
+ // CompositorObserver implementation. |
+ virtual void OnCompositingDidCommit(Compositor* compositor) OVERRIDE; |
+ virtual void OnCompositingStarted(Compositor* compositor, |
+ base::TimeTicks start_time) OVERRIDE; |
+ virtual void OnCompositingEnded(Compositor* compositor) OVERRIDE; |
+ virtual void OnCompositingAborted(Compositor* compositor) OVERRIDE; |
+ virtual void OnCompositingLockStateChanged(Compositor* compositor) OVERRIDE; |
+ virtual void OnUpdateVSyncParameters(Compositor* compositor, |
+ base::TimeTicks timebase, |
+ base::TimeDelta interval) OVERRIDE; |
+ |
+ const int kDrawWaitTimeOutMs; |
+ |
+ scoped_ptr<base::RunLoop> wait_run_loop_; |
+ bool did_draw_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DrawWaiterForTest); |
+}; |
// Compositor object to take care of GPU painting. |
// A Browser compositor object is responsible for generating the final |