Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(880)

Side by Side Diff: cc/layers/layer_unittest.cc

Issue 1906003002: cc: Stop cache transform invertibility at Layer and LayerImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: re-remove skipping due to invertibility in precalc, this was lost in rebase Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/layers/layer.cc ('k') | cc/trees/layer_tree_host_common.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/layers/layer.cc ('k') | cc/trees/layer_tree_host_common.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698