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

Side by Side Diff: cc/trees/property_tree_unittest.cc

Issue 1013463003: Update from https://crrev.com/320931 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 9 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/trees/property_tree_builder.cc ('k') | cc/trees/scoped_abort_remaining_swap_promises.h » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/trees/property_tree.h" 5 #include "cc/trees/property_tree.h"
6 6
7 #include "cc/test/geometry_test_utils.h" 7 #include "cc/test/geometry_test_utils.h"
8 #include "cc/trees/draw_property_utils.h"
8 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
9 10
10 namespace cc { 11 namespace cc {
11 12
12 TEST(PropertyTreeTest, ComputeTransformRoot) { 13 TEST(PropertyTreeTest, ComputeTransformRoot) {
13 TransformTree tree; 14 TransformTree tree;
14 TransformNode& root = *tree.Node(0); 15 TransformNode& root = *tree.Node(0);
15 root.data.local.Translate(2, 2); 16 root.data.local.Translate(2, 2);
16 root.data.target_id = 0; 17 root.data.target_id = 0;
17 tree.UpdateTransforms(0); 18 tree.UpdateTransforms(0);
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 162 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
162 163
163 transform.MakeIdentity(); 164 transform.MakeIdentity();
164 expected.MakeIdentity(); 165 expected.MakeIdentity();
165 expected.Translate(-4, -4); 166 expected.Translate(-4, -4);
166 success = tree.ComputeTransform(2, 3, &transform); 167 success = tree.ComputeTransform(2, 3, &transform);
167 EXPECT_TRUE(success); 168 EXPECT_TRUE(success);
168 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 169 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
169 } 170 }
170 171
172 TEST(PropertyTreeTest, TransformsWithFlattening) {
173 TransformTree tree;
174
175 int grand_parent = tree.Insert(TransformNode(), 0);
176 tree.Node(grand_parent)->data.content_target_id = grand_parent;
177 tree.Node(grand_parent)->data.target_id = grand_parent;
178
179 gfx::Transform rotation_about_x;
180 rotation_about_x.RotateAboutXAxis(15);
181
182 int parent = tree.Insert(TransformNode(), grand_parent);
183 tree.Node(parent)->data.needs_sublayer_scale = true;
184 tree.Node(parent)->data.target_id = grand_parent;
185 tree.Node(parent)->data.content_target_id = parent;
186 tree.Node(parent)->data.local = rotation_about_x;
187
188 int child = tree.Insert(TransformNode(), parent);
189 tree.Node(child)->data.target_id = parent;
190 tree.Node(child)->data.content_target_id = parent;
191 tree.Node(child)->data.flattens_inherited_transform = true;
192 tree.Node(child)->data.local = rotation_about_x;
193
194 int grand_child = tree.Insert(TransformNode(), child);
195 tree.Node(grand_child)->data.target_id = parent;
196 tree.Node(grand_child)->data.content_target_id = parent;
197 tree.Node(grand_child)->data.flattens_inherited_transform = true;
198 tree.Node(grand_child)->data.local = rotation_about_x;
199
200 ComputeTransforms(&tree);
201
202 gfx::Transform flattened_rotation_about_x = rotation_about_x;
203 flattened_rotation_about_x.FlattenTo2d();
204
205 EXPECT_TRANSFORMATION_MATRIX_EQ(rotation_about_x,
206 tree.Node(child)->data.to_target);
207
208 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_x * rotation_about_x,
209 tree.Node(child)->data.to_screen);
210
211 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_x * rotation_about_x,
212 tree.Node(grand_child)->data.to_target);
213
214 EXPECT_TRANSFORMATION_MATRIX_EQ(flattened_rotation_about_x *
215 flattened_rotation_about_x *
216 rotation_about_x,
217 tree.Node(grand_child)->data.to_screen);
218
219 gfx::Transform grand_child_to_child;
220 bool success =
221 tree.ComputeTransform(grand_child, child, &grand_child_to_child);
222 EXPECT_TRUE(success);
223 EXPECT_TRANSFORMATION_MATRIX_EQ(rotation_about_x, grand_child_to_child);
224
225 // Remove flattening at grand_child, and recompute transforms.
226 tree.Node(grand_child)->data.flattens_inherited_transform = false;
227 ComputeTransforms(&tree);
228
229 EXPECT_TRANSFORMATION_MATRIX_EQ(rotation_about_x * rotation_about_x,
230 tree.Node(grand_child)->data.to_target);
231
232 EXPECT_TRANSFORMATION_MATRIX_EQ(
233 flattened_rotation_about_x * rotation_about_x * rotation_about_x,
234 tree.Node(grand_child)->data.to_screen);
235
236 success = tree.ComputeTransform(grand_child, child, &grand_child_to_child);
237 EXPECT_TRUE(success);
238 EXPECT_TRANSFORMATION_MATRIX_EQ(rotation_about_x, grand_child_to_child);
239 }
240
171 TEST(PropertyTreeTest, MultiplicationOrder) { 241 TEST(PropertyTreeTest, MultiplicationOrder) {
172 TransformTree tree; 242 TransformTree tree;
173 TransformNode& root = *tree.Node(0); 243 TransformNode& root = *tree.Node(0);
174 root.data.local.Translate(2, 2); 244 root.data.local.Translate(2, 2);
175 root.data.target_id = 0; 245 root.data.target_id = 0;
176 tree.UpdateTransforms(0); 246 tree.UpdateTransforms(0);
177 247
178 TransformNode child; 248 TransformNode child;
179 child.data.local.Scale(2, 2); 249 child.data.local.Scale(2, 2);
180 child.data.target_id = 0; 250 child.data.target_id = 0;
(...skipping 14 matching lines...) Expand all
195 265
196 success = tree.ComputeTransform(-1, 1, &inverse); 266 success = tree.ComputeTransform(-1, 1, &inverse);
197 EXPECT_TRUE(success); 267 EXPECT_TRUE(success);
198 268
199 transform = transform * inverse; 269 transform = transform * inverse;
200 expected.MakeIdentity(); 270 expected.MakeIdentity();
201 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 271 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
202 } 272 }
203 273
204 } // namespace cc 274 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/property_tree_builder.cc ('k') | cc/trees/scoped_abort_remaining_swap_promises.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698