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

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

Issue 11876016: Define cc::TransformOperations and webkit::WebTransformOperationsImpl (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Put TransformOperation into its own header Created 7 years, 11 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
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_ptr.h"
6 #include "cc/timing_function.h" 6 #include "cc/timing_function.h"
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformationMa trix.h" 8 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformationMa trix.h"
9 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformOperati ons.h" 9 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformOperati ons.h"
10 #include "webkit/compositor_bindings/web_transform_animation_curve_impl.h" 10 #include "webkit/compositor_bindings/web_transform_animation_curve_impl.h"
11 #include "webkit/compositor_bindings/web_transform_operations_impl.h"
11 12
12 using namespace WebKit; 13 using namespace WebKit;
13 14
15 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
16 using webkit::WebTransformOperationsImpl;
17 #endif
18
14 namespace { 19 namespace {
15 20
16 // Tests that a transform animation with one keyframe works as expected. 21 // Tests that a transform animation with one keyframe works as expected.
17 TEST(WebTransformAnimationCurveTest, OneTransformKeyframe) 22 TEST(WebTransformAnimationCurveTest, OneTransformKeyframe)
18 { 23 {
19 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 24 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
20 WebKit::WebTransformOperations operations; 25 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
26 scoped_ptr<WebTransformOperations> operations(new WebTransformOperationsImpl ());
27 operations->appendTranslate(2, 0, 0);
28 curve->add(WebTransformKeyframe(0, operations.release()), WebAnimationCurve: :TimingFunctionTypeLinear);
29 #else
30 WebTransformOperations operations;
21 operations.appendTranslate(2, 0, 0); 31 operations.appendTranslate(2, 0, 0);
22 curve->add(WebTransformKeyframe(0, operations), WebAnimationCurve::TimingFun ctionTypeLinear); 32 curve->add(WebTransformKeyframe(0, operations), WebAnimationCurve::TimingFun ctionTypeLinear);
33 #endif
23 34
24 EXPECT_FLOAT_EQ(2, curve->getValue(-1).m41()); 35 EXPECT_FLOAT_EQ(2, curve->getValue(-1).m41());
25 EXPECT_FLOAT_EQ(2, curve->getValue(0).m41()); 36 EXPECT_FLOAT_EQ(2, curve->getValue(0).m41());
26 EXPECT_FLOAT_EQ(2, curve->getValue(0.5).m41()); 37 EXPECT_FLOAT_EQ(2, curve->getValue(0.5).m41());
27 EXPECT_FLOAT_EQ(2, curve->getValue(1).m41()); 38 EXPECT_FLOAT_EQ(2, curve->getValue(1).m41());
28 EXPECT_FLOAT_EQ(2, curve->getValue(2).m41()); 39 EXPECT_FLOAT_EQ(2, curve->getValue(2).m41());
29 } 40 }
30 41
31 // Tests that a transform animation with two keyframes works as expected. 42 // Tests that a transform animation with two keyframes works as expected.
32 TEST(WebTransformAnimationCurveTest, TwoTransformKeyframe) 43 TEST(WebTransformAnimationCurveTest, TwoTransformKeyframe)
33 { 44 {
34 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 45 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
35 WebKit::WebTransformOperations operations1; 46 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
47 scoped_ptr<WebTransformOperations> operations1(new WebTransformOperationsImp l());
48 operations1->appendTranslate(2, 0, 0);
49 scoped_ptr<WebTransformOperations> operations2(new WebTransformOperationsImp l());
50 operations2->appendTranslate(4, 0, 0);
51 curve->add(WebTransformKeyframe(0, operations1.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
52 curve->add(WebTransformKeyframe(1, operations2.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
53 #else
54 WebTransformOperations operations1;
36 operations1.appendTranslate(2, 0, 0); 55 operations1.appendTranslate(2, 0, 0);
37 WebKit::WebTransformOperations operations2; 56 WebTransformOperations operations2;
38 operations2.appendTranslate(4, 0, 0); 57 operations2.appendTranslate(4, 0, 0);
39 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeLinear); 58 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeLinear);
40 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear); 59 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear);
60 #endif
41 EXPECT_FLOAT_EQ(2, curve->getValue(-1).m41()); 61 EXPECT_FLOAT_EQ(2, curve->getValue(-1).m41());
42 EXPECT_FLOAT_EQ(2, curve->getValue(0).m41()); 62 EXPECT_FLOAT_EQ(2, curve->getValue(0).m41());
43 EXPECT_FLOAT_EQ(3, curve->getValue(0.5).m41()); 63 EXPECT_FLOAT_EQ(3, curve->getValue(0.5).m41());
44 EXPECT_FLOAT_EQ(4, curve->getValue(1).m41()); 64 EXPECT_FLOAT_EQ(4, curve->getValue(1).m41());
45 EXPECT_FLOAT_EQ(4, curve->getValue(2).m41()); 65 EXPECT_FLOAT_EQ(4, curve->getValue(2).m41());
46 } 66 }
47 67
48 // Tests that a transform animation with three keyframes works as expected. 68 // Tests that a transform animation with three keyframes works as expected.
49 TEST(WebTransformAnimationCurveTest, ThreeTransformKeyframe) 69 TEST(WebTransformAnimationCurveTest, ThreeTransformKeyframe)
50 { 70 {
51 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 71 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
52 WebKit::WebTransformOperations operations1; 72 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
73 scoped_ptr<WebTransformOperations> operations1(new WebTransformOperationsImp l());
74 operations1->appendTranslate(2, 0, 0);
75 scoped_ptr<WebTransformOperations> operations2(new WebTransformOperationsImp l());
76 operations2->appendTranslate(4, 0, 0);
77 scoped_ptr<WebTransformOperations> operations3(new WebTransformOperationsImp l());
78 operations3->appendTranslate(8, 0, 0);
79 curve->add(WebTransformKeyframe(0, operations1.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
80 curve->add(WebTransformKeyframe(1, operations2.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
81 curve->add(WebTransformKeyframe(2, operations3.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
82 #else
83 WebTransformOperations operations1;
53 operations1.appendTranslate(2, 0, 0); 84 operations1.appendTranslate(2, 0, 0);
54 WebKit::WebTransformOperations operations2; 85 WebTransformOperations operations2;
55 operations2.appendTranslate(4, 0, 0); 86 operations2.appendTranslate(4, 0, 0);
56 WebKit::WebTransformOperations operations3; 87 WebTransformOperations operations3;
57 operations3.appendTranslate(8, 0, 0); 88 operations3.appendTranslate(8, 0, 0);
58 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeLinear); 89 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeLinear);
59 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear); 90 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear);
60 curve->add(WebTransformKeyframe(2, operations3), WebAnimationCurve::TimingFu nctionTypeLinear); 91 curve->add(WebTransformKeyframe(2, operations3), WebAnimationCurve::TimingFu nctionTypeLinear);
92 #endif
61 EXPECT_FLOAT_EQ(2, curve->getValue(-1).m41()); 93 EXPECT_FLOAT_EQ(2, curve->getValue(-1).m41());
62 EXPECT_FLOAT_EQ(2, curve->getValue(0).m41()); 94 EXPECT_FLOAT_EQ(2, curve->getValue(0).m41());
63 EXPECT_FLOAT_EQ(3, curve->getValue(0.5).m41()); 95 EXPECT_FLOAT_EQ(3, curve->getValue(0.5).m41());
64 EXPECT_FLOAT_EQ(4, curve->getValue(1).m41()); 96 EXPECT_FLOAT_EQ(4, curve->getValue(1).m41());
65 EXPECT_FLOAT_EQ(6, curve->getValue(1.5).m41()); 97 EXPECT_FLOAT_EQ(6, curve->getValue(1.5).m41());
66 EXPECT_FLOAT_EQ(8, curve->getValue(2).m41()); 98 EXPECT_FLOAT_EQ(8, curve->getValue(2).m41());
67 EXPECT_FLOAT_EQ(8, curve->getValue(3).m41()); 99 EXPECT_FLOAT_EQ(8, curve->getValue(3).m41());
68 } 100 }
69 101
70 // Tests that a transform animation with multiple keys at a given time works san ely. 102 // Tests that a transform animation with multiple keys at a given time works san ely.
71 TEST(WebTransformAnimationCurveTest, RepeatedTransformKeyTimes) 103 TEST(WebTransformAnimationCurveTest, RepeatedTransformKeyTimes)
72 { 104 {
73 // A step function. 105 // A step function.
74 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 106 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
75 WebKit::WebTransformOperations operations1; 107 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
108 scoped_ptr<WebTransformOperations> operations1(new WebTransformOperationsImp l());
109 operations1->appendTranslate(4, 0, 0);
110 scoped_ptr<WebTransformOperations> operations2(new WebTransformOperationsImp l());
111 operations2->appendTranslate(4, 0, 0);
112 scoped_ptr<WebTransformOperations> operations3(new WebTransformOperationsImp l());
113 operations3->appendTranslate(6, 0, 0);
114 scoped_ptr<WebTransformOperations> operations4(new WebTransformOperationsImp l());
115 operations4->appendTranslate(6, 0, 0);
116 curve->add(WebTransformKeyframe(0, operations1.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
117 curve->add(WebTransformKeyframe(1, operations2.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
118 curve->add(WebTransformKeyframe(1, operations3.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
119 curve->add(WebTransformKeyframe(2, operations4.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
120 #else
121 WebTransformOperations operations1;
76 operations1.appendTranslate(4, 0, 0); 122 operations1.appendTranslate(4, 0, 0);
77 WebKit::WebTransformOperations operations2; 123 WebTransformOperations operations2;
78 operations2.appendTranslate(4, 0, 0); 124 operations2.appendTranslate(4, 0, 0);
79 WebKit::WebTransformOperations operations3; 125 WebTransformOperations operations3;
80 operations3.appendTranslate(6, 0, 0); 126 operations3.appendTranslate(6, 0, 0);
81 WebKit::WebTransformOperations operations4; 127 WebTransformOperations operations4;
82 operations4.appendTranslate(6, 0, 0); 128 operations4.appendTranslate(6, 0, 0);
83 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeLinear); 129 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeLinear);
84 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear); 130 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear);
85 curve->add(WebTransformKeyframe(1, operations3), WebAnimationCurve::TimingFu nctionTypeLinear); 131 curve->add(WebTransformKeyframe(1, operations3), WebAnimationCurve::TimingFu nctionTypeLinear);
86 curve->add(WebTransformKeyframe(2, operations4), WebAnimationCurve::TimingFu nctionTypeLinear); 132 curve->add(WebTransformKeyframe(2, operations4), WebAnimationCurve::TimingFu nctionTypeLinear);
133 #endif
87 134
88 EXPECT_FLOAT_EQ(4, curve->getValue(-1).m41()); 135 EXPECT_FLOAT_EQ(4, curve->getValue(-1).m41());
89 EXPECT_FLOAT_EQ(4, curve->getValue(0).m41()); 136 EXPECT_FLOAT_EQ(4, curve->getValue(0).m41());
90 EXPECT_FLOAT_EQ(4, curve->getValue(0.5).m41()); 137 EXPECT_FLOAT_EQ(4, curve->getValue(0.5).m41());
91 138
92 // There is a discontinuity at 1. Any value between 4 and 6 is valid. 139 // There is a discontinuity at 1. Any value between 4 and 6 is valid.
93 WebTransformationMatrix value = curve->getValue(1); 140 WebTransformationMatrix value = curve->getValue(1);
94 EXPECT_TRUE(value.m41() >= 4 && value.m41() <= 6); 141 EXPECT_TRUE(value.m41() >= 4 && value.m41() <= 6);
95 142
96 EXPECT_FLOAT_EQ(6, curve->getValue(1.5).m41()); 143 EXPECT_FLOAT_EQ(6, curve->getValue(1.5).m41());
97 EXPECT_FLOAT_EQ(6, curve->getValue(2).m41()); 144 EXPECT_FLOAT_EQ(6, curve->getValue(2).m41());
98 EXPECT_FLOAT_EQ(6, curve->getValue(3).m41()); 145 EXPECT_FLOAT_EQ(6, curve->getValue(3).m41());
99 } 146 }
100 147
101 // Tests that the keyframes may be added out of order. 148 // Tests that the keyframes may be added out of order.
102 TEST(WebTransformAnimationCurveTest, UnsortedKeyframes) 149 TEST(WebTransformAnimationCurveTest, UnsortedKeyframes)
103 { 150 {
104 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 151 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
105 WebKit::WebTransformOperations operations1; 152 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
153 scoped_ptr<WebTransformOperations> operations1(new WebTransformOperationsImp l());
154 operations1->appendTranslate(2, 0, 0);
155 scoped_ptr<WebTransformOperations> operations2(new WebTransformOperationsImp l());
156 operations2->appendTranslate(4, 0, 0);
157 scoped_ptr<WebTransformOperations> operations3(new WebTransformOperationsImp l());
158 operations3->appendTranslate(8, 0, 0);
159 curve->add(WebTransformKeyframe(2, operations3.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
160 curve->add(WebTransformKeyframe(0, operations1.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
161 curve->add(WebTransformKeyframe(1, operations2.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
162 #else
163 WebTransformOperations operations1;
106 operations1.appendTranslate(2, 0, 0); 164 operations1.appendTranslate(2, 0, 0);
107 WebKit::WebTransformOperations operations2; 165 WebTransformOperations operations2;
108 operations2.appendTranslate(4, 0, 0); 166 operations2.appendTranslate(4, 0, 0);
109 WebKit::WebTransformOperations operations3; 167 WebTransformOperations operations3;
110 operations3.appendTranslate(8, 0, 0); 168 operations3.appendTranslate(8, 0, 0);
111 curve->add(WebTransformKeyframe(2, operations3), WebAnimationCurve::TimingFu nctionTypeLinear); 169 curve->add(WebTransformKeyframe(2, operations3), WebAnimationCurve::TimingFu nctionTypeLinear);
112 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeLinear); 170 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeLinear);
113 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear); 171 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear);
172 #endif
114 173
115 EXPECT_FLOAT_EQ(2, curve->getValue(-1).m41()); 174 EXPECT_FLOAT_EQ(2, curve->getValue(-1).m41());
116 EXPECT_FLOAT_EQ(2, curve->getValue(0).m41()); 175 EXPECT_FLOAT_EQ(2, curve->getValue(0).m41());
117 EXPECT_FLOAT_EQ(3, curve->getValue(0.5).m41()); 176 EXPECT_FLOAT_EQ(3, curve->getValue(0.5).m41());
118 EXPECT_FLOAT_EQ(4, curve->getValue(1).m41()); 177 EXPECT_FLOAT_EQ(4, curve->getValue(1).m41());
119 EXPECT_FLOAT_EQ(6, curve->getValue(1.5).m41()); 178 EXPECT_FLOAT_EQ(6, curve->getValue(1.5).m41());
120 EXPECT_FLOAT_EQ(8, curve->getValue(2).m41()); 179 EXPECT_FLOAT_EQ(8, curve->getValue(2).m41());
121 EXPECT_FLOAT_EQ(8, curve->getValue(3).m41()); 180 EXPECT_FLOAT_EQ(8, curve->getValue(3).m41());
122 } 181 }
123 182
124 // Tests that a cubic bezier timing function works as expected. 183 // Tests that a cubic bezier timing function works as expected.
125 TEST(WebTransformAnimationCurveTest, CubicBezierTimingFunction) 184 TEST(WebTransformAnimationCurveTest, CubicBezierTimingFunction)
126 { 185 {
127 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 186 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
128 WebKit::WebTransformOperations operations1; 187 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
188 scoped_ptr<WebTransformOperations> operations1(new WebTransformOperationsImp l());
189 operations1->appendTranslate(0, 0, 0);
190 scoped_ptr<WebTransformOperations> operations2(new WebTransformOperationsImp l());
191 operations2->appendTranslate(1, 0, 0);
192 curve->add(WebTransformKeyframe(0, operations1.release()), 0.25, 0, 0.75, 1) ;
193 curve->add(WebTransformKeyframe(1, operations2.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
194 #else
195 WebTransformOperations operations1;
129 operations1.appendTranslate(0, 0, 0); 196 operations1.appendTranslate(0, 0, 0);
130 WebKit::WebTransformOperations operations2; 197 WebTransformOperations operations2;
131 operations2.appendTranslate(1, 0, 0); 198 operations2.appendTranslate(1, 0, 0);
132 curve->add(WebTransformKeyframe(0, operations1), 0.25, 0, 0.75, 1); 199 curve->add(WebTransformKeyframe(0, operations1), 0.25, 0, 0.75, 1);
133 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear); 200 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear);
201 #endif
134 EXPECT_FLOAT_EQ(0, curve->getValue(0).m41()); 202 EXPECT_FLOAT_EQ(0, curve->getValue(0).m41());
135 EXPECT_LT(0, curve->getValue(0.25).m41()); 203 EXPECT_LT(0, curve->getValue(0.25).m41());
136 EXPECT_GT(0.25, curve->getValue(0.25).m41()); 204 EXPECT_GT(0.25, curve->getValue(0.25).m41());
137 EXPECT_NEAR(curve->getValue(0.5).m41(), 0.5, 0.00015); 205 EXPECT_NEAR(curve->getValue(0.5).m41(), 0.5, 0.00015);
138 EXPECT_LT(0.75, curve->getValue(0.75).m41()); 206 EXPECT_LT(0.75, curve->getValue(0.75).m41());
139 EXPECT_GT(1, curve->getValue(0.75).m41()); 207 EXPECT_GT(1, curve->getValue(0.75).m41());
140 EXPECT_FLOAT_EQ(1, curve->getValue(1).m41()); 208 EXPECT_FLOAT_EQ(1, curve->getValue(1).m41());
141 } 209 }
142 210
143 // Tests that an ease timing function works as expected. 211 // Tests that an ease timing function works as expected.
144 TEST(WebTransformAnimationCurveTest, EaseTimingFunction) 212 TEST(WebTransformAnimationCurveTest, EaseTimingFunction)
145 { 213 {
146 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 214 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
147 WebKit::WebTransformOperations operations1; 215 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
216 scoped_ptr<WebTransformOperations> operations1(new WebTransformOperationsImp l());
217 operations1->appendTranslate(0, 0, 0);
218 scoped_ptr<WebTransformOperations> operations2(new WebTransformOperationsImp l());
219 operations2->appendTranslate(1, 0, 0);
220 curve->add(WebTransformKeyframe(0, operations1.release()), WebAnimationCurve ::TimingFunctionTypeEase);
221 curve->add(WebTransformKeyframe(1, operations2.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
222 #else
223 WebTransformOperations operations1;
148 operations1.appendTranslate(0, 0, 0); 224 operations1.appendTranslate(0, 0, 0);
149 WebKit::WebTransformOperations operations2; 225 WebTransformOperations operations2;
150 operations2.appendTranslate(1, 0, 0); 226 operations2.appendTranslate(1, 0, 0);
151 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeEase); 227 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeEase);
152 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear); 228 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear);
229 #endif
153 230
154 scoped_ptr<cc::TimingFunction> timingFunction(cc::EaseTimingFunction::create ()); 231 scoped_ptr<cc::TimingFunction> timingFunction(cc::EaseTimingFunction::create ());
155 for (int i = 0; i <= 4; ++i) { 232 for (int i = 0; i <= 4; ++i) {
156 const double time = i * 0.25; 233 const double time = i * 0.25;
157 EXPECT_FLOAT_EQ(timingFunction->getValue(time), curve->getValue(time).m4 1()); 234 EXPECT_FLOAT_EQ(timingFunction->getValue(time), curve->getValue(time).m4 1());
158 } 235 }
159 } 236 }
160 237
161 // Tests using a linear timing function. 238 // Tests using a linear timing function.
162 TEST(WebTransformAnimationCurveTest, LinearTimingFunction) 239 TEST(WebTransformAnimationCurveTest, LinearTimingFunction)
163 { 240 {
164 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 241 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
165 WebKit::WebTransformOperations operations1; 242 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
243 scoped_ptr<WebTransformOperations> operations1(new WebTransformOperationsImp l());
244 operations1->appendTranslate(0, 0, 0);
245 scoped_ptr<WebTransformOperations> operations2(new WebTransformOperationsImp l());
246 operations2->appendTranslate(1, 0, 0);
247 curve->add(WebTransformKeyframe(0, operations1.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
248 curve->add(WebTransformKeyframe(1, operations2.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
249 #else
250 WebTransformOperations operations1;
166 operations1.appendTranslate(0, 0, 0); 251 operations1.appendTranslate(0, 0, 0);
167 WebKit::WebTransformOperations operations2; 252 WebTransformOperations operations2;
168 operations2.appendTranslate(1, 0, 0); 253 operations2.appendTranslate(1, 0, 0);
169 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeLinear); 254 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeLinear);
170 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear); 255 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear);
256 #endif
171 257
172 for (int i = 0; i <= 4; ++i) { 258 for (int i = 0; i <= 4; ++i) {
173 const double time = i * 0.25; 259 const double time = i * 0.25;
174 EXPECT_FLOAT_EQ(time, curve->getValue(time).m41()); 260 EXPECT_FLOAT_EQ(time, curve->getValue(time).m41());
175 } 261 }
176 } 262 }
177 263
178 // Tests that an ease in timing function works as expected. 264 // Tests that an ease in timing function works as expected.
179 TEST(WebTransformAnimationCurveTest, EaseInTimingFunction) 265 TEST(WebTransformAnimationCurveTest, EaseInTimingFunction)
180 { 266 {
181 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 267 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
182 WebKit::WebTransformOperations operations1; 268 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
269 scoped_ptr<WebTransformOperations> operations1(new WebTransformOperationsImp l());
270 operations1->appendTranslate(0, 0, 0);
271 scoped_ptr<WebTransformOperations> operations2(new WebTransformOperationsImp l());
272 operations2->appendTranslate(1, 0, 0);
273 curve->add(WebTransformKeyframe(0, operations1.release()), WebAnimationCurve ::TimingFunctionTypeEaseIn);
274 curve->add(WebTransformKeyframe(1, operations2.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
275 #else
276 WebTransformOperations operations1;
183 operations1.appendTranslate(0, 0, 0); 277 operations1.appendTranslate(0, 0, 0);
184 WebKit::WebTransformOperations operations2; 278 WebTransformOperations operations2;
185 operations2.appendTranslate(1, 0, 0); 279 operations2.appendTranslate(1, 0, 0);
186 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeEaseIn); 280 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeEaseIn);
187 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear); 281 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear);
282 #endif
188 283
189 scoped_ptr<cc::TimingFunction> timingFunction(cc::EaseInTimingFunction::crea te()); 284 scoped_ptr<cc::TimingFunction> timingFunction(cc::EaseInTimingFunction::crea te());
190 for (int i = 0; i <= 4; ++i) { 285 for (int i = 0; i <= 4; ++i) {
191 const double time = i * 0.25; 286 const double time = i * 0.25;
192 EXPECT_FLOAT_EQ(timingFunction->getValue(time), curve->getValue(time).m4 1()); 287 EXPECT_FLOAT_EQ(timingFunction->getValue(time), curve->getValue(time).m4 1());
193 } 288 }
194 } 289 }
195 290
196 // Tests that an ease in timing function works as expected. 291 // Tests that an ease in timing function works as expected.
197 TEST(WebTransformAnimationCurveTest, EaseOutTimingFunction) 292 TEST(WebTransformAnimationCurveTest, EaseOutTimingFunction)
198 { 293 {
199 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 294 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
200 WebKit::WebTransformOperations operations1; 295 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
296 scoped_ptr<WebTransformOperations> operations1(new WebTransformOperationsImp l());
297 operations1->appendTranslate(0, 0, 0);
298 scoped_ptr<WebTransformOperations> operations2(new WebTransformOperationsImp l());
299 operations2->appendTranslate(1, 0, 0);
300 curve->add(WebTransformKeyframe(0, operations1.release()), WebAnimationCurve ::TimingFunctionTypeEaseOut);
301 curve->add(WebTransformKeyframe(1, operations2.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
302 #else
303 WebTransformOperations operations1;
201 operations1.appendTranslate(0, 0, 0); 304 operations1.appendTranslate(0, 0, 0);
202 WebKit::WebTransformOperations operations2; 305 WebTransformOperations operations2;
203 operations2.appendTranslate(1, 0, 0); 306 operations2.appendTranslate(1, 0, 0);
204 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeEaseOut); 307 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeEaseOut);
205 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear); 308 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear);
309 #endif
206 310
207 scoped_ptr<cc::TimingFunction> timingFunction(cc::EaseOutTimingFunction::cre ate()); 311 scoped_ptr<cc::TimingFunction> timingFunction(cc::EaseOutTimingFunction::cre ate());
208 for (int i = 0; i <= 4; ++i) { 312 for (int i = 0; i <= 4; ++i) {
209 const double time = i * 0.25; 313 const double time = i * 0.25;
210 EXPECT_FLOAT_EQ(timingFunction->getValue(time), curve->getValue(time).m4 1()); 314 EXPECT_FLOAT_EQ(timingFunction->getValue(time), curve->getValue(time).m4 1());
211 } 315 }
212 } 316 }
213 317
214 // Tests that an ease in timing function works as expected. 318 // Tests that an ease in timing function works as expected.
215 TEST(WebTransformAnimationCurveTest, EaseInOutTimingFunction) 319 TEST(WebTransformAnimationCurveTest, EaseInOutTimingFunction)
216 { 320 {
217 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 321 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
218 WebKit::WebTransformOperations operations1; 322 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
323 scoped_ptr<WebTransformOperations> operations1(new WebTransformOperationsImp l());
324 operations1->appendTranslate(0, 0, 0);
325 scoped_ptr<WebTransformOperations> operations2(new WebTransformOperationsImp l());
326 operations2->appendTranslate(1, 0, 0);
327 curve->add(WebTransformKeyframe(0, operations1.release()), WebAnimationCurve ::TimingFunctionTypeEaseInOut);
328 curve->add(WebTransformKeyframe(1, operations2.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
329 #else
330 WebTransformOperations operations1;
219 operations1.appendTranslate(0, 0, 0); 331 operations1.appendTranslate(0, 0, 0);
220 WebKit::WebTransformOperations operations2; 332 WebTransformOperations operations2;
221 operations2.appendTranslate(1, 0, 0); 333 operations2.appendTranslate(1, 0, 0);
222 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeEaseInOut); 334 curve->add(WebTransformKeyframe(0, operations1), WebAnimationCurve::TimingFu nctionTypeEaseInOut);
223 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear); 335 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear);
336 #endif
224 337
225 scoped_ptr<cc::TimingFunction> timingFunction(cc::EaseInOutTimingFunction::c reate()); 338 scoped_ptr<cc::TimingFunction> timingFunction(cc::EaseInOutTimingFunction::c reate());
226 for (int i = 0; i <= 4; ++i) { 339 for (int i = 0; i <= 4; ++i) {
227 const double time = i * 0.25; 340 const double time = i * 0.25;
228 EXPECT_FLOAT_EQ(timingFunction->getValue(time), curve->getValue(time).m4 1()); 341 EXPECT_FLOAT_EQ(timingFunction->getValue(time), curve->getValue(time).m4 1());
229 } 342 }
230 } 343 }
231 344
232 // Tests that an ease in timing function works as expected. 345 // Tests that an ease in timing function works as expected.
233 TEST(WebTransformAnimationCurveTest, CustomBezierTimingFunction) 346 TEST(WebTransformAnimationCurveTest, CustomBezierTimingFunction)
234 { 347 {
235 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 348 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
236 double x1 = 0.3; 349 double x1 = 0.3;
237 double y1 = 0.2; 350 double y1 = 0.2;
238 double x2 = 0.8; 351 double x2 = 0.8;
239 double y2 = 0.7; 352 double y2 = 0.7;
240 WebKit::WebTransformOperations operations1; 353 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
354 scoped_ptr<WebTransformOperations> operations1(new WebTransformOperationsImp l());
355 operations1->appendTranslate(0, 0, 0);
356 scoped_ptr<WebTransformOperations> operations2(new WebTransformOperationsImp l());
357 operations2->appendTranslate(1, 0, 0);
358 curve->add(WebTransformKeyframe(0, operations1.release()), x1, y1, x2, y2);
359 curve->add(WebTransformKeyframe(1, operations2.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
360 #else
361 WebTransformOperations operations1;
241 operations1.appendTranslate(0, 0, 0); 362 operations1.appendTranslate(0, 0, 0);
242 WebKit::WebTransformOperations operations2; 363 WebTransformOperations operations2;
243 operations2.appendTranslate(1, 0, 0); 364 operations2.appendTranslate(1, 0, 0);
244 curve->add(WebTransformKeyframe(0, operations1), x1, y1, x2, y2); 365 curve->add(WebTransformKeyframe(0, operations1), x1, y1, x2, y2);
245 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear); 366 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear);
367 #endif
246 368
247 scoped_ptr<cc::TimingFunction> timingFunction(cc::CubicBezierTimingFunction: :create(x1, y1, x2, y2)); 369 scoped_ptr<cc::TimingFunction> timingFunction(cc::CubicBezierTimingFunction: :create(x1, y1, x2, y2));
248 for (int i = 0; i <= 4; ++i) { 370 for (int i = 0; i <= 4; ++i) {
249 const double time = i * 0.25; 371 const double time = i * 0.25;
250 EXPECT_FLOAT_EQ(timingFunction->getValue(time), curve->getValue(time).m4 1()); 372 EXPECT_FLOAT_EQ(timingFunction->getValue(time), curve->getValue(time).m4 1());
251 } 373 }
252 } 374 }
253 375
254 // Tests that the default timing function is indeed ease. 376 // Tests that the default timing function is indeed ease.
255 TEST(WebTransformAnimationCurveTest, DefaultTimingFunction) 377 TEST(WebTransformAnimationCurveTest, DefaultTimingFunction)
256 { 378 {
257 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl); 379 scoped_ptr<WebTransformAnimationCurve> curve(new WebTransformAnimationCurveI mpl);
258 WebKit::WebTransformOperations operations1; 380 #if WEB_TRANSFORM_OPERATIONS_IS_VIRTUAL
381 scoped_ptr<WebTransformOperations> operations1(new WebTransformOperationsImp l());
382 operations1->appendTranslate(0, 0, 0);
383 scoped_ptr<WebTransformOperations> operations2(new WebTransformOperationsImp l());
384 operations2->appendTranslate(1, 0, 0);
385 curve->add(WebTransformKeyframe(0, operations1.release()));
386 curve->add(WebTransformKeyframe(1, operations2.release()), WebAnimationCurve ::TimingFunctionTypeLinear);
387 #else
388 WebTransformOperations operations1;
259 operations1.appendTranslate(0, 0, 0); 389 operations1.appendTranslate(0, 0, 0);
260 WebKit::WebTransformOperations operations2; 390 WebTransformOperations operations2;
261 operations2.appendTranslate(1, 0, 0); 391 operations2.appendTranslate(1, 0, 0);
262 curve->add(WebTransformKeyframe(0, operations1)); 392 curve->add(WebTransformKeyframe(0, operations1));
263 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear); 393 curve->add(WebTransformKeyframe(1, operations2), WebAnimationCurve::TimingFu nctionTypeLinear);
394 #endif
264 395
265 scoped_ptr<cc::TimingFunction> timingFunction(cc::EaseTimingFunction::create ()); 396 scoped_ptr<cc::TimingFunction> timingFunction(cc::EaseTimingFunction::create ());
266 for (int i = 0; i <= 4; ++i) { 397 for (int i = 0; i <= 4; ++i) {
267 const double time = i * 0.25; 398 const double time = i * 0.25;
268 EXPECT_FLOAT_EQ(timingFunction->getValue(time), curve->getValue(time).m4 1()); 399 EXPECT_FLOAT_EQ(timingFunction->getValue(time), curve->getValue(time).m4 1());
269 } 400 }
270 } 401 }
271 402
272 } // namespace 403 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698