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 last_swap_type()59 SwapType last_swap_type() const { return last_swap_type_; } last_partial_swap_rect()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