12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2011 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CC_TREES_LAYER_TREE_HOST_COMMON_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CC_TREES_LAYER_TREE_HOST_COMMON_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 8558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#include <limits> 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <vector> 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/bind.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/ref_counted.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/base/cc_export.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/base/scoped_ptr_vector.h" 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/layers/layer_lists.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/rect.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/transform.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/vector2d.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class LayerImpl; 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Layer; 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class SwapPromise; 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CC_EXPORT LayerTreeHostCommon { 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static gfx::Rect CalculateVisibleRect(const gfx::Rect& target_surface_rect, 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& layer_bound_rect, 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Transform& transform); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 32558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch template <typename LayerType, typename RenderSurfaceLayerListType> 33558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch struct CalcDrawPropsInputs { 34558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch public: 35558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch CalcDrawPropsInputs(LayerType* root_layer, 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Size& device_viewport_size, 37558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const gfx::Transform& device_transform, 38558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch float device_scale_factor, 39558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch float page_scale_factor, 401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const LayerType* page_scale_application_layer, 41558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch int max_texture_size, 42558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch bool can_use_lcd_text, 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool can_render_to_separate_surface, 44558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch bool can_adjust_raster_scales, 450de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) RenderSurfaceLayerListType* render_surface_layer_list, 460de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) int current_render_surface_layer_list_id) 47558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch : root_layer(root_layer), 48558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch device_viewport_size(device_viewport_size), 49558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch device_transform(device_transform), 50558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch device_scale_factor(device_scale_factor), 51558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch page_scale_factor(page_scale_factor), 52558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch page_scale_application_layer(page_scale_application_layer), 53558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch max_texture_size(max_texture_size), 54558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch can_use_lcd_text(can_use_lcd_text), 554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) can_render_to_separate_surface(can_render_to_separate_surface), 56558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch can_adjust_raster_scales(can_adjust_raster_scales), 570de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) render_surface_layer_list(render_surface_layer_list), 580de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) current_render_surface_layer_list_id( 590de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) current_render_surface_layer_list_id) {} 60558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 61558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch LayerType* root_layer; 62558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch gfx::Size device_viewport_size; 63558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const gfx::Transform& device_transform; 64558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch float device_scale_factor; 65558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch float page_scale_factor; 661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const LayerType* page_scale_application_layer; 67558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch int max_texture_size; 68558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch bool can_use_lcd_text; 694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool can_render_to_separate_surface; 70558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch bool can_adjust_raster_scales; 71558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch RenderSurfaceLayerListType* render_surface_layer_list; 720de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) int current_render_surface_layer_list_id; 73558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch }; 74558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 75558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch template <typename LayerType, typename RenderSurfaceLayerListType> 76558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch struct CalcDrawPropsInputsForTesting 77558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch : public CalcDrawPropsInputs<LayerType, RenderSurfaceLayerListType> { 78558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch CalcDrawPropsInputsForTesting( 79558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch LayerType* root_layer, 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Size& device_viewport_size, 81558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const gfx::Transform& device_transform, 82558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch RenderSurfaceLayerListType* render_surface_layer_list); 83558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch CalcDrawPropsInputsForTesting( 84558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch LayerType* root_layer, 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Size& device_viewport_size, 86558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch RenderSurfaceLayerListType* render_surface_layer_list); 87558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 88558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch private: 89558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const gfx::Transform identity_transform_; 90558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch }; 91558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 92558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch typedef CalcDrawPropsInputs<Layer, RenderSurfaceLayerList> 93558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch CalcDrawPropsMainInputs; 94558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch typedef CalcDrawPropsInputsForTesting<Layer, RenderSurfaceLayerList> 95558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch CalcDrawPropsMainInputsForTesting; 96558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch static void CalculateDrawProperties(CalcDrawPropsMainInputs* inputs); 97558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 98558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch typedef CalcDrawPropsInputs<LayerImpl, LayerImplList> CalcDrawPropsImplInputs; 99558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch typedef CalcDrawPropsInputsForTesting<LayerImpl, LayerImplList> 100558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch CalcDrawPropsImplInputsForTesting; 101558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch static void CalculateDrawProperties(CalcDrawPropsImplInputs* inputs); 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) template <typename LayerType> 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static bool RenderSurfaceContributesToTarget(LayerType*, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int target_surface_layer_id); 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 107eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch template <typename LayerType> 108eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static void CallFunctionForSubtree( 109eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch LayerType* root_layer, 110eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::Callback<void(LayerType* layer)>& function); 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns a layer with the given id if one exists in the subtree starting 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // from the given root layer (including mask and replica layers). 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) template <typename LayerType> 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static LayerType* FindLayerInSubtree(LayerType* root_layer, int layer_id); 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu static Layer* get_layer_as_raw_ptr(const LayerList& layers, size_t index) { 1185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return layers[index].get(); 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu static LayerImpl* get_layer_as_raw_ptr(const OwnedLayerImplList& layers, 1225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu size_t index) { 1235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return layers[index]; 1245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 1255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 1265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu static LayerImpl* get_layer_as_raw_ptr(const LayerImplList& layers, 1275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu size_t index) { 1285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return layers[index]; 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct ScrollUpdateInfo { 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int layer_id; 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Vector2d scroll_delta; 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct CC_EXPORT ScrollAndScaleSet { 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ScrollAndScaleSet(); 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ~ScrollAndScaleSet(); 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<LayerTreeHostCommon::ScrollUpdateInfo> scrolls; 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float page_scale_delta; 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci float top_controls_delta; 1446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ScopedPtrVector<SwapPromise> swap_promises; 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template <typename LayerType> 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool LayerTreeHostCommon::RenderSurfaceContributesToTarget( 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerType* layer, 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int target_surface_layer_id) { 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // A layer will either contribute its own content, or its render surface's 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // content, to the target surface. The layer contributes its surface's content 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // when both the following are true: 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // (1) The layer actually has a render surface, and 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // (2) The layer's render surface is not the same as the target surface. 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Otherwise, the layer just contributes itself to the target surface. 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return layer->render_surface() && layer->id() != target_surface_layer_id; 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template <typename LayerType> 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)LayerType* LayerTreeHostCommon::FindLayerInSubtree(LayerType* root_layer, 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int layer_id) { 165868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!root_layer) 166868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return NULL; 167868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (root_layer->id() == layer_id) 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return root_layer; 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (root_layer->mask_layer() && root_layer->mask_layer()->id() == layer_id) 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return root_layer->mask_layer(); 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (root_layer->replica_layer() && 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) root_layer->replica_layer()->id() == layer_id) 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return root_layer->replica_layer(); 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < root_layer->children().size(); ++i) { 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (LayerType* found = FindLayerInSubtree( 1805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu get_layer_as_raw_ptr(root_layer->children(), i), layer_id)) 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return found; 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 186eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochtemplate <typename LayerType> 187eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid LayerTreeHostCommon::CallFunctionForSubtree( 188eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch LayerType* root_layer, 189eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::Callback<void(LayerType* layer)>& function) { 190eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch function.Run(root_layer); 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (LayerType* mask_layer = root_layer->mask_layer()) 193eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch function.Run(mask_layer); 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (LayerType* replica_layer = root_layer->replica_layer()) { 195eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch function.Run(replica_layer); 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (LayerType* mask_layer = replica_layer->mask_layer()) 197eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch function.Run(mask_layer); 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < root_layer->children().size(); ++i) { 2015c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu CallFunctionForSubtree(get_layer_as_raw_ptr(root_layer->children(), i), 202eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch function); 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 206558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochtemplate <typename LayerType, typename RenderSurfaceLayerListType> 207558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochLayerTreeHostCommon::CalcDrawPropsInputsForTesting<LayerType, 208558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch RenderSurfaceLayerListType>:: 209558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch CalcDrawPropsInputsForTesting( 210558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch LayerType* root_layer, 2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Size& device_viewport_size, 212558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const gfx::Transform& device_transform, 213558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch RenderSurfaceLayerListType* render_surface_layer_list) 214558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch : CalcDrawPropsInputs<LayerType, RenderSurfaceLayerListType>( 215558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch root_layer, 216558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch device_viewport_size, 217558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch device_transform, 218558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 1.f, 219558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 1.f, 220558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch NULL, 221558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch std::numeric_limits<int>::max() / 2, 222558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch false, 2234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) true, 224558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch false, 2250de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) render_surface_layer_list, 2260de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 0) { 227558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch DCHECK(root_layer); 228558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch DCHECK(render_surface_layer_list); 229558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 230558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 231558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochtemplate <typename LayerType, typename RenderSurfaceLayerListType> 232558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochLayerTreeHostCommon::CalcDrawPropsInputsForTesting<LayerType, 233558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch RenderSurfaceLayerListType>:: 234558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch CalcDrawPropsInputsForTesting( 235558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch LayerType* root_layer, 2365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Size& device_viewport_size, 237558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch RenderSurfaceLayerListType* render_surface_layer_list) 238558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch : CalcDrawPropsInputs<LayerType, RenderSurfaceLayerListType>( 239558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch root_layer, 240558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch device_viewport_size, 241558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch identity_transform_, 242558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 1.f, 243558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 1.f, 244558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch NULL, 245558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch std::numeric_limits<int>::max() / 2, 246558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch false, 2474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) true, 248558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch false, 2490de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) render_surface_layer_list, 2500de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 0) { 251558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch DCHECK(root_layer); 252558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch DCHECK(render_surface_layer_list); 253558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch} 254558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch 2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CC_TREES_LAYER_TREE_HOST_COMMON_H_ 258