| OLD | NEW |
| (Empty) |
| 1 // Copyright 2012 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_LAYER_TEST_COMMON_H_ | |
| 6 #define CC_TEST_LAYER_TEST_COMMON_H_ | |
| 7 | |
| 8 #include "base/basictypes.h" | |
| 9 #include "base/memory/scoped_ptr.h" | |
| 10 #include "cc/quads/render_pass.h" | |
| 11 #include "cc/test/fake_layer_tree_host.h" | |
| 12 #include "cc/trees/layer_tree_host_impl.h" | |
| 13 | |
| 14 #define EXPECT_SET_NEEDS_COMMIT(expect, code_to_test) \ | |
| 15 do { \ | |
| 16 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times((expect)); \ | |
| 17 code_to_test; \ | |
| 18 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); \ | |
| 19 } while (false) | |
| 20 | |
| 21 #define EXPECT_SET_NEEDS_UPDATE(expect, code_to_test) \ | |
| 22 do { \ | |
| 23 EXPECT_CALL(*layer_tree_host_, SetNeedsUpdateLayers()).Times((expect)); \ | |
| 24 code_to_test; \ | |
| 25 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); \ | |
| 26 } while (false) | |
| 27 | |
| 28 namespace gfx { class Rect; } | |
| 29 | |
| 30 namespace cc { | |
| 31 class LayerImpl; | |
| 32 class OutputSurface; | |
| 33 class QuadList; | |
| 34 class RenderSurfaceImpl; | |
| 35 class ResourceProvider; | |
| 36 | |
| 37 class LayerTestCommon { | |
| 38 public: | |
| 39 static const char* quad_string; | |
| 40 | |
| 41 static void VerifyQuadsExactlyCoverRect(const QuadList& quads, | |
| 42 const gfx::Rect& rect); | |
| 43 | |
| 44 static void VerifyQuadsAreOccluded(const QuadList& quads, | |
| 45 const gfx::Rect& occluded, | |
| 46 size_t* partially_occluded_count); | |
| 47 | |
| 48 class LayerImplTest { | |
| 49 public: | |
| 50 LayerImplTest(); | |
| 51 ~LayerImplTest(); | |
| 52 | |
| 53 template <typename T> | |
| 54 T* AddChildToRoot() { | |
| 55 scoped_ptr<T> layer = T::Create(host_->host_impl()->active_tree(), 2); | |
| 56 T* ptr = layer.get(); | |
| 57 root_layer_impl_->AddChild(layer.Pass()); | |
| 58 return ptr; | |
| 59 } | |
| 60 | |
| 61 template <typename T, typename A> | |
| 62 T* AddChildToRoot(const A& a) { | |
| 63 scoped_ptr<T> layer = T::Create(host_->host_impl()->active_tree(), 2, a); | |
| 64 T* ptr = layer.get(); | |
| 65 root_layer_impl_->AddChild(layer.Pass()); | |
| 66 return ptr; | |
| 67 } | |
| 68 | |
| 69 template <typename T, typename A, typename B> | |
| 70 T* AddChildToRoot(const A& a, const B& b) { | |
| 71 scoped_ptr<T> layer = | |
| 72 T::Create(host_->host_impl()->active_tree(), 2, a, b); | |
| 73 T* ptr = layer.get(); | |
| 74 root_layer_impl_->AddChild(layer.Pass()); | |
| 75 return ptr; | |
| 76 } | |
| 77 | |
| 78 template <typename T, typename A, typename B, typename C, typename D> | |
| 79 T* AddChildToRoot(const A& a, const B& b, const C& c, const D& d) { | |
| 80 scoped_ptr<T> layer = | |
| 81 T::Create(host_->host_impl()->active_tree(), 2, a, b, c, d); | |
| 82 T* ptr = layer.get(); | |
| 83 root_layer_impl_->AddChild(layer.Pass()); | |
| 84 return ptr; | |
| 85 } | |
| 86 | |
| 87 template <typename T, | |
| 88 typename A, | |
| 89 typename B, | |
| 90 typename C, | |
| 91 typename D, | |
| 92 typename E> | |
| 93 T* AddChildToRoot(const A& a, | |
| 94 const B& b, | |
| 95 const C& c, | |
| 96 const D& d, | |
| 97 const E& e) { | |
| 98 scoped_ptr<T> layer = | |
| 99 T::Create(host_->host_impl()->active_tree(), 2, a, b, c, d, e); | |
| 100 T* ptr = layer.get(); | |
| 101 root_layer_impl_->AddChild(layer.Pass()); | |
| 102 return ptr; | |
| 103 } | |
| 104 | |
| 105 void CalcDrawProps(const gfx::Size& viewport_size); | |
| 106 void AppendQuadsWithOcclusion(LayerImpl* layer_impl, | |
| 107 const gfx::Rect& occluded); | |
| 108 void AppendQuadsForPassWithOcclusion(LayerImpl* layer_impl, | |
| 109 RenderPass* given_render_pass, | |
| 110 const gfx::Rect& occluded); | |
| 111 void AppendSurfaceQuadsWithOcclusion(RenderSurfaceImpl* surface_impl, | |
| 112 const gfx::Rect& occluded); | |
| 113 | |
| 114 OutputSurface* output_surface() const { | |
| 115 return host_->host_impl()->output_surface(); | |
| 116 } | |
| 117 ResourceProvider* resource_provider() const { | |
| 118 return host_->host_impl()->resource_provider(); | |
| 119 } | |
| 120 LayerImpl* root_layer() const { return root_layer_impl_.get(); } | |
| 121 FakeLayerTreeHostImpl* host_impl() const { return host_->host_impl(); } | |
| 122 Proxy* proxy() const { return host_->host_impl()->proxy(); } | |
| 123 const QuadList& quad_list() const { return render_pass_->quad_list; } | |
| 124 | |
| 125 private: | |
| 126 FakeLayerTreeHostClient client_; | |
| 127 scoped_ptr<FakeLayerTreeHost> host_; | |
| 128 scoped_ptr<LayerImpl> root_layer_impl_; | |
| 129 scoped_ptr<RenderPass> render_pass_; | |
| 130 }; | |
| 131 }; | |
| 132 | |
| 133 } // namespace cc | |
| 134 | |
| 135 #endif // CC_TEST_LAYER_TEST_COMMON_H_ | |
| OLD | NEW |