OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013, Google Inc. All rights reserved. | 2 * Copyright (c) 2013, Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 }; | 55 }; |
56 | 56 |
57 class AnimationDocumentTimelineTest : public ::testing::Test { | 57 class AnimationDocumentTimelineTest : public ::testing::Test { |
58 protected: | 58 protected: |
59 virtual void SetUp() { | 59 virtual void SetUp() { |
60 page_holder = DummyPageHolder::Create(); | 60 page_holder = DummyPageHolder::Create(); |
61 document = &page_holder->GetDocument(); | 61 document = &page_holder->GetDocument(); |
62 document->GetAnimationClock().ResetTimeForTesting(); | 62 document->GetAnimationClock().ResetTimeForTesting(); |
63 element = Element::Create(QualifiedName::Null(), document.Get()); | 63 element = Element::Create(QualifiedName::Null(), document.Get()); |
64 platform_timing = new MockPlatformTiming; | 64 platform_timing = new MockPlatformTiming; |
65 timeline = DocumentTimeline::Create(document.Get(), platform_timing); | 65 timeline = DocumentTimeline::Create(document.Get(), 0.0, platform_timing); |
66 timeline->ResetForTesting(); | 66 timeline->ResetForTesting(); |
67 ASSERT_EQ(0, timeline->CurrentTimeInternal()); | 67 ASSERT_EQ(0, timeline->CurrentTimeInternal()); |
68 } | 68 } |
69 | 69 |
70 virtual void TearDown() { | 70 virtual void TearDown() { |
71 document.Release(); | 71 document.Release(); |
72 element.Release(); | 72 element.Release(); |
73 timeline.Release(); | 73 timeline.Release(); |
74 ThreadState::Current()->CollectAllGarbage(); | 74 ThreadState::Current()->CollectAllGarbage(); |
75 } | 75 } |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); | 155 EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); |
156 EXPECT_FALSE(is_null); | 156 EXPECT_FALSE(is_null); |
157 | 157 |
158 document->GetAnimationClock().UpdateTime(200); | 158 document->GetAnimationClock().UpdateTime(200); |
159 EXPECT_EQ(zero_time, timeline->ZeroTime()); | 159 EXPECT_EQ(zero_time, timeline->ZeroTime()); |
160 EXPECT_EQ(200, timeline->CurrentTimeInternal()); | 160 EXPECT_EQ(200, timeline->CurrentTimeInternal()); |
161 EXPECT_EQ(200, timeline->CurrentTimeInternal(is_null)); | 161 EXPECT_EQ(200, timeline->CurrentTimeInternal(is_null)); |
162 EXPECT_FALSE(is_null); | 162 EXPECT_FALSE(is_null); |
163 } | 163 } |
164 | 164 |
| 165 TEST_F(AnimationDocumentTimelineTest, PlaybackRateNormalWithOriginTime) { |
| 166 double origin_time_in_ms = -1000000.0; |
| 167 timeline = DocumentTimeline::Create(document.Get(), origin_time_in_ms, |
| 168 platform_timing); |
| 169 timeline->ResetForTesting(); |
| 170 |
| 171 bool is_null; |
| 172 |
| 173 EXPECT_EQ(1.0, timeline->PlaybackRate()); |
| 174 EXPECT_EQ(-1000, timeline->ZeroTime()); |
| 175 EXPECT_EQ(1000, timeline->CurrentTimeInternal()); |
| 176 EXPECT_EQ(1000, timeline->CurrentTimeInternal(is_null)); |
| 177 EXPECT_FALSE(is_null); |
| 178 |
| 179 document->GetAnimationClock().UpdateTime(100); |
| 180 EXPECT_EQ(-1000, timeline->ZeroTime()); |
| 181 EXPECT_EQ(1100, timeline->CurrentTimeInternal()); |
| 182 EXPECT_EQ(1100, timeline->CurrentTimeInternal(is_null)); |
| 183 EXPECT_FALSE(is_null); |
| 184 |
| 185 document->GetAnimationClock().UpdateTime(200); |
| 186 EXPECT_EQ(-1000, timeline->ZeroTime()); |
| 187 EXPECT_EQ(1200, timeline->CurrentTimeInternal()); |
| 188 EXPECT_EQ(1200, timeline->CurrentTimeInternal(is_null)); |
| 189 EXPECT_FALSE(is_null); |
| 190 } |
| 191 |
165 TEST_F(AnimationDocumentTimelineTest, PlaybackRatePause) { | 192 TEST_F(AnimationDocumentTimelineTest, PlaybackRatePause) { |
166 bool is_null; | 193 bool is_null; |
167 | 194 |
168 document->GetAnimationClock().UpdateTime(100); | 195 document->GetAnimationClock().UpdateTime(100); |
169 EXPECT_EQ(0, timeline->ZeroTime()); | 196 EXPECT_EQ(0, timeline->ZeroTime()); |
170 EXPECT_EQ(100, timeline->CurrentTimeInternal()); | 197 EXPECT_EQ(100, timeline->CurrentTimeInternal()); |
171 EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); | 198 EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); |
172 EXPECT_FALSE(is_null); | 199 EXPECT_FALSE(is_null); |
173 | 200 |
174 timeline->SetPlaybackRate(0.0); | 201 timeline->SetPlaybackRate(0.0); |
175 EXPECT_EQ(0.0, timeline->PlaybackRate()); | 202 EXPECT_EQ(0.0, timeline->PlaybackRate()); |
176 document->GetAnimationClock().UpdateTime(200); | 203 document->GetAnimationClock().UpdateTime(200); |
177 EXPECT_EQ(100, timeline->ZeroTime()); | 204 EXPECT_EQ(100, timeline->ZeroTime()); |
178 EXPECT_EQ(100, timeline->CurrentTimeInternal()); | 205 EXPECT_EQ(100, timeline->CurrentTimeInternal()); |
179 EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); | 206 EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); |
180 | 207 |
181 timeline->SetPlaybackRate(1.0); | 208 timeline->SetPlaybackRate(1.0); |
182 EXPECT_EQ(1.0, timeline->PlaybackRate()); | 209 EXPECT_EQ(1.0, timeline->PlaybackRate()); |
183 document->GetAnimationClock().UpdateTime(400); | 210 document->GetAnimationClock().UpdateTime(400); |
184 EXPECT_EQ(100, timeline->ZeroTime()); | 211 EXPECT_EQ(100, timeline->ZeroTime()); |
185 EXPECT_EQ(300, timeline->CurrentTimeInternal()); | 212 EXPECT_EQ(300, timeline->CurrentTimeInternal()); |
186 EXPECT_EQ(300, timeline->CurrentTimeInternal(is_null)); | 213 EXPECT_EQ(300, timeline->CurrentTimeInternal(is_null)); |
187 | 214 |
188 EXPECT_FALSE(is_null); | 215 EXPECT_FALSE(is_null); |
189 } | 216 } |
190 | 217 |
| 218 TEST_F(AnimationDocumentTimelineTest, PlaybackRatePauseWithOriginTime) { |
| 219 bool is_null; |
| 220 |
| 221 double origin_time_in_ms = -1000000.0; |
| 222 timeline = DocumentTimeline::Create(document.Get(), origin_time_in_ms, |
| 223 platform_timing); |
| 224 timeline->ResetForTesting(); |
| 225 |
| 226 EXPECT_EQ(-1000, timeline->ZeroTime()); |
| 227 EXPECT_EQ(1000, timeline->CurrentTimeInternal()); |
| 228 EXPECT_EQ(1000, timeline->CurrentTimeInternal(is_null)); |
| 229 EXPECT_FALSE(is_null); |
| 230 |
| 231 document->GetAnimationClock().UpdateTime(100); |
| 232 EXPECT_EQ(-1000, timeline->ZeroTime()); |
| 233 EXPECT_EQ(1100, timeline->CurrentTimeInternal()); |
| 234 EXPECT_EQ(1100, timeline->CurrentTimeInternal(is_null)); |
| 235 EXPECT_FALSE(is_null); |
| 236 |
| 237 timeline->SetPlaybackRate(0.0); |
| 238 EXPECT_EQ(0.0, timeline->PlaybackRate()); |
| 239 document->GetAnimationClock().UpdateTime(200); |
| 240 EXPECT_EQ(1100, timeline->ZeroTime()); |
| 241 EXPECT_EQ(1100, timeline->CurrentTimeInternal()); |
| 242 EXPECT_EQ(1100, timeline->CurrentTimeInternal(is_null)); |
| 243 |
| 244 timeline->SetPlaybackRate(1.0); |
| 245 EXPECT_EQ(1.0, timeline->PlaybackRate()); |
| 246 EXPECT_EQ(-900, timeline->ZeroTime()); |
| 247 EXPECT_EQ(1100, timeline->CurrentTimeInternal()); |
| 248 EXPECT_EQ(1100, timeline->CurrentTimeInternal(is_null)); |
| 249 |
| 250 document->GetAnimationClock().UpdateTime(400); |
| 251 EXPECT_EQ(-900, timeline->ZeroTime()); |
| 252 EXPECT_EQ(1300, timeline->CurrentTimeInternal()); |
| 253 EXPECT_EQ(1300, timeline->CurrentTimeInternal(is_null)); |
| 254 |
| 255 EXPECT_FALSE(is_null); |
| 256 } |
| 257 |
191 TEST_F(AnimationDocumentTimelineTest, PlaybackRateSlow) { | 258 TEST_F(AnimationDocumentTimelineTest, PlaybackRateSlow) { |
192 bool is_null; | 259 bool is_null; |
193 | 260 |
194 document->GetAnimationClock().UpdateTime(100); | 261 document->GetAnimationClock().UpdateTime(100); |
195 EXPECT_EQ(0, timeline->ZeroTime()); | 262 EXPECT_EQ(0, timeline->ZeroTime()); |
196 EXPECT_EQ(100, timeline->CurrentTimeInternal()); | 263 EXPECT_EQ(100, timeline->CurrentTimeInternal()); |
197 EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); | 264 EXPECT_EQ(100, timeline->CurrentTimeInternal(is_null)); |
198 EXPECT_FALSE(is_null); | 265 EXPECT_FALSE(is_null); |
199 | 266 |
200 timeline->SetPlaybackRate(0.5); | 267 timeline->SetPlaybackRate(0.5); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 timeline->SetPlaybackRate(1.0); | 300 timeline->SetPlaybackRate(1.0); |
234 EXPECT_EQ(1.0, timeline->PlaybackRate()); | 301 EXPECT_EQ(1.0, timeline->PlaybackRate()); |
235 document->GetAnimationClock().UpdateTime(400); | 302 document->GetAnimationClock().UpdateTime(400); |
236 EXPECT_EQ(-200, timeline->ZeroTime()); | 303 EXPECT_EQ(-200, timeline->ZeroTime()); |
237 EXPECT_EQ(600, timeline->CurrentTimeInternal()); | 304 EXPECT_EQ(600, timeline->CurrentTimeInternal()); |
238 EXPECT_EQ(600, timeline->CurrentTimeInternal(is_null)); | 305 EXPECT_EQ(600, timeline->CurrentTimeInternal(is_null)); |
239 | 306 |
240 EXPECT_FALSE(is_null); | 307 EXPECT_FALSE(is_null); |
241 } | 308 } |
242 | 309 |
| 310 TEST_F(AnimationDocumentTimelineTest, PlaybackRateFastWithOriginTime) { |
| 311 bool is_null; |
| 312 |
| 313 double origin_time_in_ms = -1000000.0; |
| 314 timeline = DocumentTimeline::Create(document.Get(), origin_time_in_ms, |
| 315 platform_timing); |
| 316 timeline->ResetForTesting(); |
| 317 |
| 318 document->GetAnimationClock().UpdateTime(100); |
| 319 EXPECT_EQ(-1000, timeline->ZeroTime()); |
| 320 EXPECT_EQ(1100, timeline->CurrentTimeInternal()); |
| 321 EXPECT_EQ(1100, timeline->CurrentTimeInternal(is_null)); |
| 322 EXPECT_FALSE(is_null); |
| 323 |
| 324 timeline->SetPlaybackRate(2.0); |
| 325 EXPECT_EQ(2.0, timeline->PlaybackRate()); |
| 326 EXPECT_EQ(-450, timeline->ZeroTime()); |
| 327 EXPECT_EQ(1100, timeline->CurrentTimeInternal()); |
| 328 EXPECT_EQ(1100, timeline->CurrentTimeInternal(is_null)); |
| 329 |
| 330 document->GetAnimationClock().UpdateTime(300); |
| 331 EXPECT_EQ(-450, timeline->ZeroTime()); |
| 332 EXPECT_EQ(1500, timeline->CurrentTimeInternal()); |
| 333 EXPECT_EQ(1500, timeline->CurrentTimeInternal(is_null)); |
| 334 |
| 335 timeline->SetPlaybackRate(1.0); |
| 336 EXPECT_EQ(1.0, timeline->PlaybackRate()); |
| 337 EXPECT_EQ(-1200, timeline->ZeroTime()); |
| 338 EXPECT_EQ(1500, timeline->CurrentTimeInternal()); |
| 339 EXPECT_EQ(1500, timeline->CurrentTimeInternal(is_null)); |
| 340 |
| 341 document->GetAnimationClock().UpdateTime(400); |
| 342 EXPECT_EQ(-1200, timeline->ZeroTime()); |
| 343 EXPECT_EQ(1600, timeline->CurrentTimeInternal()); |
| 344 EXPECT_EQ(1600, timeline->CurrentTimeInternal(is_null)); |
| 345 |
| 346 EXPECT_FALSE(is_null); |
| 347 } |
| 348 |
243 TEST_F(AnimationDocumentTimelineTest, PauseForTesting) { | 349 TEST_F(AnimationDocumentTimelineTest, PauseForTesting) { |
244 float seek_time = 1; | 350 float seek_time = 1; |
245 timing.fill_mode = Timing::FillMode::FORWARDS; | 351 timing.fill_mode = Timing::FillMode::FORWARDS; |
246 KeyframeEffect* anim1 = | 352 KeyframeEffect* anim1 = |
247 KeyframeEffect::Create(element.Get(), | 353 KeyframeEffect::Create(element.Get(), |
248 AnimatableValueKeyframeEffectModel::Create( | 354 AnimatableValueKeyframeEffectModel::Create( |
249 AnimatableValueKeyframeVector()), | 355 AnimatableValueKeyframeVector()), |
250 timing); | 356 timing); |
251 KeyframeEffect* anim2 = | 357 KeyframeEffect* anim2 = |
252 KeyframeEffect::Create(element.Get(), | 358 KeyframeEffect::Create(element.Get(), |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 | 405 |
300 timeline = &document->Timeline(); | 406 timeline = &document->Timeline(); |
301 document = nullptr; | 407 document = nullptr; |
302 | 408 |
303 KeyframeEffect* keyframe_effect = KeyframeEffect::Create(0, nullptr, timing); | 409 KeyframeEffect* keyframe_effect = KeyframeEffect::Create(0, nullptr, timing); |
304 // Test passes if this does not crash. | 410 // Test passes if this does not crash. |
305 timeline->Play(keyframe_effect); | 411 timeline->Play(keyframe_effect); |
306 } | 412 } |
307 | 413 |
308 } // namespace blink | 414 } // namespace blink |
OLD | NEW |