| Index: cc/test/layer_tree_host_common_test.cc
|
| diff --git a/cc/test/layer_tree_host_common_test.cc b/cc/test/layer_tree_host_common_test.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..06c9425bbf963f9a7cfa92f687d2c9354e486403
|
| --- /dev/null
|
| +++ b/cc/test/layer_tree_host_common_test.cc
|
| @@ -0,0 +1,234 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "cc/test/layer_tree_host_common_test.h"
|
| +
|
| +#include <stddef.h>
|
| +
|
| +#include "cc/layers/layer.h"
|
| +#include "cc/layers/layer_impl.h"
|
| +#include "cc/test/fake_layer_tree_host.h"
|
| +#include "cc/trees/draw_property_utils.h"
|
| +#include "cc/trees/layer_tree_host_common.h"
|
| +#include "cc/trees/property_tree_builder.h"
|
| +
|
| +namespace cc {
|
| +LayerTreeHostCommonTestBase::LayerTreeHostCommonTestBase(
|
| + const LayerTreeSettings& settings)
|
| + : LayerTestCommon::LayerImplTest(settings) {}
|
| +
|
| +LayerTreeHostCommonTestBase::~LayerTreeHostCommonTestBase() {}
|
| +
|
| +void LayerTreeHostCommonTestBase::SetLayerPropertiesForTesting(
|
| + Layer* layer,
|
| + const gfx::Transform& transform,
|
| + const gfx::Point3F& transform_origin,
|
| + const gfx::PointF& position,
|
| + const gfx::Size& bounds,
|
| + bool flatten_transform,
|
| + bool is_3d_sorted) {
|
| + SetLayerPropertiesForTestingInternal(layer, transform, position, bounds,
|
| + is_3d_sorted);
|
| + layer->SetTransformOrigin(transform_origin);
|
| + layer->SetShouldFlattenTransform(flatten_transform);
|
| +}
|
| +
|
| +void LayerTreeHostCommonTestBase::SetLayerPropertiesForTesting(
|
| + LayerImpl* layer,
|
| + const gfx::Transform& transform,
|
| + const gfx::Point3F& transform_origin,
|
| + const gfx::PointF& position,
|
| + const gfx::Size& bounds,
|
| + bool flatten_transform,
|
| + bool is_3d_sorted) {
|
| + SetLayerPropertiesForTestingInternal(layer, transform, position, bounds,
|
| + is_3d_sorted);
|
| + layer->test_properties()->transform_origin = transform_origin;
|
| + layer->test_properties()->should_flatten_transform = flatten_transform;
|
| +}
|
| +
|
| +void LayerTreeHostCommonTestBase::SetLayerPropertiesForTesting(
|
| + LayerImpl* layer,
|
| + const gfx::Transform& transform,
|
| + const gfx::Point3F& transform_origin,
|
| + const gfx::PointF& position,
|
| + const gfx::Size& bounds,
|
| + bool flatten_transform,
|
| + bool is_3d_sorted,
|
| + bool create_render_surface) {
|
| + SetLayerPropertiesForTestingInternal(layer, transform, position, bounds,
|
| + is_3d_sorted);
|
| + layer->test_properties()->transform_origin = transform_origin;
|
| + layer->test_properties()->should_flatten_transform = flatten_transform;
|
| + if (create_render_surface) {
|
| + layer->test_properties()->force_render_surface = true;
|
| + }
|
| +}
|
| +
|
| +void LayerTreeHostCommonTestBase::ExecuteCalculateDrawProperties(
|
| + Layer* root_layer,
|
| + float device_scale_factor,
|
| + float page_scale_factor,
|
| + Layer* page_scale_layer) {
|
| + PropertyTreeBuilder::PreCalculateMetaInformation(root_layer);
|
| +
|
| + EXPECT_TRUE(page_scale_layer || (page_scale_factor == 1.f));
|
| + gfx::Transform identity_matrix;
|
| + gfx::Size device_viewport_size =
|
| + gfx::Size(root_layer->bounds().width() * device_scale_factor,
|
| + root_layer->bounds().height() * device_scale_factor);
|
| +
|
| + // We are probably not testing what is intended if the root_layer bounds are
|
| + // empty.
|
| + DCHECK(!root_layer->bounds().IsEmpty());
|
| + LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs(
|
| + root_layer, device_viewport_size);
|
| + inputs.device_scale_factor = device_scale_factor;
|
| + inputs.page_scale_factor = page_scale_factor;
|
| + inputs.page_scale_layer = page_scale_layer;
|
| + LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
|
| +}
|
| +
|
| +void LayerTreeHostCommonTestBase::
|
| + ExecuteCalculateDrawPropertiesWithPropertyTrees(Layer* root_layer) {
|
| + DCHECK(root_layer->layer_tree_host());
|
| + PropertyTreeBuilder::PreCalculateMetaInformation(root_layer);
|
| +
|
| + gfx::Transform identity_transform;
|
| +
|
| + bool can_render_to_separate_surface = true;
|
| +
|
| + Layer* page_scale_layer = root_layer->GetLayerTree()->page_scale_layer();
|
| + Layer* inner_viewport_scroll_layer =
|
| + root_layer->GetLayerTree()->inner_viewport_scroll_layer();
|
| + Layer* outer_viewport_scroll_layer =
|
| + root_layer->GetLayerTree()->outer_viewport_scroll_layer();
|
| + Layer* overscroll_elasticity_layer =
|
| + root_layer->GetLayerTree()->overscroll_elasticity_layer();
|
| + gfx::Vector2dF elastic_overscroll =
|
| + root_layer->layer_tree_host()->elastic_overscroll();
|
| + float page_scale_factor = 1.f;
|
| + float device_scale_factor = 1.f;
|
| + gfx::Size device_viewport_size =
|
| + gfx::Size(root_layer->bounds().width() * device_scale_factor,
|
| + root_layer->bounds().height() * device_scale_factor);
|
| + PropertyTrees* property_trees =
|
| + root_layer->layer_tree_host()->property_trees();
|
| + update_layer_list_.clear();
|
| + PropertyTreeBuilder::BuildPropertyTrees(
|
| + root_layer, page_scale_layer, inner_viewport_scroll_layer,
|
| + outer_viewport_scroll_layer, overscroll_elasticity_layer,
|
| + elastic_overscroll, page_scale_factor, device_scale_factor,
|
| + gfx::Rect(device_viewport_size), identity_transform, property_trees);
|
| + draw_property_utils::UpdatePropertyTrees(property_trees,
|
| + can_render_to_separate_surface);
|
| + draw_property_utils::FindLayersThatNeedUpdates(
|
| + root_layer->layer_tree_host(), property_trees->transform_tree,
|
| + property_trees->effect_tree, &update_layer_list_);
|
| + draw_property_utils::ComputeVisibleRectsForTesting(
|
| + property_trees, can_render_to_separate_surface, &update_layer_list_);
|
| +}
|
| +
|
| +void LayerTreeHostCommonTestBase::
|
| + ExecuteCalculateDrawPropertiesWithPropertyTrees(LayerImpl* root_layer) {
|
| + DCHECK(root_layer->layer_tree_impl());
|
| + PropertyTreeBuilder::PreCalculateMetaInformationForTesting(root_layer);
|
| +
|
| + gfx::Transform identity_transform;
|
| +
|
| + bool can_render_to_separate_surface = true;
|
| +
|
| + LayerImpl* page_scale_layer = nullptr;
|
| + LayerImpl* inner_viewport_scroll_layer =
|
| + root_layer->layer_tree_impl()->InnerViewportScrollLayer();
|
| + LayerImpl* outer_viewport_scroll_layer =
|
| + root_layer->layer_tree_impl()->OuterViewportScrollLayer();
|
| + LayerImpl* overscroll_elasticity_layer =
|
| + root_layer->layer_tree_impl()->OverscrollElasticityLayer();
|
| + gfx::Vector2dF elastic_overscroll =
|
| + root_layer->layer_tree_impl()->elastic_overscroll()->Current(
|
| + root_layer->layer_tree_impl()->IsActiveTree());
|
| + float page_scale_factor = 1.f;
|
| + float device_scale_factor = 1.f;
|
| + gfx::Size device_viewport_size =
|
| + gfx::Size(root_layer->bounds().width() * device_scale_factor,
|
| + root_layer->bounds().height() * device_scale_factor);
|
| + update_layer_list_impl_.reset(new LayerImplList);
|
| + root_layer->layer_tree_impl()->BuildLayerListForTesting();
|
| + draw_property_utils::BuildPropertyTreesAndComputeVisibleRects(
|
| + root_layer, page_scale_layer, inner_viewport_scroll_layer,
|
| + outer_viewport_scroll_layer, overscroll_elasticity_layer,
|
| + elastic_overscroll, page_scale_factor, device_scale_factor,
|
| + gfx::Rect(device_viewport_size), identity_transform,
|
| + can_render_to_separate_surface,
|
| + root_layer->layer_tree_impl()->property_trees(),
|
| + update_layer_list_impl_.get());
|
| +}
|
| +
|
| +void LayerTreeHostCommonTestBase::ExecuteCalculateDrawProperties(
|
| + LayerImpl* root_layer,
|
| + float device_scale_factor,
|
| + float page_scale_factor,
|
| + LayerImpl* page_scale_layer) {
|
| + if (device_scale_factor !=
|
| + root_layer->layer_tree_impl()->device_scale_factor())
|
| + root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true;
|
| +
|
| + root_layer->layer_tree_impl()->SetDeviceScaleFactor(device_scale_factor);
|
| +
|
| + EXPECT_TRUE(page_scale_layer || (page_scale_factor == 1.f));
|
| +
|
| + gfx::Transform identity_matrix;
|
| + gfx::Size device_viewport_size =
|
| + gfx::Size(root_layer->bounds().width() * device_scale_factor,
|
| + root_layer->bounds().height() * device_scale_factor);
|
| +
|
| + render_surface_layer_list_impl_.reset(new LayerImplList);
|
| +
|
| + // We are probably not testing what is intended if the root_layer bounds are
|
| + // empty.
|
| + DCHECK(!root_layer->bounds().IsEmpty());
|
| + LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
|
| + root_layer, device_viewport_size, render_surface_layer_list_impl_.get());
|
| + inputs.device_scale_factor = device_scale_factor;
|
| + inputs.page_scale_factor = page_scale_factor;
|
| + inputs.page_scale_layer = page_scale_layer;
|
| + inputs.can_adjust_raster_scales = true;
|
| +
|
| + LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
|
| +}
|
| +
|
| +void LayerTreeHostCommonTestBase::
|
| + ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(
|
| + LayerImpl* root_layer) {
|
| + gfx::Transform identity_matrix;
|
| + gfx::Size device_viewport_size =
|
| + gfx::Size(root_layer->bounds().width(), root_layer->bounds().height());
|
| + render_surface_layer_list_impl_.reset(new LayerImplList);
|
| +
|
| + DCHECK(!root_layer->bounds().IsEmpty());
|
| + LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
|
| + root_layer, device_viewport_size, render_surface_layer_list_impl_.get());
|
| + inputs.can_adjust_raster_scales = true;
|
| + inputs.can_render_to_separate_surface = false;
|
| +
|
| + LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
|
| +}
|
| +
|
| +bool LayerTreeHostCommonTestBase::UpdateLayerListContains(int id) const {
|
| + for (size_t i = 0; i < update_layer_list_.size(); ++i) {
|
| + if (update_layer_list_[i]->id() == id)
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +LayerTreeHostCommonTest::LayerTreeHostCommonTest()
|
| + : LayerTreeHostCommonTestBase(LayerTreeHostCommonTestSettings()) {}
|
| +
|
| +LayerTreeHostCommonTest::LayerTreeHostCommonTest(
|
| + const LayerTreeSettings& settings)
|
| + : LayerTreeHostCommonTestBase(settings) {}
|
| +
|
| +} // namespace cc
|
|
|