| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/layers/layer.h" | 5 #include "cc/layers/layer.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/thread_task_runner_handle.h" | 9 #include "base/thread_task_runner_handle.h" |
| 10 #include "cc/animation/animation_host.h" | 10 #include "cc/animation/animation_host.h" |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 EXPECT_EQ(src->is_container_for_fixed_position_layers_, | 173 EXPECT_EQ(src->is_container_for_fixed_position_layers_, |
| 174 dest->is_container_for_fixed_position_layers_); | 174 dest->is_container_for_fixed_position_layers_); |
| 175 EXPECT_EQ(src->position_constraint_, dest->position_constraint_); | 175 EXPECT_EQ(src->position_constraint_, dest->position_constraint_); |
| 176 EXPECT_EQ(src->should_flatten_transform_, dest->should_flatten_transform_); | 176 EXPECT_EQ(src->should_flatten_transform_, dest->should_flatten_transform_); |
| 177 EXPECT_EQ(src->should_flatten_transform_from_property_tree_, | 177 EXPECT_EQ(src->should_flatten_transform_from_property_tree_, |
| 178 dest->should_flatten_transform_from_property_tree_); | 178 dest->should_flatten_transform_from_property_tree_); |
| 179 EXPECT_EQ(src->draw_blend_mode_, dest->draw_blend_mode_); | 179 EXPECT_EQ(src->draw_blend_mode_, dest->draw_blend_mode_); |
| 180 EXPECT_EQ(src->use_parent_backface_visibility_, | 180 EXPECT_EQ(src->use_parent_backface_visibility_, |
| 181 dest->use_parent_backface_visibility_); | 181 dest->use_parent_backface_visibility_); |
| 182 EXPECT_EQ(src->transform_, dest->transform_); | 182 EXPECT_EQ(src->transform_, dest->transform_); |
| 183 EXPECT_EQ(src->transform_is_invertible_, dest->transform_is_invertible_); | |
| 184 EXPECT_EQ(src->sorting_context_id_, dest->sorting_context_id_); | 183 EXPECT_EQ(src->sorting_context_id_, dest->sorting_context_id_); |
| 185 EXPECT_EQ(src->num_descendants_that_draw_content_, | 184 EXPECT_EQ(src->num_descendants_that_draw_content_, |
| 186 dest->num_descendants_that_draw_content_); | 185 dest->num_descendants_that_draw_content_); |
| 187 EXPECT_EQ(src->scroll_clip_layer_id_, dest->scroll_clip_layer_id_); | 186 EXPECT_EQ(src->scroll_clip_layer_id_, dest->scroll_clip_layer_id_); |
| 188 EXPECT_EQ(src->user_scrollable_horizontal_, | 187 EXPECT_EQ(src->user_scrollable_horizontal_, |
| 189 dest->user_scrollable_horizontal_); | 188 dest->user_scrollable_horizontal_); |
| 190 EXPECT_EQ(src->user_scrollable_vertical_, dest->user_scrollable_vertical_); | 189 EXPECT_EQ(src->user_scrollable_vertical_, dest->user_scrollable_vertical_); |
| 191 EXPECT_EQ(src->scroll_offset_, dest->scroll_offset_); | 190 EXPECT_EQ(src->scroll_offset_, dest->scroll_offset_); |
| 192 EXPECT_EQ(update_rect, dest->update_rect_); | 191 EXPECT_EQ(update_rect, dest->update_rect_); |
| 193 | 192 |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 LayerPositionConstraint pos_con; | 279 LayerPositionConstraint pos_con; |
| 281 pos_con.set_is_fixed_to_bottom_edge(true); | 280 pos_con.set_is_fixed_to_bottom_edge(true); |
| 282 layer->position_constraint_ = pos_con; | 281 layer->position_constraint_ = pos_con; |
| 283 layer->should_flatten_transform_ = true; | 282 layer->should_flatten_transform_ = true; |
| 284 layer->should_flatten_transform_from_property_tree_ = true; | 283 layer->should_flatten_transform_from_property_tree_ = true; |
| 285 layer->draw_blend_mode_ = SkXfermode::kSrcOut_Mode; | 284 layer->draw_blend_mode_ = SkXfermode::kSrcOut_Mode; |
| 286 layer->use_parent_backface_visibility_ = true; | 285 layer->use_parent_backface_visibility_ = true; |
| 287 gfx::Transform transform; | 286 gfx::Transform transform; |
| 288 transform.Rotate(90); | 287 transform.Rotate(90); |
| 289 layer->transform_ = transform; | 288 layer->transform_ = transform; |
| 290 layer->transform_is_invertible_ = true; | |
| 291 layer->sorting_context_id_ = 0; | 289 layer->sorting_context_id_ = 0; |
| 292 layer->num_descendants_that_draw_content_ = 5; | 290 layer->num_descendants_that_draw_content_ = 5; |
| 293 layer->scroll_clip_layer_id_ = Layer::INVALID_ID; | 291 layer->scroll_clip_layer_id_ = Layer::INVALID_ID; |
| 294 layer->user_scrollable_horizontal_ = false; | 292 layer->user_scrollable_horizontal_ = false; |
| 295 layer->user_scrollable_vertical_ = true; | 293 layer->user_scrollable_vertical_ = true; |
| 296 layer->scroll_offset_ = gfx::ScrollOffset(3, 14); | 294 layer->scroll_offset_ = gfx::ScrollOffset(3, 14); |
| 297 layer->update_rect_ = gfx::Rect(14, 15); | 295 layer->update_rect_ = gfx::Rect(14, 15); |
| 298 | 296 |
| 299 VerifyBaseLayerPropertiesSerializationAndDeserialization(layer.get()); | 297 VerifyBaseLayerPropertiesSerializationAndDeserialization(layer.get()); |
| 300 } | 298 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 329 layer->position_constraint_ = pos_con; | 327 layer->position_constraint_ = pos_con; |
| 330 layer->should_flatten_transform_ = !layer->should_flatten_transform_; | 328 layer->should_flatten_transform_ = !layer->should_flatten_transform_; |
| 331 layer->should_flatten_transform_from_property_tree_ = | 329 layer->should_flatten_transform_from_property_tree_ = |
| 332 !layer->should_flatten_transform_from_property_tree_; | 330 !layer->should_flatten_transform_from_property_tree_; |
| 333 layer->draw_blend_mode_ = SkXfermode::kSrcOut_Mode; | 331 layer->draw_blend_mode_ = SkXfermode::kSrcOut_Mode; |
| 334 layer->use_parent_backface_visibility_ = | 332 layer->use_parent_backface_visibility_ = |
| 335 !layer->use_parent_backface_visibility_; | 333 !layer->use_parent_backface_visibility_; |
| 336 gfx::Transform transform; | 334 gfx::Transform transform; |
| 337 transform.Rotate(90); | 335 transform.Rotate(90); |
| 338 layer->transform_ = transform; | 336 layer->transform_ = transform; |
| 339 layer->transform_is_invertible_ = !layer->transform_is_invertible_; | |
| 340 layer->sorting_context_id_ = 42; | 337 layer->sorting_context_id_ = 42; |
| 341 layer->num_descendants_that_draw_content_ = 5; | 338 layer->num_descendants_that_draw_content_ = 5; |
| 342 layer->scroll_clip_layer_id_ = 17; | 339 layer->scroll_clip_layer_id_ = 17; |
| 343 layer->user_scrollable_horizontal_ = !layer->user_scrollable_horizontal_; | 340 layer->user_scrollable_horizontal_ = !layer->user_scrollable_horizontal_; |
| 344 layer->user_scrollable_vertical_ = !layer->user_scrollable_vertical_; | 341 layer->user_scrollable_vertical_ = !layer->user_scrollable_vertical_; |
| 345 layer->scroll_offset_ = gfx::ScrollOffset(3, 14); | 342 layer->scroll_offset_ = gfx::ScrollOffset(3, 14); |
| 346 layer->update_rect_ = gfx::Rect(14, 15); | 343 layer->update_rect_ = gfx::Rect(14, 15); |
| 347 | 344 |
| 348 VerifyBaseLayerPropertiesSerializationAndDeserialization(layer.get()); | 345 VerifyBaseLayerPropertiesSerializationAndDeserialization(layer.get()); |
| 349 } | 346 } |
| (...skipping 1455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1805 EXPECT_EQ(nullptr, mask->parent()); | 1802 EXPECT_EQ(nullptr, mask->parent()); |
| 1806 EXPECT_EQ(child.get(), mask_replacement->parent()); | 1803 EXPECT_EQ(child.get(), mask_replacement->parent()); |
| 1807 | 1804 |
| 1808 child->SetReplicaLayer(replica_replacement.get()); | 1805 child->SetReplicaLayer(replica_replacement.get()); |
| 1809 EXPECT_EQ(nullptr, replica->parent()); | 1806 EXPECT_EQ(nullptr, replica->parent()); |
| 1810 EXPECT_EQ(child.get(), replica_replacement->parent()); | 1807 EXPECT_EQ(child.get(), replica_replacement->parent()); |
| 1811 | 1808 |
| 1812 EXPECT_EQ(replica.get(), replica->mask_layer()->parent()); | 1809 EXPECT_EQ(replica.get(), replica->mask_layer()->parent()); |
| 1813 } | 1810 } |
| 1814 | 1811 |
| 1815 TEST_F(LayerTest, CheckTransformIsInvertible) { | |
| 1816 scoped_refptr<Layer> layer = Layer::Create(); | |
| 1817 std::unique_ptr<LayerImpl> impl_layer = | |
| 1818 LayerImpl::Create(host_impl_.active_tree(), 1); | |
| 1819 EXPECT_CALL(*layer_tree_host_, SetNeedsFullTreeSync()).Times(1); | |
| 1820 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber()); | |
| 1821 layer_tree_host_->SetRootLayer(layer); | |
| 1822 | |
| 1823 EXPECT_TRUE(layer->transform_is_invertible()); | |
| 1824 | |
| 1825 gfx::Transform singular_transform; | |
| 1826 singular_transform.Scale3d( | |
| 1827 SkDoubleToMScalar(1.0), SkDoubleToMScalar(1.0), SkDoubleToMScalar(0.0)); | |
| 1828 | |
| 1829 layer->SetTransform(singular_transform); | |
| 1830 layer->PushPropertiesTo(impl_layer.get()); | |
| 1831 | |
| 1832 EXPECT_FALSE(layer->transform_is_invertible()); | |
| 1833 EXPECT_FALSE(impl_layer->transform().IsInvertible()); | |
| 1834 | |
| 1835 gfx::Transform rotation_transform; | |
| 1836 rotation_transform.RotateAboutZAxis(-45.0); | |
| 1837 | |
| 1838 layer->SetTransform(rotation_transform); | |
| 1839 layer->PushPropertiesTo(impl_layer.get()); | |
| 1840 EXPECT_TRUE(layer->transform_is_invertible()); | |
| 1841 EXPECT_TRUE(impl_layer->transform().IsInvertible()); | |
| 1842 | |
| 1843 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | |
| 1844 } | |
| 1845 | |
| 1846 TEST_F(LayerTest, TransformIsInvertibleAnimation) { | |
| 1847 scoped_refptr<Layer> layer = Layer::Create(); | |
| 1848 std::unique_ptr<LayerImpl> impl_layer = | |
| 1849 LayerImpl::Create(host_impl_.active_tree(), 1); | |
| 1850 EXPECT_CALL(*layer_tree_host_, SetNeedsFullTreeSync()).Times(1); | |
| 1851 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber()); | |
| 1852 layer_tree_host_->SetRootLayer(layer); | |
| 1853 | |
| 1854 EXPECT_TRUE(layer->transform_is_invertible()); | |
| 1855 | |
| 1856 gfx::Transform singular_transform; | |
| 1857 singular_transform.Scale3d( | |
| 1858 SkDoubleToMScalar(1.0), SkDoubleToMScalar(1.0), SkDoubleToMScalar(0.0)); | |
| 1859 | |
| 1860 layer->SetTransform(singular_transform); | |
| 1861 layer->PushPropertiesTo(impl_layer.get()); | |
| 1862 | |
| 1863 EXPECT_FALSE(layer->transform_is_invertible()); | |
| 1864 EXPECT_FALSE(impl_layer->transform().IsInvertible()); | |
| 1865 | |
| 1866 gfx::Transform identity_transform; | |
| 1867 | |
| 1868 EXPECT_CALL(*layer_tree_host_, SetNeedsUpdateLayers()).Times(1); | |
| 1869 layer->SetTransform(identity_transform); | |
| 1870 layer->OnTransformAnimated(singular_transform); | |
| 1871 layer->PushPropertiesTo(impl_layer.get()); | |
| 1872 EXPECT_FALSE(layer->transform_is_invertible()); | |
| 1873 EXPECT_FALSE(impl_layer->transform().IsInvertible()); | |
| 1874 | |
| 1875 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | |
| 1876 } | |
| 1877 | |
| 1878 class LayerTreeHostFactory { | 1812 class LayerTreeHostFactory { |
| 1879 public: | 1813 public: |
| 1880 LayerTreeHostFactory() : client_(FakeLayerTreeHostClient::DIRECT_3D) {} | 1814 LayerTreeHostFactory() : client_(FakeLayerTreeHostClient::DIRECT_3D) {} |
| 1881 | 1815 |
| 1882 std::unique_ptr<LayerTreeHost> Create() { | 1816 std::unique_ptr<LayerTreeHost> Create() { |
| 1883 return Create(LayerTreeSettings()); | 1817 return Create(LayerTreeSettings()); |
| 1884 } | 1818 } |
| 1885 | 1819 |
| 1886 std::unique_ptr<LayerTreeHost> Create(LayerTreeSettings settings) { | 1820 std::unique_ptr<LayerTreeHost> Create(LayerTreeSettings settings) { |
| 1887 LayerTreeHost::InitParams params; | 1821 LayerTreeHost::InitParams params; |
| (...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2561 EXPECT_EQ(MutableProperty::kNone, impl_layer->mutable_properties()); | 2495 EXPECT_EQ(MutableProperty::kNone, impl_layer->mutable_properties()); |
| 2562 | 2496 |
| 2563 test_layer->PushPropertiesTo(impl_layer.get()); | 2497 test_layer->PushPropertiesTo(impl_layer.get()); |
| 2564 | 2498 |
| 2565 EXPECT_EQ(2lu, impl_layer->element_id()); | 2499 EXPECT_EQ(2lu, impl_layer->element_id()); |
| 2566 EXPECT_EQ(MutableProperty::kTransform, impl_layer->mutable_properties()); | 2500 EXPECT_EQ(MutableProperty::kTransform, impl_layer->mutable_properties()); |
| 2567 } | 2501 } |
| 2568 | 2502 |
| 2569 } // namespace | 2503 } // namespace |
| 2570 } // namespace cc | 2504 } // namespace cc |
| OLD | NEW |