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

Side by Side Diff: webkit/compositor_bindings/web_transform_operations_unittest.cc

Issue 11644004: Only create instances of WebTransformOperations using cc::TransformOperations::Create (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase, and fix WebTransformAnimationCurveImpl Created 8 years 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "base/memory/scoped_ptr.h"
5 #include "base/memory/scoped_vector.h" 6 #include "base/memory/scoped_vector.h"
6 #include "cc/test/geometry_test_utils.h" 7 #include "cc/test/geometry_test_utils.h"
8 #include "cc/transform_operations.h"
7 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
8 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformOperati ons.h" 10 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformOperati ons.h"
9 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformationMa trix.h" 11 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformationMa trix.h"
10 12
11 using namespace WebKit; 13 using namespace WebKit;
12 14
13 TEST(WebTransformOperationTest, transformTypesAreUnique) 15 TEST(WebTransformOperationTest, transformTypesAreUnique)
14 { 16 {
15 ScopedVector<WebTransformOperations> transforms; 17 ScopedVector<WebTransformOperations> transforms;
16 18
17 WebTransformOperations* toAdd = new WebTransformOperations(); 19 WebTransformOperations* toAdd = cc::TransformOperations::Create();
18 toAdd->appendTranslate(1, 0, 0); 20 toAdd->appendTranslate(1, 0, 0);
19 transforms.push_back(toAdd); 21 transforms.push_back(toAdd);
20 22
21 toAdd = new WebTransformOperations(); 23 toAdd = cc::TransformOperations::Create();
22 toAdd->appendRotate(0, 0, 1, 2); 24 toAdd->appendRotate(0, 0, 1, 2);
23 transforms.push_back(toAdd); 25 transforms.push_back(toAdd);
24 26
25 toAdd = new WebTransformOperations(); 27 toAdd = cc::TransformOperations::Create();
26 toAdd->appendScale(2, 2, 2); 28 toAdd->appendScale(2, 2, 2);
27 transforms.push_back(toAdd); 29 transforms.push_back(toAdd);
28 30
29 toAdd = new WebTransformOperations(); 31 toAdd = cc::TransformOperations::Create();
30 toAdd->appendSkew(1, 0); 32 toAdd->appendSkew(1, 0);
31 transforms.push_back(toAdd); 33 transforms.push_back(toAdd);
32 34
33 toAdd = new WebTransformOperations(); 35 toAdd = cc::TransformOperations::Create();
34 toAdd->appendPerspective(800); 36 toAdd->appendPerspective(800);
35 transforms.push_back(toAdd); 37 transforms.push_back(toAdd);
36 38
37 for (size_t i = 0; i < transforms.size(); ++i) { 39 for (size_t i = 0; i < transforms.size(); ++i) {
38 for (size_t j = 0; j < transforms.size(); ++j) { 40 for (size_t j = 0; j < transforms.size(); ++j) {
39 bool matchesType = transforms[i]->matchesTypes(*transforms[j]); 41 bool matchesType = transforms[i]->matchesTypes(*transforms[j]);
40 EXPECT_TRUE((i == j && matchesType) || !matchesType); 42 EXPECT_TRUE((i == j && matchesType) || !matchesType);
41 } 43 }
42 } 44 }
43 } 45 }
44 46
45 TEST(WebTransformOperationTest, matchTypesSameLength) 47 TEST(WebTransformOperationTest, matchTypesSameLength)
46 { 48 {
47 WebTransformOperations translates; 49 scoped_ptr<WebTransformOperations> translates(
48 translates.appendTranslate(1, 0, 0); 50 cc::TransformOperations::Create());
49 translates.appendTranslate(1, 0, 0); 51 translates->appendTranslate(1, 0, 0);
50 translates.appendTranslate(1, 0, 0); 52 translates->appendTranslate(1, 0, 0);
53 translates->appendTranslate(1, 0, 0);
51 54
52 WebTransformOperations skews; 55 scoped_ptr<WebTransformOperations> skews(
53 skews.appendSkew(0, 2); 56 cc::TransformOperations::Create());
54 skews.appendSkew(0, 2); 57 skews->appendSkew(0, 2);
55 skews.appendSkew(0, 2); 58 skews->appendSkew(0, 2);
59 skews->appendSkew(0, 2);
56 60
57 WebTransformOperations translates2; 61 scoped_ptr<WebTransformOperations> translates2(
58 translates2.appendTranslate(0, 2, 0); 62 cc::TransformOperations::Create());
59 translates2.appendTranslate(0, 2, 0); 63 translates2->appendTranslate(0, 2, 0);
60 translates2.appendTranslate(0, 2, 0); 64 translates2->appendTranslate(0, 2, 0);
65 translates2->appendTranslate(0, 2, 0);
61 66
62 WebTransformOperations translates3 = translates2; 67 scoped_ptr<WebTransformOperations> translates3(
68 cc::TransformOperations::Create(*translates2));
63 69
64 EXPECT_FALSE(translates.matchesTypes(skews)); 70 EXPECT_FALSE(translates->matchesTypes(*skews));
65 EXPECT_TRUE(translates.matchesTypes(translates2)); 71 EXPECT_TRUE(translates->matchesTypes(*translates2));
66 EXPECT_TRUE(translates.matchesTypes(translates3)); 72 EXPECT_TRUE(translates->matchesTypes(*translates3));
67 } 73 }
68 74
69 TEST(WebTransformOperationTest, matchTypesDifferentLength) 75 TEST(WebTransformOperationTest, matchTypesDifferentLength)
70 { 76 {
71 WebTransformOperations translates; 77 scoped_ptr<WebTransformOperations> translates(
72 translates.appendTranslate(1, 0, 0); 78 cc::TransformOperations::Create());
73 translates.appendTranslate(1, 0, 0); 79 translates->appendTranslate(1, 0, 0);
74 translates.appendTranslate(1, 0, 0); 80 translates->appendTranslate(1, 0, 0);
81 translates->appendTranslate(1, 0, 0);
75 82
76 WebTransformOperations skews; 83 scoped_ptr<WebTransformOperations> skews(
77 skews.appendSkew(2, 0); 84 cc::TransformOperations::Create());
78 skews.appendSkew(2, 0); 85 skews->appendSkew(2, 0);
86 skews->appendSkew(2, 0);
79 87
80 WebTransformOperations translates2; 88 scoped_ptr<WebTransformOperations> translates2(
81 translates2.appendTranslate(0, 2, 0); 89 cc::TransformOperations::Create());
82 translates2.appendTranslate(0, 2, 0); 90 translates2->appendTranslate(0, 2, 0);
91 translates2->appendTranslate(0, 2, 0);
83 92
84 EXPECT_FALSE(translates.matchesTypes(skews)); 93 EXPECT_FALSE(translates->matchesTypes(*skews));
85 EXPECT_FALSE(translates.matchesTypes(translates2)); 94 EXPECT_FALSE(translates->matchesTypes(*translates2));
86 } 95 }
87 96
88 void getIdentityOperations(ScopedVector<WebTransformOperations>* operations) 97 void getIdentityOperations(ScopedVector<WebTransformOperations>* operations)
89 { 98 {
90 WebTransformOperations* toAdd = new WebTransformOperations(); 99 WebTransformOperations* toAdd = cc::TransformOperations::Create();
91 operations->push_back(toAdd); 100 operations->push_back(toAdd);
92 101
93 toAdd = new WebTransformOperations(); 102 toAdd = cc::TransformOperations::Create();
94 toAdd->appendTranslate(0, 0, 0); 103 toAdd->appendTranslate(0, 0, 0);
95 operations->push_back(toAdd); 104 operations->push_back(toAdd);
96 105
97 toAdd = new WebTransformOperations(); 106 toAdd = cc::TransformOperations::Create();
98 toAdd->appendTranslate(0, 0, 0); 107 toAdd->appendTranslate(0, 0, 0);
99 toAdd->appendTranslate(0, 0, 0); 108 toAdd->appendTranslate(0, 0, 0);
100 operations->push_back(toAdd); 109 operations->push_back(toAdd);
101 110
102 toAdd = new WebTransformOperations(); 111 toAdd = cc::TransformOperations::Create();
103 toAdd->appendScale(1, 1, 1); 112 toAdd->appendScale(1, 1, 1);
104 operations->push_back(toAdd); 113 operations->push_back(toAdd);
105 114
106 toAdd = new WebTransformOperations(); 115 toAdd = cc::TransformOperations::Create();
107 toAdd->appendScale(1, 1, 1); 116 toAdd->appendScale(1, 1, 1);
108 toAdd->appendScale(1, 1, 1); 117 toAdd->appendScale(1, 1, 1);
109 operations->push_back(toAdd); 118 operations->push_back(toAdd);
110 119
111 toAdd = new WebTransformOperations(); 120 toAdd = cc::TransformOperations::Create();
112 toAdd->appendSkew(0, 0); 121 toAdd->appendSkew(0, 0);
113 operations->push_back(toAdd); 122 operations->push_back(toAdd);
114 123
115 toAdd = new WebTransformOperations(); 124 toAdd = cc::TransformOperations::Create();
116 toAdd->appendSkew(0, 0); 125 toAdd->appendSkew(0, 0);
117 toAdd->appendSkew(0, 0); 126 toAdd->appendSkew(0, 0);
118 operations->push_back(toAdd); 127 operations->push_back(toAdd);
119 128
120 toAdd = new WebTransformOperations(); 129 toAdd = cc::TransformOperations::Create();
121 toAdd->appendRotate(0, 0, 1, 0); 130 toAdd->appendRotate(0, 0, 1, 0);
122 operations->push_back(toAdd); 131 operations->push_back(toAdd);
123 132
124 toAdd = new WebTransformOperations(); 133 toAdd = cc::TransformOperations::Create();
125 toAdd->appendRotate(0, 0, 1, 0); 134 toAdd->appendRotate(0, 0, 1, 0);
126 toAdd->appendRotate(0, 0, 1, 0); 135 toAdd->appendRotate(0, 0, 1, 0);
127 operations->push_back(toAdd); 136 operations->push_back(toAdd);
128 137
129 toAdd = new WebTransformOperations(); 138 toAdd = cc::TransformOperations::Create();
130 toAdd->appendMatrix(WebTransformationMatrix()); 139 toAdd->appendMatrix(WebTransformationMatrix());
131 operations->push_back(toAdd); 140 operations->push_back(toAdd);
132 141
133 toAdd = new WebTransformOperations(); 142 toAdd = cc::TransformOperations::Create();
134 toAdd->appendMatrix(WebTransformationMatrix()); 143 toAdd->appendMatrix(WebTransformationMatrix());
135 toAdd->appendMatrix(WebTransformationMatrix()); 144 toAdd->appendMatrix(WebTransformationMatrix());
136 operations->push_back(toAdd); 145 operations->push_back(toAdd);
137 } 146 }
138 147
139 TEST(WebTransformOperationTest, identityAlwaysMatches) 148 TEST(WebTransformOperationTest, identityAlwaysMatches)
140 { 149 {
141 ScopedVector<WebTransformOperations> operations; 150 ScopedVector<WebTransformOperations> operations;
142 getIdentityOperations(&operations); 151 getIdentityOperations(&operations);
143 152
144 for (size_t i = 0; i < operations.size(); ++i) { 153 for (size_t i = 0; i < operations.size(); ++i) {
145 for (size_t j = 0; j < operations.size(); ++j) 154 for (size_t j = 0; j < operations.size(); ++j)
146 EXPECT_TRUE(operations[i]->matchesTypes(*operations[j])); 155 EXPECT_TRUE(operations[i]->matchesTypes(*operations[j]));
147 } 156 }
148 } 157 }
149 158
150 TEST(WebTransformOperationTest, applyTranslate) 159 TEST(WebTransformOperationTest, applyTranslate)
151 { 160 {
152 double x = 1; 161 double x = 1;
153 double y = 2; 162 double y = 2;
154 double z = 3; 163 double z = 3;
155 WebTransformOperations operations; 164 scoped_ptr<WebTransformOperations> operations(
156 operations.appendTranslate(x, y, z); 165 cc::TransformOperations::Create());
166 operations->appendTranslate(x, y, z);
157 WebTransformationMatrix expected; 167 WebTransformationMatrix expected;
158 expected.translate3d(x, y, z); 168 expected.translate3d(x, y, z);
159 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.apply()); 169 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations->apply());
160 } 170 }
161 171
162 TEST(WebTransformOperationTest, applyRotate) 172 TEST(WebTransformOperationTest, applyRotate)
163 { 173 {
164 double x = 1; 174 double x = 1;
165 double y = 2; 175 double y = 2;
166 double z = 3; 176 double z = 3;
167 double degrees = 80; 177 double degrees = 80;
168 WebTransformOperations operations; 178 scoped_ptr<WebTransformOperations> operations(
169 operations.appendRotate(x, y, z, degrees); 179 cc::TransformOperations::Create());
180 operations->appendRotate(x, y, z, degrees);
170 WebTransformationMatrix expected; 181 WebTransformationMatrix expected;
171 expected.rotate3d(x, y, z, degrees); 182 expected.rotate3d(x, y, z, degrees);
172 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.apply()); 183 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations->apply());
173 } 184 }
174 185
175 TEST(WebTransformOperationTest, applyScale) 186 TEST(WebTransformOperationTest, applyScale)
176 { 187 {
177 double x = 1; 188 double x = 1;
178 double y = 2; 189 double y = 2;
179 double z = 3; 190 double z = 3;
180 WebTransformOperations operations; 191 scoped_ptr<WebTransformOperations> operations(
181 operations.appendScale(x, y, z); 192 cc::TransformOperations::Create());
193 operations->appendScale(x, y, z);
182 WebTransformationMatrix expected; 194 WebTransformationMatrix expected;
183 expected.scale3d(x, y, z); 195 expected.scale3d(x, y, z);
184 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.apply()); 196 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations->apply());
185 } 197 }
186 198
187 TEST(WebTransformOperationTest, applySkew) 199 TEST(WebTransformOperationTest, applySkew)
188 { 200 {
189 double x = 1; 201 double x = 1;
190 double y = 2; 202 double y = 2;
191 WebTransformOperations operations; 203 scoped_ptr<WebTransformOperations> operations(
192 operations.appendSkew(x, y); 204 cc::TransformOperations::Create());
205 operations->appendSkew(x, y);
193 WebTransformationMatrix expected; 206 WebTransformationMatrix expected;
194 expected.skewX(x); 207 expected.skewX(x);
195 expected.skewY(y); 208 expected.skewY(y);
196 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.apply()); 209 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations->apply());
197 } 210 }
198 211
199 TEST(WebTransformOperationTest, applyPerspective) 212 TEST(WebTransformOperationTest, applyPerspective)
200 { 213 {
201 double depth = 800; 214 double depth = 800;
202 WebTransformOperations operations; 215 scoped_ptr<WebTransformOperations> operations(
203 operations.appendPerspective(depth); 216 cc::TransformOperations::Create());
217 operations->appendPerspective(depth);
204 WebTransformationMatrix expected; 218 WebTransformationMatrix expected;
205 expected.applyPerspective(depth); 219 expected.applyPerspective(depth);
206 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.apply()); 220 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations->apply());
207 } 221 }
208 222
209 TEST(WebTransformOperationTest, applyMatrix) 223 TEST(WebTransformOperationTest, applyMatrix)
210 { 224 {
211 double dx = 1; 225 double dx = 1;
212 double dy = 2; 226 double dy = 2;
213 double dz = 3; 227 double dz = 3;
214 WebTransformationMatrix expectedMatrix; 228 WebTransformationMatrix expectedMatrix;
215 expectedMatrix.translate3d(dx, dy, dz); 229 expectedMatrix.translate3d(dx, dy, dz);
216 WebTransformOperations matrixTransform; 230 scoped_ptr<WebTransformOperations> matrixTransform(
217 matrixTransform.appendMatrix(expectedMatrix); 231 cc::TransformOperations::Create());
218 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedMatrix, matrixTransform.apply()); 232 matrixTransform->appendMatrix(expectedMatrix);
233 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedMatrix, matrixTransform->apply());
219 } 234 }
220 235
221 TEST(WebTransformOperationTest, applyOrder) 236 TEST(WebTransformOperationTest, applyOrder)
222 { 237 {
223 double sx = 2; 238 double sx = 2;
224 double sy = 4; 239 double sy = 4;
225 double sz = 8; 240 double sz = 8;
226 241
227 double dx = 1; 242 double dx = 1;
228 double dy = 2; 243 double dy = 2;
229 double dz = 3; 244 double dz = 3;
230 245
231 WebTransformOperations operations; 246 scoped_ptr<WebTransformOperations> operations(
232 operations.appendScale(sx, sy, sz); 247 cc::TransformOperations::Create());
233 operations.appendTranslate(dx, dy, dz); 248 operations->appendScale(sx, sy, sz);
249 operations->appendTranslate(dx, dy, dz);
234 250
235 WebTransformationMatrix expectedScaleMatrix; 251 WebTransformationMatrix expectedScaleMatrix;
236 expectedScaleMatrix.scale3d(sx, sy, sz); 252 expectedScaleMatrix.scale3d(sx, sy, sz);
237 253
238 WebTransformationMatrix expectedTranslateMatrix; 254 WebTransformationMatrix expectedTranslateMatrix;
239 expectedTranslateMatrix.translate3d(dx, dy, dz); 255 expectedTranslateMatrix.translate3d(dx, dy, dz);
240 256
241 WebTransformationMatrix expectedCombinedMatrix = expectedScaleMatrix; 257 WebTransformationMatrix expectedCombinedMatrix = expectedScaleMatrix;
242 expectedCombinedMatrix.multiply(expectedTranslateMatrix); 258 expectedCombinedMatrix.multiply(expectedTranslateMatrix);
243 259
244 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedCombinedMatrix, operations.apply()); 260 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedCombinedMatrix, operations->apply()) ;
245 } 261 }
246 262
247 TEST(WebTransformOperationTest, blendOrder) 263 TEST(WebTransformOperationTest, blendOrder)
248 { 264 {
249 double sx1 = 2; 265 double sx1 = 2;
250 double sy1 = 4; 266 double sy1 = 4;
251 double sz1 = 8; 267 double sz1 = 8;
252 268
253 double dx1 = 1; 269 double dx1 = 1;
254 double dy1 = 2; 270 double dy1 = 2;
255 double dz1 = 3; 271 double dz1 = 3;
256 272
257 double sx2 = 4; 273 double sx2 = 4;
258 double sy2 = 8; 274 double sy2 = 8;
259 double sz2 = 16; 275 double sz2 = 16;
260 276
261 double dx2 = 10; 277 double dx2 = 10;
262 double dy2 = 20; 278 double dy2 = 20;
263 double dz2 = 30; 279 double dz2 = 30;
264 280
265 WebTransformOperations operationsFrom; 281 scoped_ptr<WebTransformOperations> operationsFrom(
266 operationsFrom.appendScale(sx1, sy1, sz1); 282 cc::TransformOperations::Create());
267 operationsFrom.appendTranslate(dx1, dy1, dz1); 283 operationsFrom->appendScale(sx1, sy1, sz1);
284 operationsFrom->appendTranslate(dx1, dy1, dz1);
268 285
269 WebTransformOperations operationsTo; 286 scoped_ptr<WebTransformOperations> operationsTo(
270 operationsTo.appendScale(sx2, sy2, sz2); 287 cc::TransformOperations::Create());
271 operationsTo.appendTranslate(dx2, dy2, dz2); 288 operationsTo->appendScale(sx2, sy2, sz2);
289 operationsTo->appendTranslate(dx2, dy2, dz2);
272 290
273 WebTransformationMatrix scaleFrom; 291 WebTransformationMatrix scaleFrom;
274 scaleFrom.scale3d(sx1, sy1, sz1); 292 scaleFrom.scale3d(sx1, sy1, sz1);
275 WebTransformationMatrix translateFrom; 293 WebTransformationMatrix translateFrom;
276 translateFrom.translate3d(dx1, dy1, dz1); 294 translateFrom.translate3d(dx1, dy1, dz1);
277 295
278 WebTransformationMatrix scaleTo; 296 WebTransformationMatrix scaleTo;
279 scaleTo.scale3d(sx2, sy2, sz2); 297 scaleTo.scale3d(sx2, sy2, sz2);
280 WebTransformationMatrix translateTo; 298 WebTransformationMatrix translateTo;
281 translateTo.translate3d(dx2, dy2, dz2); 299 translateTo.translate3d(dx2, dy2, dz2);
282 300
283 double progress = 0.25; 301 double progress = 0.25;
284 302
285 WebTransformationMatrix blendedScale = scaleTo; 303 WebTransformationMatrix blendedScale = scaleTo;
286 blendedScale.blend(scaleFrom, progress); 304 blendedScale.blend(scaleFrom, progress);
287 305
288 WebTransformationMatrix blendedTranslate = translateTo; 306 WebTransformationMatrix blendedTranslate = translateTo;
289 blendedTranslate.blend(translateFrom, progress); 307 blendedTranslate.blend(translateFrom, progress);
290 308
291 WebTransformationMatrix expected = blendedScale; 309 WebTransformationMatrix expected = blendedScale;
292 expected.multiply(blendedTranslate); 310 expected.multiply(blendedTranslate);
293 311
294 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operationsTo.blend(operationsFrom, progress)); 312 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operationsTo->blend(*operationsFro m, progress));
295 } 313 }
296 314
297 static void checkProgress(double progress, 315 static void checkProgress(double progress,
298 const WebTransformationMatrix& fromMatrix, 316 const WebTransformationMatrix& fromMatrix,
299 const WebTransformationMatrix& toMatrix, 317 const WebTransformationMatrix& toMatrix,
300 const WebTransformOperations& fromTransform, 318 const WebTransformOperations& fromTransform,
301 const WebTransformOperations& toTransform) 319 const WebTransformOperations& toTransform)
302 { 320 {
303 WebTransformationMatrix expectedMatrix = toMatrix; 321 WebTransformationMatrix expectedMatrix = toMatrix;
304 expectedMatrix.blend(fromMatrix, progress); 322 expectedMatrix.blend(fromMatrix, progress);
305 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedMatrix, toTransform.blend(fromTransf orm, progress)); 323 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedMatrix, toTransform.blend(fromTransf orm, progress));
306 } 324 }
307 325
308 TEST(WebTransformOperationTest, blendProgress) 326 TEST(WebTransformOperationTest, blendProgress)
309 { 327 {
310 double sx = 2; 328 double sx = 2;
311 double sy = 4; 329 double sy = 4;
312 double sz = 8; 330 double sz = 8;
313 WebTransformOperations operationsFrom; 331 scoped_ptr<WebTransformOperations> operationsFrom(
314 operationsFrom.appendScale(sx, sy, sz); 332 cc::TransformOperations::Create());
333 operationsFrom->appendScale(sx, sy, sz);
315 334
316 WebTransformationMatrix matrixFrom; 335 WebTransformationMatrix matrixFrom;
317 matrixFrom.scale3d(sx, sy, sz); 336 matrixFrom.scale3d(sx, sy, sz);
318 337
319 sx = 4; 338 sx = 4;
320 sy = 8; 339 sy = 8;
321 sz = 16; 340 sz = 16;
322 WebTransformOperations operationsTo; 341 scoped_ptr<WebTransformOperations> operationsTo(
323 operationsTo.appendScale(sx, sy, sz); 342 cc::TransformOperations::Create());
343 operationsTo->appendScale(sx, sy, sz);
324 344
325 WebTransformationMatrix matrixTo; 345 WebTransformationMatrix matrixTo;
326 matrixTo.scale3d(sx, sy, sz); 346 matrixTo.scale3d(sx, sy, sz);
327 347
328 checkProgress(-1, matrixFrom, matrixTo, operationsFrom, operationsTo); 348 checkProgress(-1, matrixFrom, matrixTo, *operationsFrom, *operationsTo);
329 checkProgress(0, matrixFrom, matrixTo, operationsFrom, operationsTo); 349 checkProgress(0, matrixFrom, matrixTo, *operationsFrom, *operationsTo);
330 checkProgress(0.25, matrixFrom, matrixTo, operationsFrom, operationsTo); 350 checkProgress(0.25, matrixFrom, matrixTo, *operationsFrom, *operationsTo);
331 checkProgress(0.5, matrixFrom, matrixTo, operationsFrom, operationsTo); 351 checkProgress(0.5, matrixFrom, matrixTo, *operationsFrom, *operationsTo);
332 checkProgress(1, matrixFrom, matrixTo, operationsFrom, operationsTo); 352 checkProgress(1, matrixFrom, matrixTo, *operationsFrom, *operationsTo);
333 checkProgress(2, matrixFrom, matrixTo, operationsFrom, operationsTo); 353 checkProgress(2, matrixFrom, matrixTo, *operationsFrom, *operationsTo);
334 } 354 }
335 355
336 TEST(WebTransformOperationTest, blendWhenTypesDoNotMatch) 356 TEST(WebTransformOperationTest, blendWhenTypesDoNotMatch)
337 { 357 {
338 double sx1 = 2; 358 double sx1 = 2;
339 double sy1 = 4; 359 double sy1 = 4;
340 double sz1 = 8; 360 double sz1 = 8;
341 361
342 double dx1 = 1; 362 double dx1 = 1;
343 double dy1 = 2; 363 double dy1 = 2;
344 double dz1 = 3; 364 double dz1 = 3;
345 365
346 double sx2 = 4; 366 double sx2 = 4;
347 double sy2 = 8; 367 double sy2 = 8;
348 double sz2 = 16; 368 double sz2 = 16;
349 369
350 double dx2 = 10; 370 double dx2 = 10;
351 double dy2 = 20; 371 double dy2 = 20;
352 double dz2 = 30; 372 double dz2 = 30;
353 373
354 WebTransformOperations operationsFrom; 374 scoped_ptr<WebTransformOperations> operationsFrom(
355 operationsFrom.appendScale(sx1, sy1, sz1); 375 cc::TransformOperations::Create());
356 operationsFrom.appendTranslate(dx1, dy1, dz1); 376 operationsFrom->appendScale(sx1, sy1, sz1);
377 operationsFrom->appendTranslate(dx1, dy1, dz1);
357 378
358 WebTransformOperations operationsTo; 379 scoped_ptr<WebTransformOperations> operationsTo(
359 operationsTo.appendTranslate(dx2, dy2, dz2); 380 cc::TransformOperations::Create());
360 operationsTo.appendScale(sx2, sy2, sz2); 381 operationsTo->appendTranslate(dx2, dy2, dz2);
382 operationsTo->appendScale(sx2, sy2, sz2);
361 383
362 WebTransformationMatrix from; 384 WebTransformationMatrix from;
363 from.scale3d(sx1, sy1, sz1); 385 from.scale3d(sx1, sy1, sz1);
364 from.translate3d(dx1, dy1, dz1); 386 from.translate3d(dx1, dy1, dz1);
365 387
366 WebTransformationMatrix to; 388 WebTransformationMatrix to;
367 to.translate3d(dx2, dy2, dz2); 389 to.translate3d(dx2, dy2, dz2);
368 to.scale3d(sx2, sy2, sz2); 390 to.scale3d(sx2, sy2, sz2);
369 391
370 double progress = 0.25; 392 double progress = 0.25;
371 393
372 WebTransformationMatrix expected = to; 394 WebTransformationMatrix expected = to;
373 expected.blend(from, progress); 395 expected.blend(from, progress);
374 396
375 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operationsTo.blend(operationsFrom, progress)); 397 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operationsTo->blend(*operationsFro m, progress));
376 } 398 }
377 399
378 TEST(WebTransformOperationTest, largeRotationsWithSameAxis) 400 TEST(WebTransformOperationTest, largeRotationsWithSameAxis)
379 { 401 {
380 WebTransformOperations operationsFrom; 402 scoped_ptr<WebTransformOperations> operationsFrom(
381 operationsFrom.appendRotate(0, 0, 1, 0); 403 cc::TransformOperations::Create());
404 operationsFrom->appendRotate(0, 0, 1, 0);
382 405
383 WebTransformOperations operationsTo; 406 scoped_ptr<WebTransformOperations> operationsTo(
384 operationsTo.appendRotate(0, 0, 2, 360); 407 cc::TransformOperations::Create());
408 operationsTo->appendRotate(0, 0, 2, 360);
385 409
386 double progress = 0.5; 410 double progress = 0.5;
387 411
388 WebTransformationMatrix expected; 412 WebTransformationMatrix expected;
389 expected.rotate3d(0, 0, 1, 180); 413 expected.rotate3d(0, 0, 1, 180);
390 414
391 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operationsTo.blend(operationsFrom, progress)); 415 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operationsTo->blend(*operationsFro m, progress));
392 } 416 }
393 417
394 TEST(WebTransformOperationTest, largeRotationsWithSameAxisInDifferentDirection) 418 TEST(WebTransformOperationTest, largeRotationsWithSameAxisInDifferentDirection)
395 { 419 {
396 WebTransformOperations operationsFrom; 420 scoped_ptr<WebTransformOperations> operationsFrom(
397 operationsFrom.appendRotate(0, 0, 1, 180); 421 cc::TransformOperations::Create());
422 operationsFrom->appendRotate(0, 0, 1, 180);
398 423
399 WebTransformOperations operationsTo; 424 scoped_ptr<WebTransformOperations> operationsTo(
400 operationsTo.appendRotate(0, 0, -1, 180); 425 cc::TransformOperations::Create());
426 operationsTo->appendRotate(0, 0, -1, 180);
401 427
402 double progress = 0.5; 428 double progress = 0.5;
403 429
404 WebTransformationMatrix expected; 430 WebTransformationMatrix expected;
405 431
406 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operationsTo.blend(operationsFrom, progress)); 432 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operationsTo->blend(*operationsFro m, progress));
407 } 433 }
408 434
409 TEST(WebTransformOperationTest, largeRotationsWithDifferentAxes) 435 TEST(WebTransformOperationTest, largeRotationsWithDifferentAxes)
410 { 436 {
411 WebTransformOperations operationsFrom; 437 scoped_ptr<WebTransformOperations> operationsFrom(
412 operationsFrom.appendRotate(0, 0, 1, 180); 438 cc::TransformOperations::Create());
439 operationsFrom->appendRotate(0, 0, 1, 180);
413 440
414 WebTransformOperations operationsTo; 441 scoped_ptr<WebTransformOperations> operationsTo(
415 operationsTo.appendRotate(0, 1, 0, 180); 442 cc::TransformOperations::Create());
443 operationsTo->appendRotate(0, 1, 0, 180);
416 444
417 double progress = 0.5; 445 double progress = 0.5;
418 WebTransformationMatrix matrixFrom; 446 WebTransformationMatrix matrixFrom;
419 matrixFrom.rotate3d(0, 0, 1, 180); 447 matrixFrom.rotate3d(0, 0, 1, 180);
420 448
421 WebTransformationMatrix matrixTo; 449 WebTransformationMatrix matrixTo;
422 matrixTo.rotate3d(0, 1, 0, 180); 450 matrixTo.rotate3d(0, 1, 0, 180);
423 451
424 WebTransformationMatrix expected = matrixTo; 452 WebTransformationMatrix expected = matrixTo;
425 expected.blend(matrixFrom, progress); 453 expected.blend(matrixFrom, progress);
426 454
427 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operationsTo.blend(operationsFrom, progress)); 455 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operationsTo->blend(*operationsFro m, progress));
428 } 456 }
429 457
430 TEST(WebTransformOperationTest, blendRotationFromIdentity) 458 TEST(WebTransformOperationTest, blendRotationFromIdentity)
431 { 459 {
432 ScopedVector<WebTransformOperations> identityOperations; 460 ScopedVector<WebTransformOperations> identityOperations;
433 getIdentityOperations(&identityOperations); 461 getIdentityOperations(&identityOperations);
434 462
435 for (size_t i = 0; i < identityOperations.size(); ++i) { 463 for (size_t i = 0; i < identityOperations.size(); ++i) {
436 WebTransformOperations operations; 464 scoped_ptr<WebTransformOperations> operations(
437 operations.appendRotate(0, 0, 1, 360); 465 cc::TransformOperations::Create());
466 operations->appendRotate(0, 0, 1, 360);
438 467
439 double progress = 0.5; 468 double progress = 0.5;
440 469
441 WebTransformationMatrix expected; 470 WebTransformationMatrix expected;
442 expected.rotate3d(0, 0, 1, 180); 471 expected.rotate3d(0, 0, 1, 180);
443 472
444 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.blend(*identityOper ations[i], progress)); 473 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations->blend(*identityOpe rations[i], progress));
445 } 474 }
446 } 475 }
447 476
448 TEST(WebTransformOperationTest, blendTranslationFromIdentity) 477 TEST(WebTransformOperationTest, blendTranslationFromIdentity)
449 { 478 {
450 ScopedVector<WebTransformOperations> identityOperations; 479 ScopedVector<WebTransformOperations> identityOperations;
451 getIdentityOperations(&identityOperations); 480 getIdentityOperations(&identityOperations);
452 481
453 for (size_t i = 0; i < identityOperations.size(); ++i) { 482 for (size_t i = 0; i < identityOperations.size(); ++i) {
454 WebTransformOperations operations; 483 scoped_ptr<WebTransformOperations> operations(
455 operations.appendTranslate(2, 2, 2); 484 cc::TransformOperations::Create());
485 operations->appendTranslate(2, 2, 2);
456 486
457 double progress = 0.5; 487 double progress = 0.5;
458 488
459 WebTransformationMatrix expected; 489 WebTransformationMatrix expected;
460 expected.translate3d(1, 1, 1); 490 expected.translate3d(1, 1, 1);
461 491
462 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.blend(*identityOper ations[i], progress)); 492 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations->blend(*identityOpe rations[i], progress));
463 } 493 }
464 } 494 }
465 495
466 TEST(WebTransformOperationTest, blendScaleFromIdentity) 496 TEST(WebTransformOperationTest, blendScaleFromIdentity)
467 { 497 {
468 ScopedVector<WebTransformOperations> identityOperations; 498 ScopedVector<WebTransformOperations> identityOperations;
469 getIdentityOperations(&identityOperations); 499 getIdentityOperations(&identityOperations);
470 500
471 for (size_t i = 0; i < identityOperations.size(); ++i) { 501 for (size_t i = 0; i < identityOperations.size(); ++i) {
472 WebTransformOperations operations; 502 scoped_ptr<WebTransformOperations> operations(
473 operations.appendScale(3, 3, 3); 503 cc::TransformOperations::Create());
504 operations->appendScale(3, 3, 3);
474 505
475 double progress = 0.5; 506 double progress = 0.5;
476 507
477 WebTransformationMatrix expected; 508 WebTransformationMatrix expected;
478 expected.scale3d(2, 2, 2); 509 expected.scale3d(2, 2, 2);
479 510
480 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.blend(*identityOper ations[i], progress)); 511 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations->blend(*identityOpe rations[i], progress));
481 } 512 }
482 } 513 }
483 514
484 TEST(WebTransformOperationTest, blendSkewFromIdentity) 515 TEST(WebTransformOperationTest, blendSkewFromIdentity)
485 { 516 {
486 ScopedVector<WebTransformOperations> identityOperations; 517 ScopedVector<WebTransformOperations> identityOperations;
487 getIdentityOperations(&identityOperations); 518 getIdentityOperations(&identityOperations);
488 519
489 for (size_t i = 0; i < identityOperations.size(); ++i) { 520 for (size_t i = 0; i < identityOperations.size(); ++i) {
490 WebTransformOperations operations; 521 scoped_ptr<WebTransformOperations> operations(
491 operations.appendSkew(2, 2); 522 cc::TransformOperations::Create());
523 operations->appendSkew(2, 2);
492 524
493 double progress = 0.5; 525 double progress = 0.5;
494 526
495 WebTransformationMatrix expected; 527 WebTransformationMatrix expected;
496 expected.skewX(1); 528 expected.skewX(1);
497 expected.skewY(1); 529 expected.skewY(1);
498 530
499 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.blend(*identityOper ations[i], progress)); 531 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations->blend(*identityOpe rations[i], progress));
500 } 532 }
501 } 533 }
502 534
503 TEST(WebTransformOperationTest, blendPerspectiveFromIdentity) 535 TEST(WebTransformOperationTest, blendPerspectiveFromIdentity)
504 { 536 {
505 ScopedVector<WebTransformOperations> identityOperations; 537 ScopedVector<WebTransformOperations> identityOperations;
506 getIdentityOperations(&identityOperations); 538 getIdentityOperations(&identityOperations);
507 539
508 for (size_t i = 0; i < identityOperations.size(); ++i) { 540 for (size_t i = 0; i < identityOperations.size(); ++i) {
509 WebTransformOperations operations; 541 scoped_ptr<WebTransformOperations> operations(
510 operations.appendPerspective(1000); 542 cc::TransformOperations::Create());
543 operations->appendPerspective(1000);
511 544
512 double progress = 0.5; 545 double progress = 0.5;
513 546
514 WebTransformationMatrix expected; 547 WebTransformationMatrix expected;
515 expected.applyPerspective(500 + 0.5 * std::numeric_limits<double>::max() ); 548 expected.applyPerspective(500 + 0.5 * std::numeric_limits<double>::max() );
516 549
517 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations.blend(*identityOper ations[i], progress)); 550 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, operations->blend(*identityOpe rations[i], progress));
518 } 551 }
519 } 552 }
520 553
521 TEST(WebTransformOperationTest, blendRotationToIdentity) 554 TEST(WebTransformOperationTest, blendRotationToIdentity)
522 { 555 {
523 ScopedVector<WebTransformOperations> identityOperations; 556 ScopedVector<WebTransformOperations> identityOperations;
524 getIdentityOperations(&identityOperations); 557 getIdentityOperations(&identityOperations);
525 558
526 for (size_t i = 0; i < identityOperations.size(); ++i) { 559 for (size_t i = 0; i < identityOperations.size(); ++i) {
527 WebTransformOperations operations; 560 scoped_ptr<WebTransformOperations> operations(
528 operations.appendRotate(0, 0, 1, 360); 561 cc::TransformOperations::Create());
562 operations->appendRotate(0, 0, 1, 360);
529 563
530 double progress = 0.5; 564 double progress = 0.5;
531 565
532 WebTransformationMatrix expected; 566 WebTransformationMatrix expected;
533 expected.rotate3d(0, 0, 1, 180); 567 expected.rotate3d(0, 0, 1, 180);
534 568
535 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, identityOperations[i]->blend(o perations, progress)); 569 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, identityOperations[i]->blend(* operations, progress));
536 } 570 }
537 } 571 }
538 572
539 TEST(WebTransformOperationTest, blendTranslationToIdentity) 573 TEST(WebTransformOperationTest, blendTranslationToIdentity)
540 { 574 {
541 ScopedVector<WebTransformOperations> identityOperations; 575 ScopedVector<WebTransformOperations> identityOperations;
542 getIdentityOperations(&identityOperations); 576 getIdentityOperations(&identityOperations);
543 577
544 for (size_t i = 0; i < identityOperations.size(); ++i) { 578 for (size_t i = 0; i < identityOperations.size(); ++i) {
545 WebTransformOperations operations; 579 scoped_ptr<WebTransformOperations> operations(
546 operations.appendTranslate(2, 2, 2); 580 cc::TransformOperations::Create());
581 operations->appendTranslate(2, 2, 2);
547 582
548 double progress = 0.5; 583 double progress = 0.5;
549 584
550 WebTransformationMatrix expected; 585 WebTransformationMatrix expected;
551 expected.translate3d(1, 1, 1); 586 expected.translate3d(1, 1, 1);
552 587
553 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, identityOperations[i]->blend(o perations, progress)); 588 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, identityOperations[i]->blend(* operations, progress));
554 } 589 }
555 } 590 }
556 591
557 TEST(WebTransformOperationTest, blendScaleToIdentity) 592 TEST(WebTransformOperationTest, blendScaleToIdentity)
558 { 593 {
559 ScopedVector<WebTransformOperations> identityOperations; 594 ScopedVector<WebTransformOperations> identityOperations;
560 getIdentityOperations(&identityOperations); 595 getIdentityOperations(&identityOperations);
561 596
562 for (size_t i = 0; i < identityOperations.size(); ++i) { 597 for (size_t i = 0; i < identityOperations.size(); ++i) {
563 WebTransformOperations operations; 598 scoped_ptr<WebTransformOperations> operations(
564 operations.appendScale(3, 3, 3); 599 cc::TransformOperations::Create());
600 operations->appendScale(3, 3, 3);
565 601
566 double progress = 0.5; 602 double progress = 0.5;
567 603
568 WebTransformationMatrix expected; 604 WebTransformationMatrix expected;
569 expected.scale3d(2, 2, 2); 605 expected.scale3d(2, 2, 2);
570 606
571 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, identityOperations[i]->blend(o perations, progress)); 607 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, identityOperations[i]->blend(* operations, progress));
572 } 608 }
573 } 609 }
574 610
575 TEST(WebTransformOperationTest, blendSkewToIdentity) 611 TEST(WebTransformOperationTest, blendSkewToIdentity)
576 { 612 {
577 ScopedVector<WebTransformOperations> identityOperations; 613 ScopedVector<WebTransformOperations> identityOperations;
578 getIdentityOperations(&identityOperations); 614 getIdentityOperations(&identityOperations);
579 615
580 for (size_t i = 0; i < identityOperations.size(); ++i) { 616 for (size_t i = 0; i < identityOperations.size(); ++i) {
581 WebTransformOperations operations; 617 scoped_ptr<WebTransformOperations> operations(
582 operations.appendSkew(2, 2); 618 cc::TransformOperations::Create());
619 operations->appendSkew(2, 2);
583 620
584 double progress = 0.5; 621 double progress = 0.5;
585 622
586 WebTransformationMatrix expected; 623 WebTransformationMatrix expected;
587 expected.skewX(1); 624 expected.skewX(1);
588 expected.skewY(1); 625 expected.skewY(1);
589 626
590 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, identityOperations[i]->blend(o perations, progress)); 627 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, identityOperations[i]->blend(* operations, progress));
591 } 628 }
592 } 629 }
593 630
594 TEST(WebTransformOperationTest, blendPerspectiveToIdentity) 631 TEST(WebTransformOperationTest, blendPerspectiveToIdentity)
595 { 632 {
596 ScopedVector<WebTransformOperations> identityOperations; 633 ScopedVector<WebTransformOperations> identityOperations;
597 getIdentityOperations(&identityOperations); 634 getIdentityOperations(&identityOperations);
598 635
599 for (size_t i = 0; i < identityOperations.size(); ++i) { 636 for (size_t i = 0; i < identityOperations.size(); ++i) {
600 WebTransformOperations operations; 637 scoped_ptr<WebTransformOperations> operations(
601 operations.appendPerspective(1000); 638 cc::TransformOperations::Create());
639 operations->appendPerspective(1000);
602 640
603 double progress = 0.5; 641 double progress = 0.5;
604 642
605 WebTransformationMatrix expected; 643 WebTransformationMatrix expected;
606 expected.applyPerspective(500 + 0.5 * std::numeric_limits<double>::max() ); 644 expected.applyPerspective(500 + 0.5 * std::numeric_limits<double>::max() );
607 645
608 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, identityOperations[i]->blend(o perations, progress)); 646 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, identityOperations[i]->blend(* operations, progress));
609 } 647 }
610 } 648 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698