Home | History | Annotate | Download | only in test
      1 // Copyright 2013 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 #ifndef CC_TEST_TEST_CONTEXT_SUPPORT_H_
      6 #define CC_TEST_TEST_CONTEXT_SUPPORT_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/memory/weak_ptr.h"
     11 #include "gpu/command_buffer/client/context_support.h"
     12 
     13 namespace cc {
     14 
     15 class TestContextSupport : public gpu::ContextSupport {
     16  public:
     17   TestContextSupport();
     18   virtual ~TestContextSupport();
     19 
     20   // gpu::ContextSupport implementation.
     21   virtual void SignalSyncPoint(uint32 sync_point,
     22                                const base::Closure& callback) OVERRIDE;
     23   virtual void SignalQuery(uint32 query,
     24                            const base::Closure& callback) OVERRIDE;
     25   virtual void SetSurfaceVisible(bool visible) OVERRIDE;
     26   virtual void Swap() OVERRIDE;
     27   virtual void PartialSwapBuffers(const gfx::Rect& sub_buffer) OVERRIDE;
     28   virtual uint32 InsertFutureSyncPointCHROMIUM() OVERRIDE;
     29   virtual void RetireSyncPointCHROMIUM(uint32 sync_point) OVERRIDE;
     30   virtual void SetSwapBuffersCompleteCallback(
     31       const base::Closure& callback) OVERRIDE;
     32   virtual void ScheduleOverlayPlane(int plane_z_order,
     33                                     gfx::OverlayTransform plane_transform,
     34                                     unsigned overlay_texture_id,
     35                                     const gfx::Rect& display_bounds,
     36                                     const gfx::RectF& uv_rect) OVERRIDE;
     37 
     38   void CallAllSyncPointCallbacks();
     39 
     40   typedef base::Callback<void(bool visible)> SurfaceVisibleCallback;
     41   void SetSurfaceVisibleCallback(
     42       const SurfaceVisibleCallback& set_visible_callback);
     43 
     44   typedef base::Callback<void(int plane_z_order,
     45                               gfx::OverlayTransform plane_transform,
     46                               unsigned overlay_texture_id,
     47                               const gfx::Rect& display_bounds,
     48                               const gfx::RectF& crop_rect)>
     49       ScheduleOverlayPlaneCallback;
     50   void SetScheduleOverlayPlaneCallback(
     51       const ScheduleOverlayPlaneCallback& schedule_overlay_plane_callback);
     52 
     53   enum SwapType {
     54     NO_SWAP,
     55     SWAP,
     56     PARTIAL_SWAP
     57   };
     58 
     59   SwapType last_swap_type() const { return last_swap_type_; }
     60   gfx::Rect last_partial_swap_rect() const {
     61     return last_partial_swap_rect_;
     62   }
     63 
     64  private:
     65   void OnSwapBuffersComplete();
     66 
     67   std::vector<base::Closure> sync_point_callbacks_;
     68   SurfaceVisibleCallback set_visible_callback_;
     69   ScheduleOverlayPlaneCallback schedule_overlay_plane_callback_;
     70 
     71   base::Closure swap_buffers_complete_callback_;
     72 
     73   SwapType last_swap_type_;
     74   gfx::Rect last_partial_swap_rect_;
     75 
     76   base::WeakPtrFactory<TestContextSupport> weak_ptr_factory_;
     77 
     78   DISALLOW_COPY_AND_ASSIGN(TestContextSupport);
     79 };
     80 
     81 }  // namespace cc
     82 
     83 #endif  // CC_TEST_TEST_CONTEXT_SUPPORT_H_
     84