1 // Copyright 2014 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_SURFACES_SURFACE_AGGREGATOR_TEST_HELPERS_H_ 6 #define CC_SURFACES_SURFACE_AGGREGATOR_TEST_HELPERS_H_ 7 8 #include "cc/quads/draw_quad.h" 9 #include "cc/quads/render_pass.h" 10 #include "cc/surfaces/surface_id.h" 11 #include "third_party/skia/include/core/SkColor.h" 12 #include "ui/gfx/size.h" 13 14 namespace cc { 15 16 class Surface; 17 class TestRenderPass; 18 19 namespace test { 20 21 struct Quad { 22 static Quad SolidColorQuad(SkColor color) { 23 Quad quad; 24 quad.material = DrawQuad::SOLID_COLOR; 25 quad.color = color; 26 return quad; 27 } 28 29 static Quad SurfaceQuad(SurfaceId surface_id) { 30 Quad quad; 31 quad.material = DrawQuad::SURFACE_CONTENT; 32 quad.surface_id = surface_id; 33 return quad; 34 } 35 36 static Quad RenderPassQuad(RenderPass::Id id) { 37 Quad quad; 38 quad.material = DrawQuad::RENDER_PASS; 39 quad.render_pass_id = id; 40 return quad; 41 } 42 43 DrawQuad::Material material; 44 // Set when material==DrawQuad::SURFACE_CONTENT. 45 SurfaceId surface_id; 46 // Set when material==DrawQuad::SOLID_COLOR. 47 SkColor color; 48 // Set when material==DrawQuad::RENDER_PASS. 49 RenderPass::Id render_pass_id; 50 51 private: 52 Quad() 53 : material(DrawQuad::INVALID), 54 color(SK_ColorWHITE), 55 render_pass_id(-1, -1) {} 56 }; 57 58 struct Pass { 59 Pass(Quad* quads, size_t quad_count, RenderPass::Id id) 60 : quads(quads), quad_count(quad_count), id(id) {} 61 Pass(Quad* quads, size_t quad_count) 62 : quads(quads), quad_count(quad_count), id(1, 1) {} 63 64 Quad* quads; 65 size_t quad_count; 66 RenderPass::Id id; 67 }; 68 69 void AddSurfaceQuad(TestRenderPass* pass, 70 const gfx::Size& surface_size, 71 int surface_id); 72 73 void AddQuadInPass(TestRenderPass* pass, Quad desc); 74 75 void AddPasses(RenderPassList* pass_list, 76 const gfx::Rect& output_rect, 77 Pass* passes, 78 size_t pass_count); 79 80 void TestQuadMatchesExpectations(Quad expected_quad, DrawQuad* quad); 81 82 void TestPassMatchesExpectations(Pass expected_pass, RenderPass* pass); 83 84 void TestPassesMatchExpectations(Pass* expected_passes, 85 size_t expected_pass_count, 86 RenderPassList* passes); 87 88 void SubmitFrame(Pass* passes, size_t pass_count, Surface* surface); 89 90 void QueuePassAsFrame(scoped_ptr<RenderPass> pass, Surface* surface); 91 92 } // namespace test 93 } // namespace cc 94 95 #endif // CC_SURFACES_SURFACE_AGGREGATOR_TEST_HELPERS_H_ 96