cc: Use a struct for CalcDrawProps inputs

This is just a refactoring and should not change any behavior.

[email protected]
BUG=none

Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=213493

Review URL: https://chromiumcodereview.appspot.com/19935003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@213841 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/cc/trees/layer_tree_host_common.h b/cc/trees/layer_tree_host_common.h
index 154d8a0..05affee8 100644
--- a/cc/trees/layer_tree_host_common.h
+++ b/cc/trees/layer_tree_host_common.h
@@ -5,6 +5,7 @@
 #ifndef CC_TREES_LAYER_TREE_HOST_COMMON_H_
 #define CC_TREES_LAYER_TREE_HOST_COMMON_H_
 
+#include <limits>
 #include <vector>
 
 #include "base/bind.h"
@@ -27,28 +28,69 @@
                                         gfx::Rect layer_bound_rect,
                                         const gfx::Transform& transform);
 
-  static void CalculateDrawProperties(
-      Layer* root_layer,
-      gfx::Size device_viewport_size,
-      const gfx::Transform& device_transform,
-      float device_scale_factor,
-      float page_scale_factor,
-      Layer* page_scale_application_layer,
-      int max_texture_size,
-      bool can_use_lcd_text,
-      bool can_adjust_raster_scales,
-      RenderSurfaceLayerList* render_surface_layer_list);
-  static void CalculateDrawProperties(
-      LayerImpl* root_layer,
-      gfx::Size device_viewport_size,
-      const gfx::Transform& device_transform,
-      float device_scale_factor,
-      float page_scale_factor,
-      LayerImpl* page_scale_application_layer,
-      int max_texture_size,
-      bool can_use_lcd_text,
-      bool can_adjust_raster_scales,
-      LayerImplList* render_surface_layer_list);
+  template <typename LayerType, typename RenderSurfaceLayerListType>
+  struct CalcDrawPropsInputs {
+   public:
+    CalcDrawPropsInputs(LayerType* root_layer,
+                        gfx::Size device_viewport_size,
+                        const gfx::Transform& device_transform,
+                        float device_scale_factor,
+                        float page_scale_factor,
+                        LayerType* page_scale_application_layer,
+                        int max_texture_size,
+                        bool can_use_lcd_text,
+                        bool can_adjust_raster_scales,
+                        RenderSurfaceLayerListType* render_surface_layer_list)
+        : root_layer(root_layer),
+          device_viewport_size(device_viewport_size),
+          device_transform(device_transform),
+          device_scale_factor(device_scale_factor),
+          page_scale_factor(page_scale_factor),
+          page_scale_application_layer(page_scale_application_layer),
+          max_texture_size(max_texture_size),
+          can_use_lcd_text(can_use_lcd_text),
+          can_adjust_raster_scales(can_adjust_raster_scales),
+          render_surface_layer_list(render_surface_layer_list) {}
+
+    LayerType* root_layer;
+    gfx::Size device_viewport_size;
+    const gfx::Transform& device_transform;
+    float device_scale_factor;
+    float page_scale_factor;
+    LayerType* page_scale_application_layer;
+    int max_texture_size;
+    bool can_use_lcd_text;
+    bool can_adjust_raster_scales;
+    RenderSurfaceLayerListType* render_surface_layer_list;
+  };
+
+  template <typename LayerType, typename RenderSurfaceLayerListType>
+  struct CalcDrawPropsInputsForTesting
+      : public CalcDrawPropsInputs<LayerType, RenderSurfaceLayerListType> {
+    CalcDrawPropsInputsForTesting(
+        LayerType* root_layer,
+        gfx::Size device_viewport_size,
+        const gfx::Transform& device_transform,
+        RenderSurfaceLayerListType* render_surface_layer_list);
+    CalcDrawPropsInputsForTesting(
+        LayerType* root_layer,
+        gfx::Size device_viewport_size,
+        RenderSurfaceLayerListType* render_surface_layer_list);
+
+   private:
+    const gfx::Transform identity_transform_;
+  };
+
+  typedef CalcDrawPropsInputs<Layer, RenderSurfaceLayerList>
+      CalcDrawPropsMainInputs;
+  typedef CalcDrawPropsInputsForTesting<Layer, RenderSurfaceLayerList>
+      CalcDrawPropsMainInputsForTesting;
+  static void CalculateDrawProperties(CalcDrawPropsMainInputs* inputs);
+
+  typedef CalcDrawPropsInputs<LayerImpl, LayerImplList> CalcDrawPropsImplInputs;
+  typedef CalcDrawPropsInputsForTesting<LayerImpl, LayerImplList>
+      CalcDrawPropsImplInputsForTesting;
+  static void CalculateDrawProperties(CalcDrawPropsImplInputs* inputs);
 
   // Performs hit testing for a given render_surface_layer_list.
   static LayerImpl* FindLayerThatIsHitByPoint(
@@ -161,6 +203,51 @@
   }
 }
 
+template <typename LayerType, typename RenderSurfaceLayerListType>
+LayerTreeHostCommon::CalcDrawPropsInputsForTesting<LayerType,
+                                                   RenderSurfaceLayerListType>::
+    CalcDrawPropsInputsForTesting(
+        LayerType* root_layer,
+        gfx::Size device_viewport_size,
+        const gfx::Transform& device_transform,
+        RenderSurfaceLayerListType* render_surface_layer_list)
+    : CalcDrawPropsInputs<LayerType, RenderSurfaceLayerListType>(
+          root_layer,
+          device_viewport_size,
+          device_transform,
+          1.f,
+          1.f,
+          NULL,
+          std::numeric_limits<int>::max() / 2,
+          false,
+          false,
+          render_surface_layer_list) {
+  DCHECK(root_layer);
+  DCHECK(render_surface_layer_list);
+}
+
+template <typename LayerType, typename RenderSurfaceLayerListType>
+LayerTreeHostCommon::CalcDrawPropsInputsForTesting<LayerType,
+                                                   RenderSurfaceLayerListType>::
+    CalcDrawPropsInputsForTesting(
+        LayerType* root_layer,
+        gfx::Size device_viewport_size,
+        RenderSurfaceLayerListType* render_surface_layer_list)
+    : CalcDrawPropsInputs<LayerType, RenderSurfaceLayerListType>(
+          root_layer,
+          device_viewport_size,
+          identity_transform_,
+          1.f,
+          1.f,
+          NULL,
+          std::numeric_limits<int>::max() / 2,
+          false,
+          false,
+          render_surface_layer_list) {
+  DCHECK(root_layer);
+  DCHECK(render_surface_layer_list);
+}
+
 }  // namespace cc
 
 #endif  // CC_TREES_LAYER_TREE_HOST_COMMON_H_