Home | History | Annotate | Download | only in surfaces
      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