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

Side by Side Diff: cc/animation/layer_animation_controller_unittest.cc

Issue 226543005: CC should use TimeTicks and TimeDelta to represent time (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Tests related changes Created 6 years, 8 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 "cc/animation/layer_animation_controller.h" 5 #include "cc/animation/layer_animation_controller.h"
6 6
7 #include "cc/animation/animation.h" 7 #include "cc/animation/animation.h"
8 #include "cc/animation/animation_curve.h" 8 #include "cc/animation/animation_curve.h"
9 #include "cc/animation/animation_delegate.h" 9 #include "cc/animation/animation_delegate.h"
10 #include "cc/animation/animation_registrar.h" 10 #include "cc/animation/animation_registrar.h"
11 #include "cc/animation/keyframed_animation_curve.h" 11 #include "cc/animation/keyframed_animation_curve.h"
12 #include "cc/animation/scroll_offset_animation_curve.h" 12 #include "cc/animation/scroll_offset_animation_curve.h"
13 #include "cc/animation/transform_operations.h" 13 #include "cc/animation/transform_operations.h"
14 #include "cc/test/animation_test_common.h" 14 #include "cc/test/animation_test_common.h"
15 #include "testing/gmock/include/gmock/gmock.h" 15 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 #include "ui/gfx/box_f.h" 17 #include "ui/gfx/box_f.h"
18 #include "ui/gfx/transform.h" 18 #include "ui/gfx/transform.h"
19 19
20 namespace cc { 20 namespace cc {
21 namespace { 21 namespace {
22 22
23 // A LayerAnimationController cannot be ticked at 0.0, since an animation 23 // A LayerAnimationController cannot be ticked at 0.0, since an animation
24 // with start time 0.0 is treated as an animation whose start time has 24 // with start time 0.0 is treated as an animation whose start time has
25 // not yet been set. 25 // not yet been set.
26 const double kInitialTickTime = 1.0; 26 const double kInitialTickTime = 1.0;
27 base::TimeTicks GetTimeTicks(double time) {
28 return base::TimeTicks::FromInternalValue(time *
29 base::Time::kMicrosecondsPerSecond);
30 }
27 31
28 scoped_ptr<Animation> CreateAnimation(scoped_ptr<AnimationCurve> curve, 32 scoped_ptr<Animation> CreateAnimation(scoped_ptr<AnimationCurve> curve,
29 int id, 33 int id,
30 Animation::TargetProperty property) { 34 Animation::TargetProperty property) {
31 return Animation::Create(curve.Pass(), 0, id, property); 35 return Animation::Create(curve.Pass(), 0, id, property);
32 } 36 }
33 37
34 TEST(LayerAnimationControllerTest, SyncNewAnimation) { 38 TEST(LayerAnimationControllerTest, SyncNewAnimation) {
35 FakeLayerAnimationValueObserver dummy_impl; 39 FakeLayerAnimationValueObserver dummy_impl;
36 scoped_refptr<LayerAnimationController> controller_impl( 40 scoped_refptr<LayerAnimationController> controller_impl(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 int group_id = controller->GetAnimation(Animation::Opacity)->group(); 76 int group_id = controller->GetAnimation(Animation::Opacity)->group();
73 77
74 controller->PushAnimationUpdatesTo(controller_impl.get()); 78 controller->PushAnimationUpdatesTo(controller_impl.get());
75 79
76 EXPECT_TRUE(controller_impl->GetAnimation(group_id, Animation::Opacity)); 80 EXPECT_TRUE(controller_impl->GetAnimation(group_id, Animation::Opacity));
77 EXPECT_EQ(Animation::WaitingForTargetAvailability, 81 EXPECT_EQ(Animation::WaitingForTargetAvailability,
78 controller_impl->GetAnimation(group_id, 82 controller_impl->GetAnimation(group_id,
79 Animation::Opacity)->run_state()); 83 Animation::Opacity)->run_state());
80 84
81 AnimationEventsVector events; 85 AnimationEventsVector events;
82 controller_impl->Animate(kInitialTickTime); 86 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
83 controller_impl->UpdateState(true, &events); 87 controller_impl->UpdateState(true, &events);
84 88
85 // Synchronize the start times. 89 // Synchronize the start times.
86 EXPECT_EQ(1u, events.size()); 90 EXPECT_EQ(1u, events.size());
87 controller->NotifyAnimationStarted(events[0]); 91 controller->NotifyAnimationStarted(events[0]);
88 EXPECT_EQ(controller->GetAnimation(group_id, 92 EXPECT_EQ(controller->GetAnimation(group_id,
89 Animation::Opacity)->start_time(), 93 Animation::Opacity)->start_time(),
90 controller_impl->GetAnimation(group_id, 94 controller_impl->GetAnimation(group_id,
91 Animation::Opacity)->start_time()); 95 Animation::Opacity)->start_time());
92 96
93 // Start the animation on the main thread. Should not affect the start time. 97 // Start the animation on the main thread. Should not affect the start time.
94 controller->Animate(kInitialTickTime + 0.5); 98 controller->Animate(GetTimeTicks(kInitialTickTime + 0.5));
95 controller->UpdateState(true, NULL); 99 controller->UpdateState(true, NULL);
96 EXPECT_EQ(controller->GetAnimation(group_id, 100 EXPECT_EQ(controller->GetAnimation(group_id,
97 Animation::Opacity)->start_time(), 101 Animation::Opacity)->start_time(),
98 controller_impl->GetAnimation(group_id, 102 controller_impl->GetAnimation(group_id,
99 Animation::Opacity)->start_time()); 103 Animation::Opacity)->start_time());
100 } 104 }
101 105
102 TEST(LayerAnimationControllerTest, UseSpecifiedStartTimes) { 106 TEST(LayerAnimationControllerTest, UseSpecifiedStartTimes) {
103 FakeLayerAnimationValueObserver dummy_impl; 107 FakeLayerAnimationValueObserver dummy_impl;
104 scoped_refptr<LayerAnimationController> controller_impl( 108 scoped_refptr<LayerAnimationController> controller_impl(
105 LayerAnimationController::Create(0)); 109 LayerAnimationController::Create(0));
106 controller_impl->AddValueObserver(&dummy_impl); 110 controller_impl->AddValueObserver(&dummy_impl);
107 FakeLayerAnimationValueObserver dummy; 111 FakeLayerAnimationValueObserver dummy;
108 scoped_refptr<LayerAnimationController> controller( 112 scoped_refptr<LayerAnimationController> controller(
109 LayerAnimationController::Create(0)); 113 LayerAnimationController::Create(0));
110 controller->AddValueObserver(&dummy); 114 controller->AddValueObserver(&dummy);
111 115
112 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false); 116 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false);
113 int group_id = controller->GetAnimation(Animation::Opacity)->group(); 117 int group_id = controller->GetAnimation(Animation::Opacity)->group();
114 118
115 const double start_time = 123; 119 const double start_time = 123;
116 controller->GetAnimation(Animation::Opacity)->set_start_time(start_time); 120 controller->GetAnimation(Animation::Opacity)
121 ->set_start_time(GetTimeTicks(start_time));
117 122
118 controller->PushAnimationUpdatesTo(controller_impl.get()); 123 controller->PushAnimationUpdatesTo(controller_impl.get());
119 124
120 EXPECT_TRUE(controller_impl->GetAnimation(group_id, Animation::Opacity)); 125 EXPECT_TRUE(controller_impl->GetAnimation(group_id, Animation::Opacity));
121 EXPECT_EQ(Animation::WaitingForTargetAvailability, 126 EXPECT_EQ(Animation::WaitingForTargetAvailability,
122 controller_impl->GetAnimation(group_id, 127 controller_impl->GetAnimation(group_id,
123 Animation::Opacity)->run_state()); 128 Animation::Opacity)->run_state());
124 129
125 AnimationEventsVector events; 130 AnimationEventsVector events;
126 controller_impl->Animate(kInitialTickTime); 131 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
127 controller_impl->UpdateState(true, &events); 132 controller_impl->UpdateState(true, &events);
128 133
129 // Synchronize the start times. 134 // Synchronize the start times.
130 EXPECT_EQ(1u, events.size()); 135 EXPECT_EQ(1u, events.size());
131 controller->NotifyAnimationStarted(events[0]); 136 controller->NotifyAnimationStarted(events[0]);
132 137
133 EXPECT_EQ(start_time, 138 EXPECT_EQ(start_time,
134 controller->GetAnimation(group_id, 139 controller->GetAnimation(group_id,
135 Animation::Opacity)->start_time()); 140 Animation::Opacity)->start_time());
136 EXPECT_EQ(controller->GetAnimation(group_id, 141 EXPECT_EQ(controller->GetAnimation(group_id,
137 Animation::Opacity)->start_time(), 142 Animation::Opacity)->start_time(),
138 controller_impl->GetAnimation(group_id, 143 controller_impl->GetAnimation(group_id,
139 Animation::Opacity)->start_time()); 144 Animation::Opacity)->start_time());
140 145
141 // Start the animation on the main thread. Should not affect the start time. 146 // Start the animation on the main thread. Should not affect the start time.
142 controller->Animate(kInitialTickTime + 0.5); 147 controller->Animate(GetTimeTicks(kInitialTickTime + 0.5));
143 controller->UpdateState(true, NULL); 148 controller->UpdateState(true, NULL);
144 EXPECT_EQ(start_time, 149 EXPECT_EQ(start_time,
145 controller->GetAnimation(group_id, 150 controller->GetAnimation(group_id,
146 Animation::Opacity)->start_time()); 151 Animation::Opacity)->start_time());
147 EXPECT_EQ(controller->GetAnimation(group_id, 152 EXPECT_EQ(controller->GetAnimation(group_id,
148 Animation::Opacity)->start_time(), 153 Animation::Opacity)->start_time(),
149 controller_impl->GetAnimation(group_id, 154 controller_impl->GetAnimation(group_id,
150 Animation::Opacity)->start_time()); 155 Animation::Opacity)->start_time());
151 } 156 }
152 157
(...skipping 24 matching lines...) Expand all
177 182
178 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false); 183 AddOpacityTransitionToController(controller.get(), 1, 0, 1, false);
179 // The main thread controller should now be active. 184 // The main thread controller should now be active.
180 EXPECT_EQ(1u, registrar->active_animation_controllers().size()); 185 EXPECT_EQ(1u, registrar->active_animation_controllers().size());
181 186
182 controller->PushAnimationUpdatesTo(controller_impl.get()); 187 controller->PushAnimationUpdatesTo(controller_impl.get());
183 // Both controllers should now be active. 188 // Both controllers should now be active.
184 EXPECT_EQ(1u, registrar->active_animation_controllers().size()); 189 EXPECT_EQ(1u, registrar->active_animation_controllers().size());
185 EXPECT_EQ(1u, registrar_impl->active_animation_controllers().size()); 190 EXPECT_EQ(1u, registrar_impl->active_animation_controllers().size());
186 191
187 controller_impl->Animate(kInitialTickTime); 192 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
188 controller_impl->UpdateState(true, events.get()); 193 controller_impl->UpdateState(true, events.get());
189 EXPECT_EQ(1u, events->size()); 194 EXPECT_EQ(1u, events->size());
190 controller->NotifyAnimationStarted((*events)[0]); 195 controller->NotifyAnimationStarted((*events)[0]);
191 196
192 EXPECT_EQ(1u, registrar->active_animation_controllers().size()); 197 EXPECT_EQ(1u, registrar->active_animation_controllers().size());
193 EXPECT_EQ(1u, registrar_impl->active_animation_controllers().size()); 198 EXPECT_EQ(1u, registrar_impl->active_animation_controllers().size());
194 199
195 controller->Animate(kInitialTickTime + 0.5); 200 controller->Animate(GetTimeTicks(kInitialTickTime + 0.5));
196 controller->UpdateState(true, NULL); 201 controller->UpdateState(true, NULL);
197 EXPECT_EQ(1u, registrar->active_animation_controllers().size()); 202 EXPECT_EQ(1u, registrar->active_animation_controllers().size());
198 203
199 controller->Animate(kInitialTickTime + 1.0); 204 controller->Animate(GetTimeTicks(kInitialTickTime + 1.0));
200 controller->UpdateState(true, NULL); 205 controller->UpdateState(true, NULL);
201 EXPECT_EQ(Animation::Finished, 206 EXPECT_EQ(Animation::Finished,
202 controller->GetAnimation(Animation::Opacity)->run_state()); 207 controller->GetAnimation(Animation::Opacity)->run_state());
203 EXPECT_EQ(1u, registrar->active_animation_controllers().size()); 208 EXPECT_EQ(1u, registrar->active_animation_controllers().size());
204 209
205 events.reset(new AnimationEventsVector); 210 events.reset(new AnimationEventsVector);
206 controller_impl->Animate(kInitialTickTime + 1.5); 211 controller_impl->Animate(GetTimeTicks(kInitialTickTime + 1.5));
207 controller_impl->UpdateState(true, events.get()); 212 controller_impl->UpdateState(true, events.get());
208 213
209 EXPECT_EQ(Animation::WaitingForDeletion, 214 EXPECT_EQ(Animation::WaitingForDeletion,
210 controller_impl->GetAnimation(Animation::Opacity)->run_state()); 215 controller_impl->GetAnimation(Animation::Opacity)->run_state());
211 // The impl thread controller should have de-activated. 216 // The impl thread controller should have de-activated.
212 EXPECT_EQ(0u, registrar_impl->active_animation_controllers().size()); 217 EXPECT_EQ(0u, registrar_impl->active_animation_controllers().size());
213 218
214 EXPECT_EQ(1u, events->size()); 219 EXPECT_EQ(1u, events->size());
215 controller->NotifyAnimationFinished((*events)[0]); 220 controller->NotifyAnimationFinished((*events)[0]);
216 controller->Animate(kInitialTickTime + 1.5); 221 controller->Animate(GetTimeTicks(kInitialTickTime + 1.5));
217 controller->UpdateState(true, NULL); 222 controller->UpdateState(true, NULL);
218 223
219 EXPECT_EQ(Animation::WaitingForDeletion, 224 EXPECT_EQ(Animation::WaitingForDeletion,
220 controller->GetAnimation(Animation::Opacity)->run_state()); 225 controller->GetAnimation(Animation::Opacity)->run_state());
221 // The main thread controller should have de-activated. 226 // The main thread controller should have de-activated.
222 EXPECT_EQ(0u, registrar->active_animation_controllers().size()); 227 EXPECT_EQ(0u, registrar->active_animation_controllers().size());
223 228
224 controller->PushAnimationUpdatesTo(controller_impl.get()); 229 controller->PushAnimationUpdatesTo(controller_impl.get());
225 EXPECT_FALSE(controller->has_any_animation()); 230 EXPECT_FALSE(controller->has_any_animation());
226 EXPECT_FALSE(controller_impl->has_any_animation()); 231 EXPECT_FALSE(controller_impl->has_any_animation());
(...skipping 22 matching lines...) Expand all
249 254
250 controller->PushAnimationUpdatesTo(controller_impl.get()); 255 controller->PushAnimationUpdatesTo(controller_impl.get());
251 256
252 EXPECT_TRUE(controller_impl->GetAnimation(group_id, Animation::Opacity)); 257 EXPECT_TRUE(controller_impl->GetAnimation(group_id, Animation::Opacity));
253 EXPECT_EQ(Animation::WaitingForTargetAvailability, 258 EXPECT_EQ(Animation::WaitingForTargetAvailability,
254 controller_impl->GetAnimation(group_id, 259 controller_impl->GetAnimation(group_id,
255 Animation::Opacity)->run_state()); 260 Animation::Opacity)->run_state());
256 261
257 // Start the animations on each controller. 262 // Start the animations on each controller.
258 AnimationEventsVector events; 263 AnimationEventsVector events;
259 controller_impl->Animate(kInitialTickTime); 264 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
260 controller_impl->UpdateState(true, &events); 265 controller_impl->UpdateState(true, &events);
261 controller->Animate(kInitialTickTime); 266 controller->Animate(GetTimeTicks(kInitialTickTime));
262 controller->UpdateState(true, NULL); 267 controller->UpdateState(true, NULL);
263 EXPECT_EQ(Animation::Running, 268 EXPECT_EQ(Animation::Running,
264 controller_impl->GetAnimation(group_id, 269 controller_impl->GetAnimation(group_id,
265 Animation::Opacity)->run_state()); 270 Animation::Opacity)->run_state());
266 EXPECT_EQ(Animation::Running, 271 EXPECT_EQ(Animation::Running,
267 controller->GetAnimation(group_id, 272 controller->GetAnimation(group_id,
268 Animation::Opacity)->run_state()); 273 Animation::Opacity)->run_state());
269 274
270 // Pause the main-thread animation. 275 // Pause the main-thread animation.
271 controller->PauseAnimation(animation_id, kInitialTickTime + 1.0); 276 controller->PauseAnimation(animation_id,
277 GetTimeTicks(kInitialTickTime + 1.0));
272 EXPECT_EQ(Animation::Paused, 278 EXPECT_EQ(Animation::Paused,
273 controller->GetAnimation(group_id, 279 controller->GetAnimation(group_id,
274 Animation::Opacity)->run_state()); 280 Animation::Opacity)->run_state());
275 281
276 // The pause run state change should make it to the impl thread controller. 282 // The pause run state change should make it to the impl thread controller.
277 controller->PushAnimationUpdatesTo(controller_impl.get()); 283 controller->PushAnimationUpdatesTo(controller_impl.get());
278 EXPECT_EQ(Animation::Paused, 284 EXPECT_EQ(Animation::Paused,
279 controller_impl->GetAnimation(group_id, 285 controller_impl->GetAnimation(group_id,
280 Animation::Opacity)->run_state()); 286 Animation::Opacity)->run_state());
281 } 287 }
(...skipping 19 matching lines...) Expand all
301 EXPECT_TRUE(controller_impl->GetAnimation(group_id, Animation::Opacity)); 307 EXPECT_TRUE(controller_impl->GetAnimation(group_id, Animation::Opacity));
302 EXPECT_EQ(Animation::WaitingForTargetAvailability, 308 EXPECT_EQ(Animation::WaitingForTargetAvailability,
303 controller_impl->GetAnimation(group_id, 309 controller_impl->GetAnimation(group_id,
304 Animation::Opacity)->run_state()); 310 Animation::Opacity)->run_state());
305 311
306 // Notify main thread controller that the animation has started. 312 // Notify main thread controller that the animation has started.
307 AnimationEvent animation_started_event(AnimationEvent::Started, 313 AnimationEvent animation_started_event(AnimationEvent::Started,
308 0, 314 0,
309 group_id, 315 group_id,
310 Animation::Opacity, 316 Animation::Opacity,
311 kInitialTickTime); 317 GetTimeTicks(kInitialTickTime));
312 controller->NotifyAnimationStarted(animation_started_event); 318 controller->NotifyAnimationStarted(animation_started_event);
313 319
314 // Force animation to complete on impl thread. 320 // Force animation to complete on impl thread.
315 controller_impl->RemoveAnimation(animation_id); 321 controller_impl->RemoveAnimation(animation_id);
316 322
317 EXPECT_FALSE(controller_impl->GetAnimation(group_id, Animation::Opacity)); 323 EXPECT_FALSE(controller_impl->GetAnimation(group_id, Animation::Opacity));
318 324
319 controller->PushAnimationUpdatesTo(controller_impl.get()); 325 controller->PushAnimationUpdatesTo(controller_impl.get());
320 326
321 // Even though the main thread has a 'new' animation, it should not be pushed 327 // Even though the main thread has a 'new' animation, it should not be pushed
322 // because the animation has already completed on the impl thread. 328 // because the animation has already completed on the impl thread.
323 EXPECT_FALSE(controller_impl->GetAnimation(group_id, Animation::Opacity)); 329 EXPECT_FALSE(controller_impl->GetAnimation(group_id, Animation::Opacity));
324 } 330 }
325 331
326 // Ensure that a finished animation is eventually deleted by both the 332 // Ensure that a finished animation is eventually deleted by both the
327 // main-thread and the impl-thread controllers. 333 // main-thread and the impl-thread controllers.
328 TEST(LayerAnimationControllerTest, AnimationsAreDeleted) { 334 TEST(LayerAnimationControllerTest, AnimationsAreDeleted) {
329 FakeLayerAnimationValueObserver dummy; 335 FakeLayerAnimationValueObserver dummy;
330 FakeLayerAnimationValueObserver dummy_impl; 336 FakeLayerAnimationValueObserver dummy_impl;
331 scoped_ptr<AnimationEventsVector> events( 337 scoped_ptr<AnimationEventsVector> events(
332 make_scoped_ptr(new AnimationEventsVector)); 338 make_scoped_ptr(new AnimationEventsVector));
333 scoped_refptr<LayerAnimationController> controller( 339 scoped_refptr<LayerAnimationController> controller(
334 LayerAnimationController::Create(0)); 340 LayerAnimationController::Create(0));
335 scoped_refptr<LayerAnimationController> controller_impl( 341 scoped_refptr<LayerAnimationController> controller_impl(
336 LayerAnimationController::Create(0)); 342 LayerAnimationController::Create(0));
337 controller->AddValueObserver(&dummy); 343 controller->AddValueObserver(&dummy);
338 controller_impl->AddValueObserver(&dummy_impl); 344 controller_impl->AddValueObserver(&dummy_impl);
339 345
340 AddOpacityTransitionToController(controller.get(), 1.0, 0.0f, 1.0f, false); 346 AddOpacityTransitionToController(controller.get(), 1.0, 0.0f, 1.0f, false);
341 controller->Animate(kInitialTickTime); 347 controller->Animate(GetTimeTicks(kInitialTickTime));
342 controller->UpdateState(true, NULL); 348 controller->UpdateState(true, NULL);
343 controller->PushAnimationUpdatesTo(controller_impl.get()); 349 controller->PushAnimationUpdatesTo(controller_impl.get());
344 350
345 controller_impl->Animate(kInitialTickTime + 0.5); 351 controller_impl->Animate(GetTimeTicks(kInitialTickTime + 0.5));
346 controller_impl->UpdateState(true, events.get()); 352 controller_impl->UpdateState(true, events.get());
347 353
348 // There should be a Started event for the animation. 354 // There should be a Started event for the animation.
349 EXPECT_EQ(1u, events->size()); 355 EXPECT_EQ(1u, events->size());
350 EXPECT_EQ(AnimationEvent::Started, (*events)[0].type); 356 EXPECT_EQ(AnimationEvent::Started, (*events)[0].type);
351 controller->NotifyAnimationStarted((*events)[0]); 357 controller->NotifyAnimationStarted((*events)[0]);
352 358
353 controller->Animate(kInitialTickTime + 1.0); 359 controller->Animate(GetTimeTicks(kInitialTickTime + 1.0));
354 controller->UpdateState(true, NULL); 360 controller->UpdateState(true, NULL);
355 361
356 EXPECT_FALSE(dummy.animation_waiting_for_deletion()); 362 EXPECT_FALSE(dummy.animation_waiting_for_deletion());
357 EXPECT_FALSE(dummy_impl.animation_waiting_for_deletion()); 363 EXPECT_FALSE(dummy_impl.animation_waiting_for_deletion());
358 364
359 events.reset(new AnimationEventsVector); 365 events.reset(new AnimationEventsVector);
360 controller_impl->Animate(kInitialTickTime + 2.0); 366 controller_impl->Animate(GetTimeTicks(kInitialTickTime + 2.0));
361 controller_impl->UpdateState(true, events.get()); 367 controller_impl->UpdateState(true, events.get());
362 368
363 EXPECT_TRUE(dummy_impl.animation_waiting_for_deletion()); 369 EXPECT_TRUE(dummy_impl.animation_waiting_for_deletion());
364 370
365 // There should be a Finished event for the animation. 371 // There should be a Finished event for the animation.
366 EXPECT_EQ(1u, events->size()); 372 EXPECT_EQ(1u, events->size());
367 EXPECT_EQ(AnimationEvent::Finished, (*events)[0].type); 373 EXPECT_EQ(AnimationEvent::Finished, (*events)[0].type);
368 374
369 // Neither controller should have deleted the animation yet. 375 // Neither controller should have deleted the animation yet.
370 EXPECT_TRUE(controller->GetAnimation(Animation::Opacity)); 376 EXPECT_TRUE(controller->GetAnimation(Animation::Opacity));
371 EXPECT_TRUE(controller_impl->GetAnimation(Animation::Opacity)); 377 EXPECT_TRUE(controller_impl->GetAnimation(Animation::Opacity));
372 378
373 controller->NotifyAnimationFinished((*events)[0]); 379 controller->NotifyAnimationFinished((*events)[0]);
374 380
375 controller->Animate(kInitialTickTime + 3.0); 381 controller->Animate(GetTimeTicks(kInitialTickTime + 3.0));
376 controller->UpdateState(true, NULL); 382 controller->UpdateState(true, NULL);
377 EXPECT_TRUE(dummy.animation_waiting_for_deletion()); 383 EXPECT_TRUE(dummy.animation_waiting_for_deletion());
378 384
379 controller->PushAnimationUpdatesTo(controller_impl.get()); 385 controller->PushAnimationUpdatesTo(controller_impl.get());
380 386
381 // Both controllers should now have deleted the animation. 387 // Both controllers should now have deleted the animation.
382 EXPECT_FALSE(controller->has_any_animation()); 388 EXPECT_FALSE(controller->has_any_animation());
383 EXPECT_FALSE(controller_impl->has_any_animation()); 389 EXPECT_FALSE(controller_impl->has_any_animation());
384 } 390 }
385 391
(...skipping 16 matching lines...) Expand all
402 scoped_refptr<LayerAnimationController> controller( 408 scoped_refptr<LayerAnimationController> controller(
403 LayerAnimationController::Create(0)); 409 LayerAnimationController::Create(0));
404 controller->AddValueObserver(&dummy); 410 controller->AddValueObserver(&dummy);
405 411
406 scoped_ptr<Animation> to_add(CreateAnimation( 412 scoped_ptr<Animation> to_add(CreateAnimation(
407 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 413 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
408 1, 414 1,
409 Animation::Opacity)); 415 Animation::Opacity));
410 416
411 controller->AddAnimation(to_add.Pass()); 417 controller->AddAnimation(to_add.Pass());
412 controller->Animate(kInitialTickTime); 418 controller->Animate(GetTimeTicks(kInitialTickTime));
413 controller->UpdateState(true, events.get()); 419 controller->UpdateState(true, events.get());
414 EXPECT_TRUE(controller->HasActiveAnimation()); 420 EXPECT_TRUE(controller->HasActiveAnimation());
415 EXPECT_EQ(0.f, dummy.opacity()); 421 EXPECT_EQ(0.f, dummy.opacity());
416 // A non-impl-only animation should not generate property updates. 422 // A non-impl-only animation should not generate property updates.
417 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); 423 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get());
418 EXPECT_FALSE(event); 424 EXPECT_FALSE(event);
419 controller->Animate(kInitialTickTime + 1.0); 425 controller->Animate(GetTimeTicks(kInitialTickTime + 1.0));
420 controller->UpdateState(true, events.get()); 426 controller->UpdateState(true, events.get());
421 EXPECT_EQ(1.f, dummy.opacity()); 427 EXPECT_EQ(1.f, dummy.opacity());
422 EXPECT_FALSE(controller->HasActiveAnimation()); 428 EXPECT_FALSE(controller->HasActiveAnimation());
423 event = GetMostRecentPropertyUpdateEvent(events.get()); 429 event = GetMostRecentPropertyUpdateEvent(events.get());
424 EXPECT_FALSE(event); 430 EXPECT_FALSE(event);
425 } 431 }
426 432
427 TEST(LayerAnimationControllerTest, TrivialTransitionOnImpl) { 433 TEST(LayerAnimationControllerTest, TrivialTransitionOnImpl) {
428 scoped_ptr<AnimationEventsVector> events( 434 scoped_ptr<AnimationEventsVector> events(
429 make_scoped_ptr(new AnimationEventsVector)); 435 make_scoped_ptr(new AnimationEventsVector));
430 FakeLayerAnimationValueObserver dummy_impl; 436 FakeLayerAnimationValueObserver dummy_impl;
431 scoped_refptr<LayerAnimationController> controller_impl( 437 scoped_refptr<LayerAnimationController> controller_impl(
432 LayerAnimationController::Create(0)); 438 LayerAnimationController::Create(0));
433 controller_impl->AddValueObserver(&dummy_impl); 439 controller_impl->AddValueObserver(&dummy_impl);
434 440
435 scoped_ptr<Animation> to_add(CreateAnimation( 441 scoped_ptr<Animation> to_add(CreateAnimation(
436 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 442 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
437 1, 443 1,
438 Animation::Opacity)); 444 Animation::Opacity));
439 to_add->set_is_impl_only(true); 445 to_add->set_is_impl_only(true);
440 446
441 controller_impl->AddAnimation(to_add.Pass()); 447 controller_impl->AddAnimation(to_add.Pass());
442 controller_impl->Animate(kInitialTickTime); 448 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
443 controller_impl->UpdateState(true, events.get()); 449 controller_impl->UpdateState(true, events.get());
444 EXPECT_TRUE(controller_impl->HasActiveAnimation()); 450 EXPECT_TRUE(controller_impl->HasActiveAnimation());
445 EXPECT_EQ(0.f, dummy_impl.opacity()); 451 EXPECT_EQ(0.f, dummy_impl.opacity());
446 EXPECT_EQ(2u, events->size()); 452 EXPECT_EQ(2u, events->size());
447 const AnimationEvent* start_opacity_event = 453 const AnimationEvent* start_opacity_event =
448 GetMostRecentPropertyUpdateEvent(events.get()); 454 GetMostRecentPropertyUpdateEvent(events.get());
449 EXPECT_EQ(0.f, start_opacity_event->opacity); 455 EXPECT_EQ(0.f, start_opacity_event->opacity);
450 456
451 controller_impl->Animate(kInitialTickTime + 1.0); 457 controller_impl->Animate(GetTimeTicks(kInitialTickTime + 1.0));
452 controller_impl->UpdateState(true, events.get()); 458 controller_impl->UpdateState(true, events.get());
453 EXPECT_EQ(1.f, dummy_impl.opacity()); 459 EXPECT_EQ(1.f, dummy_impl.opacity());
454 EXPECT_FALSE(controller_impl->HasActiveAnimation()); 460 EXPECT_FALSE(controller_impl->HasActiveAnimation());
455 EXPECT_EQ(4u, events->size()); 461 EXPECT_EQ(4u, events->size());
456 const AnimationEvent* end_opacity_event = 462 const AnimationEvent* end_opacity_event =
457 GetMostRecentPropertyUpdateEvent(events.get()); 463 GetMostRecentPropertyUpdateEvent(events.get());
458 EXPECT_EQ(1.f, end_opacity_event->opacity); 464 EXPECT_EQ(1.f, end_opacity_event->opacity);
459 } 465 }
460 466
461 TEST(LayerAnimationControllerTest, TrivialTransformOnImpl) { 467 TEST(LayerAnimationControllerTest, TrivialTransformOnImpl) {
(...skipping 19 matching lines...) Expand all
481 operations.AppendTranslate(delta_x, delta_y, 0); 487 operations.AppendTranslate(delta_x, delta_y, 0);
482 curve->AddKeyframe( 488 curve->AddKeyframe(
483 TransformKeyframe::Create(1, operations, scoped_ptr<TimingFunction>())); 489 TransformKeyframe::Create(1, operations, scoped_ptr<TimingFunction>()));
484 490
485 scoped_ptr<Animation> animation(Animation::Create( 491 scoped_ptr<Animation> animation(Animation::Create(
486 curve.PassAs<AnimationCurve>(), 1, 0, Animation::Transform)); 492 curve.PassAs<AnimationCurve>(), 1, 0, Animation::Transform));
487 animation->set_is_impl_only(true); 493 animation->set_is_impl_only(true);
488 controller_impl->AddAnimation(animation.Pass()); 494 controller_impl->AddAnimation(animation.Pass());
489 495
490 // Run animation. 496 // Run animation.
491 controller_impl->Animate(kInitialTickTime); 497 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
492 controller_impl->UpdateState(true, events.get()); 498 controller_impl->UpdateState(true, events.get());
493 EXPECT_TRUE(controller_impl->HasActiveAnimation()); 499 EXPECT_TRUE(controller_impl->HasActiveAnimation());
494 EXPECT_EQ(gfx::Transform(), dummy_impl.transform()); 500 EXPECT_EQ(gfx::Transform(), dummy_impl.transform());
495 EXPECT_EQ(2u, events->size()); 501 EXPECT_EQ(2u, events->size());
496 const AnimationEvent* start_transform_event = 502 const AnimationEvent* start_transform_event =
497 GetMostRecentPropertyUpdateEvent(events.get()); 503 GetMostRecentPropertyUpdateEvent(events.get());
498 ASSERT_TRUE(start_transform_event); 504 ASSERT_TRUE(start_transform_event);
499 EXPECT_EQ(gfx::Transform(), start_transform_event->transform); 505 EXPECT_EQ(gfx::Transform(), start_transform_event->transform);
500 EXPECT_TRUE(start_transform_event->is_impl_only); 506 EXPECT_TRUE(start_transform_event->is_impl_only);
501 507
502 gfx::Transform expected_transform; 508 gfx::Transform expected_transform;
503 expected_transform.Translate(delta_x, delta_y); 509 expected_transform.Translate(delta_x, delta_y);
504 510
505 controller_impl->Animate(kInitialTickTime + 1.0); 511 controller_impl->Animate(GetTimeTicks(kInitialTickTime + 1.0));
506 controller_impl->UpdateState(true, events.get()); 512 controller_impl->UpdateState(true, events.get());
507 EXPECT_EQ(expected_transform, dummy_impl.transform()); 513 EXPECT_EQ(expected_transform, dummy_impl.transform());
508 EXPECT_FALSE(controller_impl->HasActiveAnimation()); 514 EXPECT_FALSE(controller_impl->HasActiveAnimation());
509 EXPECT_EQ(4u, events->size()); 515 EXPECT_EQ(4u, events->size());
510 const AnimationEvent* end_transform_event = 516 const AnimationEvent* end_transform_event =
511 GetMostRecentPropertyUpdateEvent(events.get()); 517 GetMostRecentPropertyUpdateEvent(events.get());
512 EXPECT_EQ(expected_transform, end_transform_event->transform); 518 EXPECT_EQ(expected_transform, end_transform_event->transform);
513 EXPECT_TRUE(end_transform_event->is_impl_only); 519 EXPECT_TRUE(end_transform_event->is_impl_only);
514 } 520 }
515 521
(...skipping 14 matching lines...) Expand all
530 FilterKeyframe::Create(0, start_filters, scoped_ptr<TimingFunction>())); 536 FilterKeyframe::Create(0, start_filters, scoped_ptr<TimingFunction>()));
531 FilterOperations end_filters; 537 FilterOperations end_filters;
532 end_filters.Append(FilterOperation::CreateBrightnessFilter(2.f)); 538 end_filters.Append(FilterOperation::CreateBrightnessFilter(2.f));
533 curve->AddKeyframe( 539 curve->AddKeyframe(
534 FilterKeyframe::Create(1, end_filters, scoped_ptr<TimingFunction>())); 540 FilterKeyframe::Create(1, end_filters, scoped_ptr<TimingFunction>()));
535 541
536 scoped_ptr<Animation> animation(Animation::Create( 542 scoped_ptr<Animation> animation(Animation::Create(
537 curve.PassAs<AnimationCurve>(), 1, 0, Animation::Filter)); 543 curve.PassAs<AnimationCurve>(), 1, 0, Animation::Filter));
538 controller->AddAnimation(animation.Pass()); 544 controller->AddAnimation(animation.Pass());
539 545
540 controller->Animate(kInitialTickTime); 546 controller->Animate(GetTimeTicks(kInitialTickTime));
541 controller->UpdateState(true, events.get()); 547 controller->UpdateState(true, events.get());
542 EXPECT_TRUE(controller->HasActiveAnimation()); 548 EXPECT_TRUE(controller->HasActiveAnimation());
543 EXPECT_EQ(start_filters, dummy.filters()); 549 EXPECT_EQ(start_filters, dummy.filters());
544 // A non-impl-only animation should not generate property updates. 550 // A non-impl-only animation should not generate property updates.
545 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); 551 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get());
546 EXPECT_FALSE(event); 552 EXPECT_FALSE(event);
547 553
548 controller->Animate(kInitialTickTime + 0.5); 554 controller->Animate(GetTimeTicks(kInitialTickTime + 0.5));
549 controller->UpdateState(true, events.get()); 555 controller->UpdateState(true, events.get());
550 EXPECT_EQ(1u, dummy.filters().size()); 556 EXPECT_EQ(1u, dummy.filters().size());
551 EXPECT_EQ(FilterOperation::CreateBrightnessFilter(1.5f), 557 EXPECT_EQ(FilterOperation::CreateBrightnessFilter(1.5f),
552 dummy.filters().at(0)); 558 dummy.filters().at(0));
553 event = GetMostRecentPropertyUpdateEvent(events.get()); 559 event = GetMostRecentPropertyUpdateEvent(events.get());
554 EXPECT_FALSE(event); 560 EXPECT_FALSE(event);
555 561
556 controller->Animate(kInitialTickTime + 1.0); 562 controller->Animate(GetTimeTicks(kInitialTickTime + 1.0));
557 controller->UpdateState(true, events.get()); 563 controller->UpdateState(true, events.get());
558 EXPECT_EQ(end_filters, dummy.filters()); 564 EXPECT_EQ(end_filters, dummy.filters());
559 EXPECT_FALSE(controller->HasActiveAnimation()); 565 EXPECT_FALSE(controller->HasActiveAnimation());
560 event = GetMostRecentPropertyUpdateEvent(events.get()); 566 event = GetMostRecentPropertyUpdateEvent(events.get());
561 EXPECT_FALSE(event); 567 EXPECT_FALSE(event);
562 } 568 }
563 569
564 TEST(LayerAnimationControllerTest, FilterTransitionOnImplOnly) { 570 TEST(LayerAnimationControllerTest, FilterTransitionOnImplOnly) {
565 scoped_ptr<AnimationEventsVector> events( 571 scoped_ptr<AnimationEventsVector> events(
566 make_scoped_ptr(new AnimationEventsVector)); 572 make_scoped_ptr(new AnimationEventsVector));
(...skipping 14 matching lines...) Expand all
581 end_filters.Append(FilterOperation::CreateBrightnessFilter(2.f)); 587 end_filters.Append(FilterOperation::CreateBrightnessFilter(2.f));
582 curve->AddKeyframe( 588 curve->AddKeyframe(
583 FilterKeyframe::Create(1, end_filters, scoped_ptr<TimingFunction>())); 589 FilterKeyframe::Create(1, end_filters, scoped_ptr<TimingFunction>()));
584 590
585 scoped_ptr<Animation> animation(Animation::Create( 591 scoped_ptr<Animation> animation(Animation::Create(
586 curve.PassAs<AnimationCurve>(), 1, 0, Animation::Filter)); 592 curve.PassAs<AnimationCurve>(), 1, 0, Animation::Filter));
587 animation->set_is_impl_only(true); 593 animation->set_is_impl_only(true);
588 controller_impl->AddAnimation(animation.Pass()); 594 controller_impl->AddAnimation(animation.Pass());
589 595
590 // Run animation. 596 // Run animation.
591 controller_impl->Animate(kInitialTickTime); 597 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
592 controller_impl->UpdateState(true, events.get()); 598 controller_impl->UpdateState(true, events.get());
593 EXPECT_TRUE(controller_impl->HasActiveAnimation()); 599 EXPECT_TRUE(controller_impl->HasActiveAnimation());
594 EXPECT_EQ(start_filters, dummy_impl.filters()); 600 EXPECT_EQ(start_filters, dummy_impl.filters());
595 EXPECT_EQ(2u, events->size()); 601 EXPECT_EQ(2u, events->size());
596 const AnimationEvent* start_filter_event = 602 const AnimationEvent* start_filter_event =
597 GetMostRecentPropertyUpdateEvent(events.get()); 603 GetMostRecentPropertyUpdateEvent(events.get());
598 EXPECT_TRUE(start_filter_event); 604 EXPECT_TRUE(start_filter_event);
599 EXPECT_EQ(start_filters, start_filter_event->filters); 605 EXPECT_EQ(start_filters, start_filter_event->filters);
600 EXPECT_TRUE(start_filter_event->is_impl_only); 606 EXPECT_TRUE(start_filter_event->is_impl_only);
601 607
602 controller_impl->Animate(kInitialTickTime + 1.0); 608 controller_impl->Animate(GetTimeTicks(kInitialTickTime + 1.0));
603 controller_impl->UpdateState(true, events.get()); 609 controller_impl->UpdateState(true, events.get());
604 EXPECT_EQ(end_filters, dummy_impl.filters()); 610 EXPECT_EQ(end_filters, dummy_impl.filters());
605 EXPECT_FALSE(controller_impl->HasActiveAnimation()); 611 EXPECT_FALSE(controller_impl->HasActiveAnimation());
606 EXPECT_EQ(4u, events->size()); 612 EXPECT_EQ(4u, events->size());
607 const AnimationEvent* end_filter_event = 613 const AnimationEvent* end_filter_event =
608 GetMostRecentPropertyUpdateEvent(events.get()); 614 GetMostRecentPropertyUpdateEvent(events.get());
609 EXPECT_TRUE(end_filter_event); 615 EXPECT_TRUE(end_filter_event);
610 EXPECT_EQ(end_filters, end_filter_event->filters); 616 EXPECT_EQ(end_filters, end_filter_event->filters);
611 EXPECT_TRUE(end_filter_event->is_impl_only); 617 EXPECT_TRUE(end_filter_event->is_impl_only);
612 } 618 }
(...skipping 29 matching lines...) Expand all
642 dummy_provider_impl.set_scroll_offset(initial_value); 648 dummy_provider_impl.set_scroll_offset(initial_value);
643 controller->PushAnimationUpdatesTo(controller_impl.get()); 649 controller->PushAnimationUpdatesTo(controller_impl.get());
644 EXPECT_TRUE(controller_impl->GetAnimation(Animation::ScrollOffset)); 650 EXPECT_TRUE(controller_impl->GetAnimation(Animation::ScrollOffset));
645 double duration = controller_impl->GetAnimation( 651 double duration = controller_impl->GetAnimation(
646 Animation::ScrollOffset)->curve()->Duration(); 652 Animation::ScrollOffset)->curve()->Duration();
647 653
648 EXPECT_EQ( 654 EXPECT_EQ(
649 duration, 655 duration,
650 controller->GetAnimation(Animation::ScrollOffset)->curve()->Duration()); 656 controller->GetAnimation(Animation::ScrollOffset)->curve()->Duration());
651 657
652 controller->Animate(kInitialTickTime); 658 controller->Animate(GetTimeTicks(kInitialTickTime));
653 controller->UpdateState(true, NULL); 659 controller->UpdateState(true, NULL);
654 EXPECT_TRUE(controller->HasActiveAnimation()); 660 EXPECT_TRUE(controller->HasActiveAnimation());
655 EXPECT_EQ(initial_value, dummy.scroll_offset()); 661 EXPECT_EQ(initial_value, dummy.scroll_offset());
656 662
657 controller_impl->Animate(kInitialTickTime); 663 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
658 controller_impl->UpdateState(true, events.get()); 664 controller_impl->UpdateState(true, events.get());
659 EXPECT_TRUE(controller_impl->HasActiveAnimation()); 665 EXPECT_TRUE(controller_impl->HasActiveAnimation());
660 EXPECT_EQ(initial_value, dummy_impl.scroll_offset()); 666 EXPECT_EQ(initial_value, dummy_impl.scroll_offset());
661 // Scroll offset animations should not generate property updates. 667 // Scroll offset animations should not generate property updates.
662 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); 668 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get());
663 EXPECT_FALSE(event); 669 EXPECT_FALSE(event);
664 670
665 controller->NotifyAnimationStarted((*events)[0]); 671 controller->NotifyAnimationStarted((*events)[0]);
666 controller->Animate(kInitialTickTime + duration/2.0); 672 controller->Animate(GetTimeTicks(kInitialTickTime + dur) ation / 2.0);
667 controller->UpdateState(true, NULL); 673 controller->UpdateState(true, NULL);
668 EXPECT_TRUE(controller->HasActiveAnimation()); 674 EXPECT_TRUE(controller->HasActiveAnimation());
669 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(200.f, 250.f), dummy.scroll_offset()); 675 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(200.f, 250.f), dummy.scroll_offset());
670 676
671 controller_impl->Animate(kInitialTickTime + duration/2.0); 677 controller_impl->Animate(GetTimeTicks(kInitialTickTime + dur) ation / 2.0);
672 controller_impl->UpdateState(true, events.get()); 678 controller_impl->UpdateState(true, events.get());
673 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(200.f, 250.f), 679 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(200.f, 250.f),
674 dummy_impl.scroll_offset()); 680 dummy_impl.scroll_offset());
675 event = GetMostRecentPropertyUpdateEvent(events.get()); 681 event = GetMostRecentPropertyUpdateEvent(events.get());
676 EXPECT_FALSE(event); 682 EXPECT_FALSE(event);
677 683
678 controller_impl->Animate(kInitialTickTime + duration); 684 controller_impl->Animate(GetTimeTicks(kInitialTickTime + dur) ation);
679 controller_impl->UpdateState(true, events.get()); 685 controller_impl->UpdateState(true, events.get());
680 EXPECT_VECTOR2DF_EQ(target_value, dummy_impl.scroll_offset()); 686 EXPECT_VECTOR2DF_EQ(target_value, dummy_impl.scroll_offset());
681 EXPECT_FALSE(controller_impl->HasActiveAnimation()); 687 EXPECT_FALSE(controller_impl->HasActiveAnimation());
682 event = GetMostRecentPropertyUpdateEvent(events.get()); 688 event = GetMostRecentPropertyUpdateEvent(events.get());
683 EXPECT_FALSE(event); 689 EXPECT_FALSE(event);
684 690
685 controller->Animate(kInitialTickTime + duration); 691 controller->Animate(GetTimeTicks(kInitialTickTime + dur) ation);
686 controller->UpdateState(true, NULL); 692 controller->UpdateState(true, NULL);
687 EXPECT_VECTOR2DF_EQ(target_value, dummy.scroll_offset()); 693 EXPECT_VECTOR2DF_EQ(target_value, dummy.scroll_offset());
688 EXPECT_FALSE(controller->HasActiveAnimation()); 694 EXPECT_FALSE(controller->HasActiveAnimation());
689 } 695 }
690 696
691 // Ensure that when the impl controller doesn't have a value provider, 697 // Ensure that when the impl controller doesn't have a value provider,
692 // the main-thread controller's value provider is used to obtain the intial 698 // the main-thread controller's value provider is used to obtain the intial
693 // scroll offset. 699 // scroll offset.
694 TEST(LayerAnimationControllerTest, ScrollOffsetTransitionNoImplProvider) { 700 TEST(LayerAnimationControllerTest, ScrollOffsetTransitionNoImplProvider) {
695 FakeLayerAnimationValueObserver dummy_impl; 701 FakeLayerAnimationValueObserver dummy_impl;
(...skipping 24 matching lines...) Expand all
720 dummy_provider.set_scroll_offset(initial_value); 726 dummy_provider.set_scroll_offset(initial_value);
721 controller->PushAnimationUpdatesTo(controller_impl.get()); 727 controller->PushAnimationUpdatesTo(controller_impl.get());
722 EXPECT_TRUE(controller_impl->GetAnimation(Animation::ScrollOffset)); 728 EXPECT_TRUE(controller_impl->GetAnimation(Animation::ScrollOffset));
723 double duration = controller_impl->GetAnimation( 729 double duration = controller_impl->GetAnimation(
724 Animation::ScrollOffset)->curve()->Duration(); 730 Animation::ScrollOffset)->curve()->Duration();
725 731
726 EXPECT_EQ( 732 EXPECT_EQ(
727 duration, 733 duration,
728 controller->GetAnimation(Animation::ScrollOffset)->curve()->Duration()); 734 controller->GetAnimation(Animation::ScrollOffset)->curve()->Duration());
729 735
730 controller->Animate(kInitialTickTime); 736 controller->Animate(GetTimeTicks(kInitialTickTime));
731 controller->UpdateState(true, NULL); 737 controller->UpdateState(true, NULL);
732 EXPECT_TRUE(controller->HasActiveAnimation()); 738 EXPECT_TRUE(controller->HasActiveAnimation());
733 EXPECT_EQ(initial_value, dummy.scroll_offset()); 739 EXPECT_EQ(initial_value, dummy.scroll_offset());
734 740
735 controller_impl->Animate(kInitialTickTime); 741 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
736 controller_impl->UpdateState(true, events.get()); 742 controller_impl->UpdateState(true, events.get());
737 EXPECT_TRUE(controller_impl->HasActiveAnimation()); 743 EXPECT_TRUE(controller_impl->HasActiveAnimation());
738 EXPECT_EQ(initial_value, dummy_impl.scroll_offset()); 744 EXPECT_EQ(initial_value, dummy_impl.scroll_offset());
739 // Scroll offset animations should not generate property updates. 745 // Scroll offset animations should not generate property updates.
740 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); 746 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get());
741 EXPECT_FALSE(event); 747 EXPECT_FALSE(event);
742 748
743 controller->NotifyAnimationStarted((*events)[0]); 749 controller->NotifyAnimationStarted((*events)[0]);
744 controller->Animate(kInitialTickTime + duration/2.0); 750 controller->Animate(GetTimeTicks(kInitialTickTime + dur) ation / 2.0);
745 controller->UpdateState(true, NULL); 751 controller->UpdateState(true, NULL);
746 EXPECT_TRUE(controller->HasActiveAnimation()); 752 EXPECT_TRUE(controller->HasActiveAnimation());
747 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(400.f, 150.f), dummy.scroll_offset()); 753 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(400.f, 150.f), dummy.scroll_offset());
748 754
749 controller_impl->Animate(kInitialTickTime + duration/2.0); 755 controller_impl->Animate(GetTimeTicks(kInitialTickTime + dur) ation / 2.0);
750 controller_impl->UpdateState(true, events.get()); 756 controller_impl->UpdateState(true, events.get());
751 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(400.f, 150.f), 757 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(400.f, 150.f),
752 dummy_impl.scroll_offset()); 758 dummy_impl.scroll_offset());
753 event = GetMostRecentPropertyUpdateEvent(events.get()); 759 event = GetMostRecentPropertyUpdateEvent(events.get());
754 EXPECT_FALSE(event); 760 EXPECT_FALSE(event);
755 761
756 controller_impl->Animate(kInitialTickTime + duration); 762 controller_impl->Animate(GetTimeTicks(kInitialTickTime + dur) ation);
757 controller_impl->UpdateState(true, events.get()); 763 controller_impl->UpdateState(true, events.get());
758 EXPECT_VECTOR2DF_EQ(target_value, dummy_impl.scroll_offset()); 764 EXPECT_VECTOR2DF_EQ(target_value, dummy_impl.scroll_offset());
759 EXPECT_FALSE(controller_impl->HasActiveAnimation()); 765 EXPECT_FALSE(controller_impl->HasActiveAnimation());
760 event = GetMostRecentPropertyUpdateEvent(events.get()); 766 event = GetMostRecentPropertyUpdateEvent(events.get());
761 EXPECT_FALSE(event); 767 EXPECT_FALSE(event);
762 768
763 controller->Animate(kInitialTickTime + duration); 769 controller->Animate(GetTimeTicks(kInitialTickTime + dur) ation);
764 controller->UpdateState(true, NULL); 770 controller->UpdateState(true, NULL);
765 EXPECT_VECTOR2DF_EQ(target_value, dummy.scroll_offset()); 771 EXPECT_VECTOR2DF_EQ(target_value, dummy.scroll_offset());
766 EXPECT_FALSE(controller->HasActiveAnimation()); 772 EXPECT_FALSE(controller->HasActiveAnimation());
767 } 773 }
768 774
769 TEST(LayerAnimationControllerTest, ScrollOffsetTransitionOnImplOnly) { 775 TEST(LayerAnimationControllerTest, ScrollOffsetTransitionOnImplOnly) {
770 FakeLayerAnimationValueObserver dummy_impl; 776 FakeLayerAnimationValueObserver dummy_impl;
771 scoped_refptr<LayerAnimationController> controller_impl( 777 scoped_refptr<LayerAnimationController> controller_impl(
772 LayerAnimationController::Create(0)); 778 LayerAnimationController::Create(0));
773 controller_impl->AddValueObserver(&dummy_impl); 779 controller_impl->AddValueObserver(&dummy_impl);
774 scoped_ptr<AnimationEventsVector> events( 780 scoped_ptr<AnimationEventsVector> events(
775 make_scoped_ptr(new AnimationEventsVector)); 781 make_scoped_ptr(new AnimationEventsVector));
776 782
777 gfx::Vector2dF initial_value(100.f, 300.f); 783 gfx::Vector2dF initial_value(100.f, 300.f);
778 gfx::Vector2dF target_value(300.f, 200.f); 784 gfx::Vector2dF target_value(300.f, 200.f);
779 scoped_ptr<ScrollOffsetAnimationCurve> curve( 785 scoped_ptr<ScrollOffsetAnimationCurve> curve(
780 ScrollOffsetAnimationCurve::Create( 786 ScrollOffsetAnimationCurve::Create(
781 target_value, 787 target_value,
782 EaseInOutTimingFunction::Create().Pass())); 788 EaseInOutTimingFunction::Create().Pass()));
783 curve->SetInitialValue(initial_value); 789 curve->SetInitialValue(initial_value);
784 double duration = curve->Duration(); 790 double duration = curve->Duration();
785 791
786 scoped_ptr<Animation> animation(Animation::Create( 792 scoped_ptr<Animation> animation(Animation::Create(
787 curve.PassAs<AnimationCurve>(), 1, 0, Animation::ScrollOffset)); 793 curve.PassAs<AnimationCurve>(), 1, 0, Animation::ScrollOffset));
788 animation->set_is_impl_only(true); 794 animation->set_is_impl_only(true);
789 controller_impl->AddAnimation(animation.Pass()); 795 controller_impl->AddAnimation(animation.Pass());
790 796
791 controller_impl->Animate(kInitialTickTime); 797 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
792 controller_impl->UpdateState(true, events.get()); 798 controller_impl->UpdateState(true, events.get());
793 EXPECT_TRUE(controller_impl->HasActiveAnimation()); 799 EXPECT_TRUE(controller_impl->HasActiveAnimation());
794 EXPECT_EQ(initial_value, dummy_impl.scroll_offset()); 800 EXPECT_EQ(initial_value, dummy_impl.scroll_offset());
795 // Scroll offset animations should not generate property updates. 801 // Scroll offset animations should not generate property updates.
796 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get()); 802 const AnimationEvent* event = GetMostRecentPropertyUpdateEvent(events.get());
797 EXPECT_FALSE(event); 803 EXPECT_FALSE(event);
798 804
799 controller_impl->Animate(kInitialTickTime + duration/2.0); 805 controller_impl->Animate(GetTimeTicks(kInitialTickTime + dur) ation / 2.0);
800 controller_impl->UpdateState(true, events.get()); 806 controller_impl->UpdateState(true, events.get());
801 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(200.f, 250.f), 807 EXPECT_VECTOR2DF_EQ(gfx::Vector2dF(200.f, 250.f),
802 dummy_impl.scroll_offset()); 808 dummy_impl.scroll_offset());
803 event = GetMostRecentPropertyUpdateEvent(events.get()); 809 event = GetMostRecentPropertyUpdateEvent(events.get());
804 EXPECT_FALSE(event); 810 EXPECT_FALSE(event);
805 811
806 controller_impl->Animate(kInitialTickTime + duration); 812 controller_impl->Animate(GetTimeTicks(kInitialTickTime + dur) ation);
807 controller_impl->UpdateState(true, events.get()); 813 controller_impl->UpdateState(true, events.get());
808 EXPECT_VECTOR2DF_EQ(target_value, dummy_impl.scroll_offset()); 814 EXPECT_VECTOR2DF_EQ(target_value, dummy_impl.scroll_offset());
809 EXPECT_FALSE(controller_impl->HasActiveAnimation()); 815 EXPECT_FALSE(controller_impl->HasActiveAnimation());
810 event = GetMostRecentPropertyUpdateEvent(events.get()); 816 event = GetMostRecentPropertyUpdateEvent(events.get());
811 EXPECT_FALSE(event); 817 EXPECT_FALSE(event);
812 } 818 }
813 819
814 class FakeAnimationDelegate : public AnimationDelegate { 820 class FakeAnimationDelegate : public AnimationDelegate {
815 public: 821 public:
816 FakeAnimationDelegate() 822 FakeAnimationDelegate()
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 FakeAnimationDelegate delegate; 861 FakeAnimationDelegate delegate;
856 controller->set_layer_animation_delegate(&delegate); 862 controller->set_layer_animation_delegate(&delegate);
857 863
858 scoped_ptr<Animation> to_add(CreateAnimation( 864 scoped_ptr<Animation> to_add(CreateAnimation(
859 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 865 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
860 1, 866 1,
861 Animation::Opacity)); 867 Animation::Opacity));
862 to_add->set_is_impl_only(true); 868 to_add->set_is_impl_only(true);
863 controller_impl->AddAnimation(to_add.Pass()); 869 controller_impl->AddAnimation(to_add.Pass());
864 870
865 controller_impl->Animate(kInitialTickTime); 871 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
866 controller_impl->UpdateState(true, events.get()); 872 controller_impl->UpdateState(true, events.get());
867 873
868 // We should receive 2 events (a started notification and a property update). 874 // We should receive 2 events (a started notification and a property update).
869 EXPECT_EQ(2u, events->size()); 875 EXPECT_EQ(2u, events->size());
870 EXPECT_EQ(AnimationEvent::Started, (*events)[0].type); 876 EXPECT_EQ(AnimationEvent::Started, (*events)[0].type);
871 EXPECT_TRUE((*events)[0].is_impl_only); 877 EXPECT_TRUE((*events)[0].is_impl_only);
872 EXPECT_EQ(AnimationEvent::PropertyUpdate, (*events)[1].type); 878 EXPECT_EQ(AnimationEvent::PropertyUpdate, (*events)[1].type);
873 EXPECT_TRUE((*events)[1].is_impl_only); 879 EXPECT_TRUE((*events)[1].is_impl_only);
874 880
875 // Passing on the start event to the main thread controller should cause the 881 // Passing on the start event to the main thread controller should cause the
876 // delegate to get notified. 882 // delegate to get notified.
877 EXPECT_FALSE(delegate.started()); 883 EXPECT_FALSE(delegate.started());
878 controller->NotifyAnimationStarted((*events)[0]); 884 controller->NotifyAnimationStarted((*events)[0]);
879 EXPECT_TRUE(delegate.started()); 885 EXPECT_TRUE(delegate.started());
880 886
881 events.reset(new AnimationEventsVector); 887 events.reset(new AnimationEventsVector);
882 controller_impl->Animate(kInitialTickTime + 1.0); 888 controller_impl->Animate(GetTimeTicks(kInitialTickTime + 1.0));
883 controller_impl->UpdateState(true, events.get()); 889 controller_impl->UpdateState(true, events.get());
884 890
885 // We should receive 2 events (a finished notification and a property update). 891 // We should receive 2 events (a finished notification and a property update).
886 EXPECT_EQ(2u, events->size()); 892 EXPECT_EQ(2u, events->size());
887 EXPECT_EQ(AnimationEvent::Finished, (*events)[0].type); 893 EXPECT_EQ(AnimationEvent::Finished, (*events)[0].type);
888 EXPECT_TRUE((*events)[0].is_impl_only); 894 EXPECT_TRUE((*events)[0].is_impl_only);
889 EXPECT_EQ(AnimationEvent::PropertyUpdate, (*events)[1].type); 895 EXPECT_EQ(AnimationEvent::PropertyUpdate, (*events)[1].type);
890 EXPECT_TRUE((*events)[1].is_impl_only); 896 EXPECT_TRUE((*events)[1].is_impl_only);
891 897
892 // Passing on the finished event to the main thread controller should cause 898 // Passing on the finished event to the main thread controller should cause
(...skipping 16 matching lines...) Expand all
909 915
910 scoped_ptr<Animation> to_add(CreateAnimation( 916 scoped_ptr<Animation> to_add(CreateAnimation(
911 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 917 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
912 1, 918 1,
913 Animation::Opacity)); 919 Animation::Opacity));
914 to_add->set_needs_synchronized_start_time(true); 920 to_add->set_needs_synchronized_start_time(true);
915 921
916 // We should pause at the first keyframe indefinitely waiting for that 922 // We should pause at the first keyframe indefinitely waiting for that
917 // animation to start. 923 // animation to start.
918 controller->AddAnimation(to_add.Pass()); 924 controller->AddAnimation(to_add.Pass());
919 controller->Animate(kInitialTickTime); 925 controller->Animate(GetTimeTicks(kInitialTickTime));
920 controller->UpdateState(true, events.get()); 926 controller->UpdateState(true, events.get());
921 EXPECT_TRUE(controller->HasActiveAnimation()); 927 EXPECT_TRUE(controller->HasActiveAnimation());
922 EXPECT_EQ(0.f, dummy.opacity()); 928 EXPECT_EQ(0.f, dummy.opacity());
923 controller->Animate(kInitialTickTime + 1.0); 929 controller->Animate(GetTimeTicks(kInitialTickTime + 1.0));
924 controller->UpdateState(true, events.get()); 930 controller->UpdateState(true, events.get());
925 EXPECT_TRUE(controller->HasActiveAnimation()); 931 EXPECT_TRUE(controller->HasActiveAnimation());
926 EXPECT_EQ(0.f, dummy.opacity()); 932 EXPECT_EQ(0.f, dummy.opacity());
927 controller->Animate(kInitialTickTime + 2.0); 933 controller->Animate(GetTimeTicks(kInitialTickTime + 2.0));
928 controller->UpdateState(true, events.get()); 934 controller->UpdateState(true, events.get());
929 EXPECT_TRUE(controller->HasActiveAnimation()); 935 EXPECT_TRUE(controller->HasActiveAnimation());
930 EXPECT_EQ(0.f, dummy.opacity()); 936 EXPECT_EQ(0.f, dummy.opacity());
931 937
932 // Send the synchronized start time. 938 // Send the synchronized start time.
933 controller->NotifyAnimationStarted(AnimationEvent( 939 controller->NotifyAnimationStarted(
934 AnimationEvent::Started, 0, 1, Animation::Opacity, kInitialTickTime + 2)); 940 AnimationEvent(AnimationEvent::Started,
935 controller->Animate(kInitialTickTime + 5.0); 941 0,
942 1,
943 Animation::Opacity,
944 GetTimeTicks(kInitialTickTime + 2)));
945 controller->Animate(GetTimeTicks(kInitialTickTime + 5.0));
936 controller->UpdateState(true, events.get()); 946 controller->UpdateState(true, events.get());
937 EXPECT_EQ(1.f, dummy.opacity()); 947 EXPECT_EQ(1.f, dummy.opacity());
938 EXPECT_FALSE(controller->HasActiveAnimation()); 948 EXPECT_FALSE(controller->HasActiveAnimation());
939 } 949 }
940 950
941 // Tests that two queued animations affecting the same property run in sequence. 951 // Tests that two queued animations affecting the same property run in sequence.
942 TEST(LayerAnimationControllerTest, TrivialQueuing) { 952 TEST(LayerAnimationControllerTest, TrivialQueuing) {
943 scoped_ptr<AnimationEventsVector> events( 953 scoped_ptr<AnimationEventsVector> events(
944 make_scoped_ptr(new AnimationEventsVector)); 954 make_scoped_ptr(new AnimationEventsVector));
945 FakeLayerAnimationValueObserver dummy; 955 FakeLayerAnimationValueObserver dummy;
946 scoped_refptr<LayerAnimationController> controller( 956 scoped_refptr<LayerAnimationController> controller(
947 LayerAnimationController::Create(0)); 957 LayerAnimationController::Create(0));
948 controller->AddValueObserver(&dummy); 958 controller->AddValueObserver(&dummy);
949 959
950 controller->AddAnimation(CreateAnimation( 960 controller->AddAnimation(CreateAnimation(
951 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 961 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
952 1, 962 1,
953 Animation::Opacity)); 963 Animation::Opacity));
954 controller->AddAnimation(CreateAnimation( 964 controller->AddAnimation(CreateAnimation(
955 scoped_ptr<AnimationCurve>( 965 scoped_ptr<AnimationCurve>(
956 new FakeFloatTransition(1.0, 1.f, 0.5f)).Pass(), 966 new FakeFloatTransition(1.0, 1.f, 0.5f)).Pass(),
957 2, 967 2,
958 Animation::Opacity)); 968 Animation::Opacity));
959 969
960 controller->Animate(kInitialTickTime); 970 controller->Animate(GetTimeTicks(kInitialTickTime));
961 controller->UpdateState(true, events.get()); 971 controller->UpdateState(true, events.get());
962 EXPECT_TRUE(controller->HasActiveAnimation()); 972 EXPECT_TRUE(controller->HasActiveAnimation());
963 EXPECT_EQ(0.f, dummy.opacity()); 973 EXPECT_EQ(0.f, dummy.opacity());
964 controller->Animate(kInitialTickTime + 1.0); 974 controller->Animate(GetTimeTicks(kInitialTickTime + 1.0));
965 controller->UpdateState(true, events.get()); 975 controller->UpdateState(true, events.get());
966 EXPECT_TRUE(controller->HasActiveAnimation()); 976 EXPECT_TRUE(controller->HasActiveAnimation());
967 EXPECT_EQ(1.f, dummy.opacity()); 977 EXPECT_EQ(1.f, dummy.opacity());
968 controller->Animate(kInitialTickTime + 2.0); 978 controller->Animate(GetTimeTicks(kInitialTickTime + 2.0));
969 controller->UpdateState(true, events.get()); 979 controller->UpdateState(true, events.get());
970 EXPECT_EQ(0.5f, dummy.opacity()); 980 EXPECT_EQ(0.5f, dummy.opacity());
971 EXPECT_FALSE(controller->HasActiveAnimation()); 981 EXPECT_FALSE(controller->HasActiveAnimation());
972 } 982 }
973 983
974 // Tests interrupting a transition with another transition. 984 // Tests interrupting a transition with another transition.
975 TEST(LayerAnimationControllerTest, Interrupt) { 985 TEST(LayerAnimationControllerTest, Interrupt) {
976 scoped_ptr<AnimationEventsVector> events( 986 scoped_ptr<AnimationEventsVector> events(
977 make_scoped_ptr(new AnimationEventsVector)); 987 make_scoped_ptr(new AnimationEventsVector));
978 FakeLayerAnimationValueObserver dummy; 988 FakeLayerAnimationValueObserver dummy;
979 scoped_refptr<LayerAnimationController> controller( 989 scoped_refptr<LayerAnimationController> controller(
980 LayerAnimationController::Create(0)); 990 LayerAnimationController::Create(0));
981 controller->AddValueObserver(&dummy); 991 controller->AddValueObserver(&dummy);
982 controller->AddAnimation(CreateAnimation( 992 controller->AddAnimation(CreateAnimation(
983 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 993 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
984 1, 994 1,
985 Animation::Opacity)); 995 Animation::Opacity));
986 controller->Animate(kInitialTickTime); 996 controller->Animate(GetTimeTicks(kInitialTickTime));
987 controller->UpdateState(true, events.get()); 997 controller->UpdateState(true, events.get());
988 EXPECT_TRUE(controller->HasActiveAnimation()); 998 EXPECT_TRUE(controller->HasActiveAnimation());
989 EXPECT_EQ(0.f, dummy.opacity()); 999 EXPECT_EQ(0.f, dummy.opacity());
990 1000
991 scoped_ptr<Animation> to_add(CreateAnimation( 1001 scoped_ptr<Animation> to_add(CreateAnimation(
992 scoped_ptr<AnimationCurve>( 1002 scoped_ptr<AnimationCurve>(
993 new FakeFloatTransition(1.0, 1.f, 0.5f)).Pass(), 1003 new FakeFloatTransition(1.0, 1.f, 0.5f)).Pass(),
994 2, 1004 2,
995 Animation::Opacity)); 1005 Animation::Opacity));
996 controller->AbortAnimations(Animation::Opacity); 1006 controller->AbortAnimations(Animation::Opacity);
997 controller->AddAnimation(to_add.Pass()); 1007 controller->AddAnimation(to_add.Pass());
998 1008
999 // Since the previous animation was aborted, the new animation should start 1009 // Since the previous animation was aborted, the new animation should start
1000 // right in this call to animate. 1010 // right in this call to animate.
1001 controller->Animate(kInitialTickTime + 0.5); 1011 controller->Animate(GetTimeTicks(kInitialTickTime + 0.5));
1002 controller->UpdateState(true, events.get()); 1012 controller->UpdateState(true, events.get());
1003 EXPECT_TRUE(controller->HasActiveAnimation()); 1013 EXPECT_TRUE(controller->HasActiveAnimation());
1004 EXPECT_EQ(1.f, dummy.opacity()); 1014 EXPECT_EQ(1.f, dummy.opacity());
1005 controller->Animate(kInitialTickTime + 1.5); 1015 controller->Animate(GetTimeTicks(kInitialTickTime + 1.5));
1006 controller->UpdateState(true, events.get()); 1016 controller->UpdateState(true, events.get());
1007 EXPECT_EQ(0.5f, dummy.opacity()); 1017 EXPECT_EQ(0.5f, dummy.opacity());
1008 EXPECT_FALSE(controller->HasActiveAnimation()); 1018 EXPECT_FALSE(controller->HasActiveAnimation());
1009 } 1019 }
1010 1020
1011 // Tests scheduling two animations to run together when only one property is 1021 // Tests scheduling two animations to run together when only one property is
1012 // free. 1022 // free.
1013 TEST(LayerAnimationControllerTest, ScheduleTogetherWhenAPropertyIsBlocked) { 1023 TEST(LayerAnimationControllerTest, ScheduleTogetherWhenAPropertyIsBlocked) {
1014 scoped_ptr<AnimationEventsVector> events( 1024 scoped_ptr<AnimationEventsVector> events(
1015 make_scoped_ptr(new AnimationEventsVector)); 1025 make_scoped_ptr(new AnimationEventsVector));
1016 FakeLayerAnimationValueObserver dummy; 1026 FakeLayerAnimationValueObserver dummy;
1017 scoped_refptr<LayerAnimationController> controller( 1027 scoped_refptr<LayerAnimationController> controller(
1018 LayerAnimationController::Create(0)); 1028 LayerAnimationController::Create(0));
1019 controller->AddValueObserver(&dummy); 1029 controller->AddValueObserver(&dummy);
1020 1030
1021 controller->AddAnimation(CreateAnimation( 1031 controller->AddAnimation(CreateAnimation(
1022 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(), 1032 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(),
1023 1, 1033 1,
1024 Animation::Transform)); 1034 Animation::Transform));
1025 controller->AddAnimation(CreateAnimation( 1035 controller->AddAnimation(CreateAnimation(
1026 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(), 1036 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(),
1027 2, 1037 2,
1028 Animation::Transform)); 1038 Animation::Transform));
1029 controller->AddAnimation(CreateAnimation( 1039 controller->AddAnimation(CreateAnimation(
1030 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 1040 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
1031 2, 1041 2,
1032 Animation::Opacity)); 1042 Animation::Opacity));
1033 1043
1034 controller->Animate(kInitialTickTime); 1044 controller->Animate(GetTimeTicks(kInitialTickTime));
1035 controller->UpdateState(true, events.get()); 1045 controller->UpdateState(true, events.get());
1036 EXPECT_EQ(0.f, dummy.opacity()); 1046 EXPECT_EQ(0.f, dummy.opacity());
1037 EXPECT_TRUE(controller->HasActiveAnimation()); 1047 EXPECT_TRUE(controller->HasActiveAnimation());
1038 controller->Animate(kInitialTickTime + 1.0); 1048 controller->Animate(GetTimeTicks(kInitialTickTime + 1.0));
1039 controller->UpdateState(true, events.get()); 1049 controller->UpdateState(true, events.get());
1040 // Should not have started the float transition yet. 1050 // Should not have started the float transition yet.
1041 EXPECT_TRUE(controller->HasActiveAnimation()); 1051 EXPECT_TRUE(controller->HasActiveAnimation());
1042 EXPECT_EQ(0.f, dummy.opacity()); 1052 EXPECT_EQ(0.f, dummy.opacity());
1043 // The float animation should have started at time 1 and should be done. 1053 // The float animation should have started at time 1 and should be done.
1044 controller->Animate(kInitialTickTime + 2.0); 1054 controller->Animate(GetTimeTicks(kInitialTickTime + 2.0));
1045 controller->UpdateState(true, events.get()); 1055 controller->UpdateState(true, events.get());
1046 EXPECT_EQ(1.f, dummy.opacity()); 1056 EXPECT_EQ(1.f, dummy.opacity());
1047 EXPECT_FALSE(controller->HasActiveAnimation()); 1057 EXPECT_FALSE(controller->HasActiveAnimation());
1048 } 1058 }
1049 1059
1050 // Tests scheduling two animations to run together with different lengths and 1060 // Tests scheduling two animations to run together with different lengths and
1051 // another animation queued to start when the shorter animation finishes (should 1061 // another animation queued to start when the shorter animation finishes (should
1052 // wait for both to finish). 1062 // wait for both to finish).
1053 TEST(LayerAnimationControllerTest, ScheduleTogetherWithAnAnimWaiting) { 1063 TEST(LayerAnimationControllerTest, ScheduleTogetherWithAnAnimWaiting) {
1054 scoped_ptr<AnimationEventsVector> events( 1064 scoped_ptr<AnimationEventsVector> events(
(...skipping 11 matching lines...) Expand all
1066 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 1076 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
1067 1, 1077 1,
1068 Animation::Opacity)); 1078 Animation::Opacity));
1069 controller->AddAnimation(CreateAnimation( 1079 controller->AddAnimation(CreateAnimation(
1070 scoped_ptr<AnimationCurve>( 1080 scoped_ptr<AnimationCurve>(
1071 new FakeFloatTransition(1.0, 1.f, 0.5f)).Pass(), 1081 new FakeFloatTransition(1.0, 1.f, 0.5f)).Pass(),
1072 2, 1082 2,
1073 Animation::Opacity)); 1083 Animation::Opacity));
1074 1084
1075 // Animations with id 1 should both start now. 1085 // Animations with id 1 should both start now.
1076 controller->Animate(kInitialTickTime); 1086 controller->Animate(GetTimeTicks(kInitialTickTime));
1077 controller->UpdateState(true, events.get()); 1087 controller->UpdateState(true, events.get());
1078 EXPECT_TRUE(controller->HasActiveAnimation()); 1088 EXPECT_TRUE(controller->HasActiveAnimation());
1079 EXPECT_EQ(0.f, dummy.opacity()); 1089 EXPECT_EQ(0.f, dummy.opacity());
1080 // The opacity animation should have finished at time 1, but the group 1090 // The opacity animation should have finished at time 1, but the group
1081 // of animations with id 1 don't finish until time 2 because of the length 1091 // of animations with id 1 don't finish until time 2 because of the length
1082 // of the transform animation. 1092 // of the transform animation.
1083 controller->Animate(kInitialTickTime + 2.0); 1093 controller->Animate(GetTimeTicks(kInitialTickTime + 2.0));
1084 controller->UpdateState(true, events.get()); 1094 controller->UpdateState(true, events.get());
1085 // Should not have started the float transition yet. 1095 // Should not have started the float transition yet.
1086 EXPECT_TRUE(controller->HasActiveAnimation()); 1096 EXPECT_TRUE(controller->HasActiveAnimation());
1087 EXPECT_EQ(1.f, dummy.opacity()); 1097 EXPECT_EQ(1.f, dummy.opacity());
1088 1098
1089 // The second opacity animation should start at time 2 and should be done by 1099 // The second opacity animation should start at time 2 and should be done by
1090 // time 3. 1100 // time 3.
1091 controller->Animate(kInitialTickTime + 3.0); 1101 controller->Animate(GetTimeTicks(kInitialTickTime + 3.0));
1092 controller->UpdateState(true, events.get()); 1102 controller->UpdateState(true, events.get());
1093 EXPECT_EQ(0.5f, dummy.opacity()); 1103 EXPECT_EQ(0.5f, dummy.opacity());
1094 EXPECT_FALSE(controller->HasActiveAnimation()); 1104 EXPECT_FALSE(controller->HasActiveAnimation());
1095 } 1105 }
1096 1106
1097 // Test that a looping animation loops and for the correct number of iterations. 1107 // Test that a looping animation loops and for the correct number of iterations.
1098 TEST(LayerAnimationControllerTest, TrivialLooping) { 1108 TEST(LayerAnimationControllerTest, TrivialLooping) {
1099 scoped_ptr<AnimationEventsVector> events( 1109 scoped_ptr<AnimationEventsVector> events(
1100 make_scoped_ptr(new AnimationEventsVector)); 1110 make_scoped_ptr(new AnimationEventsVector));
1101 FakeLayerAnimationValueObserver dummy; 1111 FakeLayerAnimationValueObserver dummy;
1102 scoped_refptr<LayerAnimationController> controller( 1112 scoped_refptr<LayerAnimationController> controller(
1103 LayerAnimationController::Create(0)); 1113 LayerAnimationController::Create(0));
1104 controller->AddValueObserver(&dummy); 1114 controller->AddValueObserver(&dummy);
1105 1115
1106 scoped_ptr<Animation> to_add(CreateAnimation( 1116 scoped_ptr<Animation> to_add(CreateAnimation(
1107 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 1117 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
1108 1, 1118 1,
1109 Animation::Opacity)); 1119 Animation::Opacity));
1110 to_add->set_iterations(3); 1120 to_add->set_iterations(3);
1111 controller->AddAnimation(to_add.Pass()); 1121 controller->AddAnimation(to_add.Pass());
1112 1122
1113 controller->Animate(kInitialTickTime); 1123 controller->Animate(GetTimeTicks(kInitialTickTime));
1114 controller->UpdateState(true, events.get()); 1124 controller->UpdateState(true, events.get());
1115 EXPECT_TRUE(controller->HasActiveAnimation()); 1125 EXPECT_TRUE(controller->HasActiveAnimation());
1116 EXPECT_EQ(0.f, dummy.opacity()); 1126 EXPECT_EQ(0.f, dummy.opacity());
1117 controller->Animate(kInitialTickTime + 1.25); 1127 controller->Animate(GetTimeTicks(kInitialTickTime + 1.2)5);
1118 controller->UpdateState(true, events.get()); 1128 controller->UpdateState(true, events.get());
1119 EXPECT_TRUE(controller->HasActiveAnimation()); 1129 EXPECT_TRUE(controller->HasActiveAnimation());
1120 EXPECT_EQ(0.25f, dummy.opacity()); 1130 EXPECT_EQ(0.25f, dummy.opacity());
1121 controller->Animate(kInitialTickTime + 1.75); 1131 controller->Animate(GetTimeTicks(kInitialTickTime + 1.7)5);
1122 controller->UpdateState(true, events.get()); 1132 controller->UpdateState(true, events.get());
1123 EXPECT_TRUE(controller->HasActiveAnimation()); 1133 EXPECT_TRUE(controller->HasActiveAnimation());
1124 EXPECT_EQ(0.75f, dummy.opacity()); 1134 EXPECT_EQ(0.75f, dummy.opacity());
1125 controller->Animate(kInitialTickTime + 2.25); 1135 controller->Animate(GetTimeTicks(kInitialTickTime + 2.2)5);
1126 controller->UpdateState(true, events.get()); 1136 controller->UpdateState(true, events.get());
1127 EXPECT_TRUE(controller->HasActiveAnimation()); 1137 EXPECT_TRUE(controller->HasActiveAnimation());
1128 EXPECT_EQ(0.25f, dummy.opacity()); 1138 EXPECT_EQ(0.25f, dummy.opacity());
1129 controller->Animate(kInitialTickTime + 2.75); 1139 controller->Animate(GetTimeTicks(kInitialTickTime + 2.7)5);
1130 controller->UpdateState(true, events.get()); 1140 controller->UpdateState(true, events.get());
1131 EXPECT_TRUE(controller->HasActiveAnimation()); 1141 EXPECT_TRUE(controller->HasActiveAnimation());
1132 EXPECT_EQ(0.75f, dummy.opacity()); 1142 EXPECT_EQ(0.75f, dummy.opacity());
1133 controller->Animate(kInitialTickTime + 3.0); 1143 controller->Animate(GetTimeTicks(kInitialTickTime + 3.0));
1134 controller->UpdateState(true, events.get()); 1144 controller->UpdateState(true, events.get());
1135 EXPECT_FALSE(controller->HasActiveAnimation()); 1145 EXPECT_FALSE(controller->HasActiveAnimation());
1136 EXPECT_EQ(1.f, dummy.opacity()); 1146 EXPECT_EQ(1.f, dummy.opacity());
1137 1147
1138 // Just be extra sure. 1148 // Just be extra sure.
1139 controller->Animate(kInitialTickTime + 4.0); 1149 controller->Animate(GetTimeTicks(kInitialTickTime + 4.0));
1140 controller->UpdateState(true, events.get()); 1150 controller->UpdateState(true, events.get());
1141 EXPECT_EQ(1.f, dummy.opacity()); 1151 EXPECT_EQ(1.f, dummy.opacity());
1142 } 1152 }
1143 1153
1144 // Test that an infinitely looping animation does indeed go until aborted. 1154 // Test that an infinitely looping animation does indeed go until aborted.
1145 TEST(LayerAnimationControllerTest, InfiniteLooping) { 1155 TEST(LayerAnimationControllerTest, InfiniteLooping) {
1146 scoped_ptr<AnimationEventsVector> events( 1156 scoped_ptr<AnimationEventsVector> events(
1147 make_scoped_ptr(new AnimationEventsVector)); 1157 make_scoped_ptr(new AnimationEventsVector));
1148 FakeLayerAnimationValueObserver dummy; 1158 FakeLayerAnimationValueObserver dummy;
1149 scoped_refptr<LayerAnimationController> controller( 1159 scoped_refptr<LayerAnimationController> controller(
1150 LayerAnimationController::Create(0)); 1160 LayerAnimationController::Create(0));
1151 controller->AddValueObserver(&dummy); 1161 controller->AddValueObserver(&dummy);
1152 1162
1153 const int id = 1; 1163 const int id = 1;
1154 scoped_ptr<Animation> to_add(CreateAnimation( 1164 scoped_ptr<Animation> to_add(CreateAnimation(
1155 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 1165 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
1156 id, 1166 id,
1157 Animation::Opacity)); 1167 Animation::Opacity));
1158 to_add->set_iterations(-1); 1168 to_add->set_iterations(-1);
1159 controller->AddAnimation(to_add.Pass()); 1169 controller->AddAnimation(to_add.Pass());
1160 1170
1161 controller->Animate(kInitialTickTime); 1171 controller->Animate(GetTimeTicks(kInitialTickTime));
1162 controller->UpdateState(true, events.get()); 1172 controller->UpdateState(true, events.get());
1163 EXPECT_TRUE(controller->HasActiveAnimation()); 1173 EXPECT_TRUE(controller->HasActiveAnimation());
1164 EXPECT_EQ(0.f, dummy.opacity()); 1174 EXPECT_EQ(0.f, dummy.opacity());
1165 controller->Animate(kInitialTickTime + 1.25); 1175 controller->Animate(GetTimeTicks(kInitialTickTime + 1.2)5);
1166 controller->UpdateState(true, events.get()); 1176 controller->UpdateState(true, events.get());
1167 EXPECT_TRUE(controller->HasActiveAnimation()); 1177 EXPECT_TRUE(controller->HasActiveAnimation());
1168 EXPECT_EQ(0.25f, dummy.opacity()); 1178 EXPECT_EQ(0.25f, dummy.opacity());
1169 controller->Animate(kInitialTickTime + 1.75); 1179 controller->Animate(GetTimeTicks(kInitialTickTime + 1.7)5);
1170 controller->UpdateState(true, events.get()); 1180 controller->UpdateState(true, events.get());
1171 EXPECT_TRUE(controller->HasActiveAnimation()); 1181 EXPECT_TRUE(controller->HasActiveAnimation());
1172 EXPECT_EQ(0.75f, dummy.opacity()); 1182 EXPECT_EQ(0.75f, dummy.opacity());
1173 1183
1174 controller->Animate(kInitialTickTime + 1073741824.25); 1184 controller->Animate(GetTimeTicks(kInitialTickTime + 107)3741824.25);
1175 controller->UpdateState(true, events.get()); 1185 controller->UpdateState(true, events.get());
1176 EXPECT_TRUE(controller->HasActiveAnimation()); 1186 EXPECT_TRUE(controller->HasActiveAnimation());
1177 EXPECT_EQ(0.25f, dummy.opacity()); 1187 EXPECT_EQ(0.25f, dummy.opacity());
1178 controller->Animate(kInitialTickTime + 1073741824.75); 1188 controller->Animate(GetTimeTicks(kInitialTickTime + 107)3741824.75);
1179 controller->UpdateState(true, events.get()); 1189 controller->UpdateState(true, events.get());
1180 EXPECT_TRUE(controller->HasActiveAnimation()); 1190 EXPECT_TRUE(controller->HasActiveAnimation());
1181 EXPECT_EQ(0.75f, dummy.opacity()); 1191 EXPECT_EQ(0.75f, dummy.opacity());
1182 1192
1183 EXPECT_TRUE(controller->GetAnimation(id, Animation::Opacity)); 1193 EXPECT_TRUE(controller->GetAnimation(id, Animation::Opacity));
1184 controller->GetAnimation(id, Animation::Opacity)->SetRunState( 1194 controller->GetAnimation(id, Animation::Opacity)
1185 Animation::Aborted, kInitialTickTime + 0.75); 1195 ->SetRunState(Animation::Aborted, GetTimeTicks(kInitialTickTime + 0.7)5);
1186 EXPECT_FALSE(controller->HasActiveAnimation()); 1196 EXPECT_FALSE(controller->HasActiveAnimation());
1187 EXPECT_EQ(0.75f, dummy.opacity()); 1197 EXPECT_EQ(0.75f, dummy.opacity());
1188 } 1198 }
1189 1199
1190 // Test that pausing and resuming work as expected. 1200 // Test that pausing and resuming work as expected.
1191 TEST(LayerAnimationControllerTest, PauseResume) { 1201 TEST(LayerAnimationControllerTest, PauseResume) {
1192 scoped_ptr<AnimationEventsVector> events( 1202 scoped_ptr<AnimationEventsVector> events(
1193 make_scoped_ptr(new AnimationEventsVector)); 1203 make_scoped_ptr(new AnimationEventsVector));
1194 FakeLayerAnimationValueObserver dummy; 1204 FakeLayerAnimationValueObserver dummy;
1195 scoped_refptr<LayerAnimationController> controller( 1205 scoped_refptr<LayerAnimationController> controller(
1196 LayerAnimationController::Create(0)); 1206 LayerAnimationController::Create(0));
1197 controller->AddValueObserver(&dummy); 1207 controller->AddValueObserver(&dummy);
1198 1208
1199 const int id = 1; 1209 const int id = 1;
1200 controller->AddAnimation(CreateAnimation( 1210 controller->AddAnimation(CreateAnimation(
1201 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 1211 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
1202 id, 1212 id,
1203 Animation::Opacity)); 1213 Animation::Opacity));
1204 1214
1205 controller->Animate(kInitialTickTime); 1215 controller->Animate(GetTimeTicks(kInitialTickTime));
1206 controller->UpdateState(true, events.get()); 1216 controller->UpdateState(true, events.get());
1207 EXPECT_TRUE(controller->HasActiveAnimation()); 1217 EXPECT_TRUE(controller->HasActiveAnimation());
1208 EXPECT_EQ(0.f, dummy.opacity()); 1218 EXPECT_EQ(0.f, dummy.opacity());
1209 controller->Animate(kInitialTickTime + 0.5); 1219 controller->Animate(GetTimeTicks(kInitialTickTime + 0.5));
1210 controller->UpdateState(true, events.get()); 1220 controller->UpdateState(true, events.get());
1211 EXPECT_TRUE(controller->HasActiveAnimation()); 1221 EXPECT_TRUE(controller->HasActiveAnimation());
1212 EXPECT_EQ(0.5f, dummy.opacity()); 1222 EXPECT_EQ(0.5f, dummy.opacity());
1213 1223
1214 EXPECT_TRUE(controller->GetAnimation(id, Animation::Opacity)); 1224 EXPECT_TRUE(controller->GetAnimation(id, Animation::Opacity));
1215 controller->GetAnimation(id, Animation::Opacity)->SetRunState( 1225 controller->GetAnimation(id, Animation::Opacity)
1216 Animation::Paused, kInitialTickTime + 0.5); 1226 ->SetRunState(Animation::Paused, GetTimeTicks(kInitialTickTime + 0.5));
1217 1227
1218 controller->Animate(kInitialTickTime + 1024.0); 1228 controller->Animate(GetTimeTicks(kInitialTickTime + 102)4.0);
1219 controller->UpdateState(true, events.get()); 1229 controller->UpdateState(true, events.get());
1220 EXPECT_TRUE(controller->HasActiveAnimation()); 1230 EXPECT_TRUE(controller->HasActiveAnimation());
1221 EXPECT_EQ(0.5f, dummy.opacity()); 1231 EXPECT_EQ(0.5f, dummy.opacity());
1222 1232
1223 EXPECT_TRUE(controller->GetAnimation(id, Animation::Opacity)); 1233 EXPECT_TRUE(controller->GetAnimation(id, Animation::Opacity));
1224 controller->GetAnimation(id, Animation::Opacity)->SetRunState( 1234 controller->GetAnimation(id, Animation::Opacity)
1225 Animation::Running, kInitialTickTime + 1024); 1235 ->SetRunState(Animation::Running, GetTimeTicks(kInitialTickTime + 102)4);
1226 1236
1227 controller->Animate(kInitialTickTime + 1024.25); 1237 controller->Animate(GetTimeTicks(kInitialTickTime + 102)4.25);
1228 controller->UpdateState(true, events.get()); 1238 controller->UpdateState(true, events.get());
1229 EXPECT_TRUE(controller->HasActiveAnimation()); 1239 EXPECT_TRUE(controller->HasActiveAnimation());
1230 EXPECT_EQ(0.75f, dummy.opacity()); 1240 EXPECT_EQ(0.75f, dummy.opacity());
1231 controller->Animate(kInitialTickTime + 1024.5); 1241 controller->Animate(GetTimeTicks(kInitialTickTime + 102)4.5);
1232 controller->UpdateState(true, events.get()); 1242 controller->UpdateState(true, events.get());
1233 EXPECT_FALSE(controller->HasActiveAnimation()); 1243 EXPECT_FALSE(controller->HasActiveAnimation());
1234 EXPECT_EQ(1.f, dummy.opacity()); 1244 EXPECT_EQ(1.f, dummy.opacity());
1235 } 1245 }
1236 1246
1237 TEST(LayerAnimationControllerTest, AbortAGroupedAnimation) { 1247 TEST(LayerAnimationControllerTest, AbortAGroupedAnimation) {
1238 scoped_ptr<AnimationEventsVector> events( 1248 scoped_ptr<AnimationEventsVector> events(
1239 make_scoped_ptr(new AnimationEventsVector)); 1249 make_scoped_ptr(new AnimationEventsVector));
1240 FakeLayerAnimationValueObserver dummy; 1250 FakeLayerAnimationValueObserver dummy;
1241 scoped_refptr<LayerAnimationController> controller( 1251 scoped_refptr<LayerAnimationController> controller(
1242 LayerAnimationController::Create(0)); 1252 LayerAnimationController::Create(0));
1243 controller->AddValueObserver(&dummy); 1253 controller->AddValueObserver(&dummy);
1244 1254
1245 const int id = 1; 1255 const int id = 1;
1246 controller->AddAnimation(CreateAnimation( 1256 controller->AddAnimation(CreateAnimation(
1247 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(), 1257 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(),
1248 id, 1258 id,
1249 Animation::Transform)); 1259 Animation::Transform));
1250 controller->AddAnimation(CreateAnimation( 1260 controller->AddAnimation(CreateAnimation(
1251 scoped_ptr<AnimationCurve>(new FakeFloatTransition(2.0, 0.f, 1.f)).Pass(), 1261 scoped_ptr<AnimationCurve>(new FakeFloatTransition(2.0, 0.f, 1.f)).Pass(),
1252 id, 1262 id,
1253 Animation::Opacity)); 1263 Animation::Opacity));
1254 controller->AddAnimation(CreateAnimation( 1264 controller->AddAnimation(CreateAnimation(
1255 scoped_ptr<AnimationCurve>( 1265 scoped_ptr<AnimationCurve>(
1256 new FakeFloatTransition(1.0, 1.f, 0.75f)).Pass(), 1266 new FakeFloatTransition(1.0, 1.f, 0.75f)).Pass(),
1257 2, 1267 2,
1258 Animation::Opacity)); 1268 Animation::Opacity));
1259 1269
1260 controller->Animate(kInitialTickTime); 1270 controller->Animate(GetTimeTicks(kInitialTickTime));
1261 controller->UpdateState(true, events.get()); 1271 controller->UpdateState(true, events.get());
1262 EXPECT_TRUE(controller->HasActiveAnimation()); 1272 EXPECT_TRUE(controller->HasActiveAnimation());
1263 EXPECT_EQ(0.f, dummy.opacity()); 1273 EXPECT_EQ(0.f, dummy.opacity());
1264 controller->Animate(kInitialTickTime + 1.0); 1274 controller->Animate(GetTimeTicks(kInitialTickTime + 1.0));
1265 controller->UpdateState(true, events.get()); 1275 controller->UpdateState(true, events.get());
1266 EXPECT_TRUE(controller->HasActiveAnimation()); 1276 EXPECT_TRUE(controller->HasActiveAnimation());
1267 EXPECT_EQ(0.5f, dummy.opacity()); 1277 EXPECT_EQ(0.5f, dummy.opacity());
1268 1278
1269 EXPECT_TRUE(controller->GetAnimation(id, Animation::Opacity)); 1279 EXPECT_TRUE(controller->GetAnimation(id, Animation::Opacity));
1270 controller->GetAnimation(id, Animation::Opacity)->SetRunState( 1280 controller->GetAnimation(id, Animation::Opacity)
1271 Animation::Aborted, kInitialTickTime + 1.0); 1281 ->SetRunState(Animation::Aborted, GetTimeTicks(kInitialTickTime + 1.0));
1272 controller->Animate(kInitialTickTime + 1.0); 1282 controller->Animate(GetTimeTicks(kInitialTickTime + 1.0));
1273 controller->UpdateState(true, events.get()); 1283 controller->UpdateState(true, events.get());
1274 EXPECT_TRUE(controller->HasActiveAnimation()); 1284 EXPECT_TRUE(controller->HasActiveAnimation());
1275 EXPECT_EQ(1.f, dummy.opacity()); 1285 EXPECT_EQ(1.f, dummy.opacity());
1276 controller->Animate(kInitialTickTime + 2.0); 1286 controller->Animate(GetTimeTicks(kInitialTickTime + 2.0));
1277 controller->UpdateState(true, events.get()); 1287 controller->UpdateState(true, events.get());
1278 EXPECT_TRUE(!controller->HasActiveAnimation()); 1288 EXPECT_TRUE(!controller->HasActiveAnimation());
1279 EXPECT_EQ(0.75f, dummy.opacity()); 1289 EXPECT_EQ(0.75f, dummy.opacity());
1280 } 1290 }
1281 1291
1282 TEST(LayerAnimationControllerTest, PushUpdatesWhenSynchronizedStartTimeNeeded) { 1292 TEST(LayerAnimationControllerTest, PushUpdatesWhenSynchronizedStartTimeNeeded) {
1283 FakeLayerAnimationValueObserver dummy_impl; 1293 FakeLayerAnimationValueObserver dummy_impl;
1284 scoped_refptr<LayerAnimationController> controller_impl( 1294 scoped_refptr<LayerAnimationController> controller_impl(
1285 LayerAnimationController::Create(0)); 1295 LayerAnimationController::Create(0));
1286 controller_impl->AddValueObserver(&dummy_impl); 1296 controller_impl->AddValueObserver(&dummy_impl);
1287 scoped_ptr<AnimationEventsVector> events( 1297 scoped_ptr<AnimationEventsVector> events(
1288 make_scoped_ptr(new AnimationEventsVector)); 1298 make_scoped_ptr(new AnimationEventsVector));
1289 FakeLayerAnimationValueObserver dummy; 1299 FakeLayerAnimationValueObserver dummy;
1290 scoped_refptr<LayerAnimationController> controller( 1300 scoped_refptr<LayerAnimationController> controller(
1291 LayerAnimationController::Create(0)); 1301 LayerAnimationController::Create(0));
1292 controller->AddValueObserver(&dummy); 1302 controller->AddValueObserver(&dummy);
1293 1303
1294 scoped_ptr<Animation> to_add(CreateAnimation( 1304 scoped_ptr<Animation> to_add(CreateAnimation(
1295 scoped_ptr<AnimationCurve>(new FakeFloatTransition(2.0, 0.f, 1.f)).Pass(), 1305 scoped_ptr<AnimationCurve>(new FakeFloatTransition(2.0, 0.f, 1.f)).Pass(),
1296 0, 1306 0,
1297 Animation::Opacity)); 1307 Animation::Opacity));
1298 to_add->set_needs_synchronized_start_time(true); 1308 to_add->set_needs_synchronized_start_time(true);
1299 controller->AddAnimation(to_add.Pass()); 1309 controller->AddAnimation(to_add.Pass());
1300 1310
1301 controller->Animate(kInitialTickTime); 1311 controller->Animate(GetTimeTicks(kInitialTickTime));
1302 controller->UpdateState(true, events.get()); 1312 controller->UpdateState(true, events.get());
1303 EXPECT_TRUE(controller->HasActiveAnimation()); 1313 EXPECT_TRUE(controller->HasActiveAnimation());
1304 Animation* active_animation = controller->GetAnimation(0, Animation::Opacity); 1314 Animation* active_animation = controller->GetAnimation(0, Animation::Opacity);
1305 EXPECT_TRUE(active_animation); 1315 EXPECT_TRUE(active_animation);
1306 EXPECT_TRUE(active_animation->needs_synchronized_start_time()); 1316 EXPECT_TRUE(active_animation->needs_synchronized_start_time());
1307 1317
1308 controller->PushAnimationUpdatesTo(controller_impl.get()); 1318 controller->PushAnimationUpdatesTo(controller_impl.get());
1309 1319
1310 active_animation = controller_impl->GetAnimation(0, Animation::Opacity); 1320 active_animation = controller_impl->GetAnimation(0, Animation::Opacity);
1311 EXPECT_TRUE(active_animation); 1321 EXPECT_TRUE(active_animation);
1312 EXPECT_EQ(Animation::WaitingForTargetAvailability, 1322 EXPECT_EQ(Animation::WaitingForTargetAvailability,
1313 active_animation->run_state()); 1323 active_animation->run_state());
1314 } 1324 }
1315 1325
1316 // Tests that skipping a call to UpdateState works as expected. 1326 // Tests that skipping a call to UpdateState works as expected.
1317 TEST(LayerAnimationControllerTest, SkipUpdateState) { 1327 TEST(LayerAnimationControllerTest, SkipUpdateState) {
1318 scoped_ptr<AnimationEventsVector> events( 1328 scoped_ptr<AnimationEventsVector> events(
1319 make_scoped_ptr(new AnimationEventsVector)); 1329 make_scoped_ptr(new AnimationEventsVector));
1320 FakeLayerAnimationValueObserver dummy; 1330 FakeLayerAnimationValueObserver dummy;
1321 scoped_refptr<LayerAnimationController> controller( 1331 scoped_refptr<LayerAnimationController> controller(
1322 LayerAnimationController::Create(0)); 1332 LayerAnimationController::Create(0));
1323 controller->AddValueObserver(&dummy); 1333 controller->AddValueObserver(&dummy);
1324 1334
1325 controller->AddAnimation(CreateAnimation( 1335 controller->AddAnimation(CreateAnimation(
1326 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(), 1336 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1)).Pass(),
1327 1, 1337 1,
1328 Animation::Transform)); 1338 Animation::Transform));
1329 1339
1330 controller->Animate(kInitialTickTime); 1340 controller->Animate(GetTimeTicks(kInitialTickTime));
1331 controller->UpdateState(true, events.get()); 1341 controller->UpdateState(true, events.get());
1332 1342
1333 controller->AddAnimation(CreateAnimation( 1343 controller->AddAnimation(CreateAnimation(
1334 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 1344 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
1335 2, 1345 2,
1336 Animation::Opacity)); 1346 Animation::Opacity));
1337 1347
1338 // Animate but don't UpdateState. 1348 // Animate but don't UpdateState.
1339 controller->Animate(kInitialTickTime + 1.0); 1349 controller->Animate(GetTimeTicks(kInitialTickTime + 1.0));
1340 1350
1341 controller->Animate(kInitialTickTime + 2.0); 1351 controller->Animate(GetTimeTicks(kInitialTickTime + 2.0));
1342 events.reset(new AnimationEventsVector); 1352 events.reset(new AnimationEventsVector);
1343 controller->UpdateState(true, events.get()); 1353 controller->UpdateState(true, events.get());
1344 1354
1345 // Should have one Started event and one Finished event. 1355 // Should have one Started event and one Finished event.
1346 EXPECT_EQ(2u, events->size()); 1356 EXPECT_EQ(2u, events->size());
1347 EXPECT_NE((*events)[0].type, (*events)[1].type); 1357 EXPECT_NE((*events)[0].type, (*events)[1].type);
1348 1358
1349 // The float transition should still be at its starting point. 1359 // The float transition should still be at its starting point.
1350 EXPECT_TRUE(controller->HasActiveAnimation()); 1360 EXPECT_TRUE(controller->HasActiveAnimation());
1351 EXPECT_EQ(0.f, dummy.opacity()); 1361 EXPECT_EQ(0.f, dummy.opacity());
1352 1362
1353 controller->Animate(kInitialTickTime + 3.0); 1363 controller->Animate(GetTimeTicks(kInitialTickTime + 3.0));
1354 controller->UpdateState(true, events.get()); 1364 controller->UpdateState(true, events.get());
1355 1365
1356 // The float tranisition should now be done. 1366 // The float tranisition should now be done.
1357 EXPECT_EQ(1.f, dummy.opacity()); 1367 EXPECT_EQ(1.f, dummy.opacity());
1358 EXPECT_FALSE(controller->HasActiveAnimation()); 1368 EXPECT_FALSE(controller->HasActiveAnimation());
1359 } 1369 }
1360 1370
1361 // Tests that an animation controller with only an inactive observer gets ticked 1371 // Tests that an animation controller with only an inactive observer gets ticked
1362 // but doesn't progress animations past the Starting state. 1372 // but doesn't progress animations past the Starting state.
1363 TEST(LayerAnimationControllerTest, InactiveObserverGetsTicked) { 1373 TEST(LayerAnimationControllerTest, InactiveObserverGetsTicked) {
1364 scoped_ptr<AnimationEventsVector> events( 1374 scoped_ptr<AnimationEventsVector> events(
1365 make_scoped_ptr(new AnimationEventsVector)); 1375 make_scoped_ptr(new AnimationEventsVector));
1366 FakeLayerAnimationValueObserver dummy; 1376 FakeLayerAnimationValueObserver dummy;
1367 FakeInactiveLayerAnimationValueObserver inactive_dummy; 1377 FakeInactiveLayerAnimationValueObserver inactive_dummy;
1368 scoped_refptr<LayerAnimationController> controller( 1378 scoped_refptr<LayerAnimationController> controller(
1369 LayerAnimationController::Create(0)); 1379 LayerAnimationController::Create(0));
1370 1380
1371 const int id = 1; 1381 const int id = 1;
1372 controller->AddAnimation(CreateAnimation(scoped_ptr<AnimationCurve>( 1382 controller->AddAnimation(CreateAnimation(scoped_ptr<AnimationCurve>(
1373 new FakeFloatTransition(1.0, 0.5f, 1.f)).Pass(), 1383 new FakeFloatTransition(1.0, 0.5f, 1.f)).Pass(),
1374 id, 1384 id,
1375 Animation::Opacity)); 1385 Animation::Opacity));
1376 1386
1377 // Without an observer, the animation shouldn't progress to the Starting 1387 // Without an observer, the animation shouldn't progress to the Starting
1378 // state. 1388 // state.
1379 controller->Animate(kInitialTickTime); 1389 controller->Animate(GetTimeTicks(kInitialTickTime));
1380 controller->UpdateState(true, events.get()); 1390 controller->UpdateState(true, events.get());
1381 EXPECT_EQ(0u, events->size()); 1391 EXPECT_EQ(0u, events->size());
1382 EXPECT_EQ(Animation::WaitingForTargetAvailability, 1392 EXPECT_EQ(Animation::WaitingForTargetAvailability,
1383 controller->GetAnimation(id, Animation::Opacity)->run_state()); 1393 controller->GetAnimation(id, Animation::Opacity)->run_state());
1384 1394
1385 controller->AddValueObserver(&inactive_dummy); 1395 controller->AddValueObserver(&inactive_dummy);
1386 1396
1387 // With only an inactive observer, the animation should progress to the 1397 // With only an inactive observer, the animation should progress to the
1388 // Starting state and get ticked at its starting point, but should not 1398 // Starting state and get ticked at its starting point, but should not
1389 // progress to Running. 1399 // progress to Running.
1390 controller->Animate(kInitialTickTime + 1.0); 1400 controller->Animate(GetTimeTicks(kInitialTickTime + 1.0));
1391 controller->UpdateState(true, events.get()); 1401 controller->UpdateState(true, events.get());
1392 EXPECT_EQ(0u, events->size()); 1402 EXPECT_EQ(0u, events->size());
1393 EXPECT_EQ(Animation::Starting, 1403 EXPECT_EQ(Animation::Starting,
1394 controller->GetAnimation(id, Animation::Opacity)->run_state()); 1404 controller->GetAnimation(id, Animation::Opacity)->run_state());
1395 EXPECT_EQ(0.5f, inactive_dummy.opacity()); 1405 EXPECT_EQ(0.5f, inactive_dummy.opacity());
1396 1406
1397 // Even when already in the Starting state, the animation should stay 1407 // Even when already in the Starting state, the animation should stay
1398 // there, and shouldn't be ticked past its starting point. 1408 // there, and shouldn't be ticked past its starting point.
1399 controller->Animate(kInitialTickTime + 2.0); 1409 controller->Animate(GetTimeTicks(kInitialTickTime + 2.0));
1400 controller->UpdateState(true, events.get()); 1410 controller->UpdateState(true, events.get());
1401 EXPECT_EQ(0u, events->size()); 1411 EXPECT_EQ(0u, events->size());
1402 EXPECT_EQ(Animation::Starting, 1412 EXPECT_EQ(Animation::Starting,
1403 controller->GetAnimation(id, Animation::Opacity)->run_state()); 1413 controller->GetAnimation(id, Animation::Opacity)->run_state());
1404 EXPECT_EQ(0.5f, inactive_dummy.opacity()); 1414 EXPECT_EQ(0.5f, inactive_dummy.opacity());
1405 1415
1406 controller->AddValueObserver(&dummy); 1416 controller->AddValueObserver(&dummy);
1407 1417
1408 // Now that an active observer has been added, the animation should still 1418 // Now that an active observer has been added, the animation should still
1409 // initially tick at its starting point, but should now progress to Running. 1419 // initially tick at its starting point, but should now progress to Running.
1410 controller->Animate(kInitialTickTime + 3.0); 1420 controller->Animate(GetTimeTicks(kInitialTickTime + 3.0));
1411 controller->UpdateState(true, events.get()); 1421 controller->UpdateState(true, events.get());
1412 EXPECT_EQ(1u, events->size()); 1422 EXPECT_EQ(1u, events->size());
1413 EXPECT_EQ(Animation::Running, 1423 EXPECT_EQ(Animation::Running,
1414 controller->GetAnimation(id, Animation::Opacity)->run_state()); 1424 controller->GetAnimation(id, Animation::Opacity)->run_state());
1415 EXPECT_EQ(0.5f, inactive_dummy.opacity()); 1425 EXPECT_EQ(0.5f, inactive_dummy.opacity());
1416 EXPECT_EQ(0.5f, dummy.opacity()); 1426 EXPECT_EQ(0.5f, dummy.opacity());
1417 1427
1418 // The animation should now tick past its starting point. 1428 // The animation should now tick past its starting point.
1419 controller->Animate(kInitialTickTime + 3.5); 1429 controller->Animate(GetTimeTicks(kInitialTickTime + 3.5));
1420 EXPECT_NE(0.5f, inactive_dummy.opacity()); 1430 EXPECT_NE(0.5f, inactive_dummy.opacity());
1421 EXPECT_NE(0.5f, dummy.opacity()); 1431 EXPECT_NE(0.5f, dummy.opacity());
1422 } 1432 }
1423 1433
1424 TEST(LayerAnimationControllerTest, TransformAnimationBounds) { 1434 TEST(LayerAnimationControllerTest, TransformAnimationBounds) {
1425 scoped_refptr<LayerAnimationController> controller_impl( 1435 scoped_refptr<LayerAnimationController> controller_impl(
1426 LayerAnimationController::Create(0)); 1436 LayerAnimationController::Create(0));
1427 1437
1428 scoped_ptr<KeyframedTransformAnimationCurve> curve1( 1438 scoped_ptr<KeyframedTransformAnimationCurve> curve1(
1429 KeyframedTransformAnimationCurve::Create()); 1439 KeyframedTransformAnimationCurve::Create());
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1515 Animation::Transform)); 1525 Animation::Transform));
1516 controller->AddAnimation(CreateAnimation( 1526 controller->AddAnimation(CreateAnimation(
1517 scoped_ptr<AnimationCurve>(new FakeTransformTransition(2.0)).Pass(), 1527 scoped_ptr<AnimationCurve>(new FakeTransformTransition(2.0)).Pass(),
1518 4, 1528 4,
1519 Animation::Transform)); 1529 Animation::Transform));
1520 controller->AddAnimation(CreateAnimation( 1530 controller->AddAnimation(CreateAnimation(
1521 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 1531 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
1522 5, 1532 5,
1523 Animation::Opacity)); 1533 Animation::Opacity));
1524 1534
1525 controller->Animate(kInitialTickTime); 1535 controller->Animate(GetTimeTicks(kInitialTickTime));
1526 controller->UpdateState(true, NULL); 1536 controller->UpdateState(true, NULL);
1527 controller->Animate(kInitialTickTime + 1.0); 1537 controller->Animate(GetTimeTicks(kInitialTickTime + 1.0));
1528 controller->UpdateState(true, NULL); 1538 controller->UpdateState(true, NULL);
1529 1539
1530 EXPECT_EQ(Animation::Finished, 1540 EXPECT_EQ(Animation::Finished,
1531 controller->GetAnimation(1, Animation::Transform)->run_state()); 1541 controller->GetAnimation(1, Animation::Transform)->run_state());
1532 EXPECT_EQ(Animation::Finished, 1542 EXPECT_EQ(Animation::Finished,
1533 controller->GetAnimation(2, Animation::Opacity)->run_state()); 1543 controller->GetAnimation(2, Animation::Opacity)->run_state());
1534 EXPECT_EQ(Animation::Running, 1544 EXPECT_EQ(Animation::Running,
1535 controller->GetAnimation(3, Animation::Transform)->run_state()); 1545 controller->GetAnimation(3, Animation::Transform)->run_state());
1536 EXPECT_EQ(Animation::WaitingForTargetAvailability, 1546 EXPECT_EQ(Animation::WaitingForTargetAvailability,
1537 controller->GetAnimation(4, Animation::Transform)->run_state()); 1547 controller->GetAnimation(4, Animation::Transform)->run_state());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1569 1579
1570 controller->PushAnimationUpdatesTo(controller_impl.get()); 1580 controller->PushAnimationUpdatesTo(controller_impl.get());
1571 EXPECT_TRUE(controller_impl->GetAnimation(group_id, Animation::Opacity)); 1581 EXPECT_TRUE(controller_impl->GetAnimation(group_id, Animation::Opacity));
1572 1582
1573 controller->AbortAnimations(Animation::Opacity); 1583 controller->AbortAnimations(Animation::Opacity);
1574 EXPECT_EQ(Animation::Aborted, 1584 EXPECT_EQ(Animation::Aborted,
1575 controller->GetAnimation(Animation::Opacity)->run_state()); 1585 controller->GetAnimation(Animation::Opacity)->run_state());
1576 EXPECT_FALSE(dummy.animation_waiting_for_deletion()); 1586 EXPECT_FALSE(dummy.animation_waiting_for_deletion());
1577 EXPECT_FALSE(dummy_impl.animation_waiting_for_deletion()); 1587 EXPECT_FALSE(dummy_impl.animation_waiting_for_deletion());
1578 1588
1579 controller->Animate(kInitialTickTime); 1589 controller->Animate(GetTimeTicks(kInitialTickTime));
1580 controller->UpdateState(true, NULL); 1590 controller->UpdateState(true, NULL);
1581 EXPECT_TRUE(dummy.animation_waiting_for_deletion()); 1591 EXPECT_TRUE(dummy.animation_waiting_for_deletion());
1582 EXPECT_EQ(Animation::WaitingForDeletion, 1592 EXPECT_EQ(Animation::WaitingForDeletion,
1583 controller->GetAnimation(Animation::Opacity)->run_state()); 1593 controller->GetAnimation(Animation::Opacity)->run_state());
1584 1594
1585 controller->PushAnimationUpdatesTo(controller_impl.get()); 1595 controller->PushAnimationUpdatesTo(controller_impl.get());
1586 EXPECT_FALSE(controller->GetAnimation(group_id, Animation::Opacity)); 1596 EXPECT_FALSE(controller->GetAnimation(group_id, Animation::Opacity));
1587 EXPECT_FALSE(controller_impl->GetAnimation(group_id, Animation::Opacity)); 1597 EXPECT_FALSE(controller_impl->GetAnimation(group_id, Animation::Opacity));
1588 } 1598 }
1589 1599
(...skipping 14 matching lines...) Expand all
1604 controller->PushAnimationUpdatesTo(controller_impl.get()); 1614 controller->PushAnimationUpdatesTo(controller_impl.get());
1605 EXPECT_TRUE(controller_impl->GetAnimation(group_id, Animation::Opacity)); 1615 EXPECT_TRUE(controller_impl->GetAnimation(group_id, Animation::Opacity));
1606 1616
1607 controller_impl->AbortAnimations(Animation::Opacity); 1617 controller_impl->AbortAnimations(Animation::Opacity);
1608 EXPECT_EQ(Animation::Aborted, 1618 EXPECT_EQ(Animation::Aborted,
1609 controller_impl->GetAnimation(Animation::Opacity)->run_state()); 1619 controller_impl->GetAnimation(Animation::Opacity)->run_state());
1610 EXPECT_FALSE(dummy.animation_waiting_for_deletion()); 1620 EXPECT_FALSE(dummy.animation_waiting_for_deletion());
1611 EXPECT_FALSE(dummy_impl.animation_waiting_for_deletion()); 1621 EXPECT_FALSE(dummy_impl.animation_waiting_for_deletion());
1612 1622
1613 AnimationEventsVector events; 1623 AnimationEventsVector events;
1614 controller_impl->Animate(kInitialTickTime); 1624 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
1615 controller_impl->UpdateState(true, &events); 1625 controller_impl->UpdateState(true, &events);
1616 EXPECT_TRUE(dummy_impl.animation_waiting_for_deletion()); 1626 EXPECT_TRUE(dummy_impl.animation_waiting_for_deletion());
1617 EXPECT_EQ(1u, events.size()); 1627 EXPECT_EQ(1u, events.size());
1618 EXPECT_EQ(AnimationEvent::Aborted, events[0].type); 1628 EXPECT_EQ(AnimationEvent::Aborted, events[0].type);
1619 EXPECT_EQ(Animation::WaitingForDeletion, 1629 EXPECT_EQ(Animation::WaitingForDeletion,
1620 controller_impl->GetAnimation(Animation::Opacity)->run_state()); 1630 controller_impl->GetAnimation(Animation::Opacity)->run_state());
1621 1631
1622 controller->NotifyAnimationAborted(events[0]); 1632 controller->NotifyAnimationAborted(events[0]);
1623 EXPECT_EQ(Animation::Aborted, 1633 EXPECT_EQ(Animation::Aborted,
1624 controller->GetAnimation(Animation::Opacity)->run_state()); 1634 controller->GetAnimation(Animation::Opacity)->run_state());
1625 1635
1626 controller->Animate(kInitialTickTime + 0.5); 1636 controller->Animate(GetTimeTicks(kInitialTickTime + 0.5));
1627 controller->UpdateState(true, NULL); 1637 controller->UpdateState(true, NULL);
1628 EXPECT_TRUE(dummy.animation_waiting_for_deletion()); 1638 EXPECT_TRUE(dummy.animation_waiting_for_deletion());
1629 EXPECT_EQ(Animation::WaitingForDeletion, 1639 EXPECT_EQ(Animation::WaitingForDeletion,
1630 controller->GetAnimation(Animation::Opacity)->run_state()); 1640 controller->GetAnimation(Animation::Opacity)->run_state());
1631 1641
1632 controller->PushAnimationUpdatesTo(controller_impl.get()); 1642 controller->PushAnimationUpdatesTo(controller_impl.get());
1633 EXPECT_FALSE(controller->GetAnimation(group_id, Animation::Opacity)); 1643 EXPECT_FALSE(controller->GetAnimation(group_id, Animation::Opacity));
1634 EXPECT_FALSE(controller_impl->GetAnimation(group_id, Animation::Opacity)); 1644 EXPECT_FALSE(controller_impl->GetAnimation(group_id, Animation::Opacity));
1635 } 1645 }
1636 1646
(...skipping 10 matching lines...) Expand all
1647 // Add two animations with the same group id but different durations. 1657 // Add two animations with the same group id but different durations.
1648 controller_impl->AddAnimation(CreateAnimation( 1658 controller_impl->AddAnimation(CreateAnimation(
1649 scoped_ptr<AnimationCurve>(new FakeTransformTransition(2.0)).Pass(), 1659 scoped_ptr<AnimationCurve>(new FakeTransformTransition(2.0)).Pass(),
1650 1, 1660 1,
1651 Animation::Transform)); 1661 Animation::Transform));
1652 controller_impl->AddAnimation(CreateAnimation( 1662 controller_impl->AddAnimation(CreateAnimation(
1653 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 1663 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
1654 1, 1664 1,
1655 Animation::Opacity)); 1665 Animation::Opacity));
1656 1666
1657 controller_impl->Animate(kInitialTickTime); 1667 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
1658 controller_impl->UpdateState(true, events.get()); 1668 controller_impl->UpdateState(true, events.get());
1659 1669
1660 // Both animations should have started. 1670 // Both animations should have started.
1661 EXPECT_EQ(2u, events->size()); 1671 EXPECT_EQ(2u, events->size());
1662 EXPECT_EQ(AnimationEvent::Started, (*events)[0].type); 1672 EXPECT_EQ(AnimationEvent::Started, (*events)[0].type);
1663 EXPECT_EQ(AnimationEvent::Started, (*events)[1].type); 1673 EXPECT_EQ(AnimationEvent::Started, (*events)[1].type);
1664 1674
1665 events.reset(new AnimationEventsVector); 1675 events.reset(new AnimationEventsVector);
1666 controller_impl->Animate(kInitialTickTime + 1.0); 1676 controller_impl->Animate(GetTimeTicks(kInitialTickTime + 1.0));
1667 controller_impl->UpdateState(true, events.get()); 1677 controller_impl->UpdateState(true, events.get());
1668 1678
1669 // The opacity animation should be finished, but should not have generated 1679 // The opacity animation should be finished, but should not have generated
1670 // a Finished event yet. 1680 // a Finished event yet.
1671 EXPECT_EQ(0u, events->size()); 1681 EXPECT_EQ(0u, events->size());
1672 EXPECT_EQ(Animation::Finished, 1682 EXPECT_EQ(Animation::Finished,
1673 controller_impl->GetAnimation(1, Animation::Opacity)->run_state()); 1683 controller_impl->GetAnimation(1, Animation::Opacity)->run_state());
1674 EXPECT_EQ(Animation::Running, 1684 EXPECT_EQ(Animation::Running,
1675 controller_impl->GetAnimation(1, 1685 controller_impl->GetAnimation(1,
1676 Animation::Transform)->run_state()); 1686 Animation::Transform)->run_state());
1677 1687
1678 controller_impl->Animate(kInitialTickTime + 2.0); 1688 controller_impl->Animate(GetTimeTicks(kInitialTickTime + 2.0));
1679 controller_impl->UpdateState(true, events.get()); 1689 controller_impl->UpdateState(true, events.get());
1680 1690
1681 // Both animations should have generated Finished events. 1691 // Both animations should have generated Finished events.
1682 EXPECT_EQ(2u, events->size()); 1692 EXPECT_EQ(2u, events->size());
1683 EXPECT_EQ(AnimationEvent::Finished, (*events)[0].type); 1693 EXPECT_EQ(AnimationEvent::Finished, (*events)[0].type);
1684 EXPECT_EQ(AnimationEvent::Finished, (*events)[1].type); 1694 EXPECT_EQ(AnimationEvent::Finished, (*events)[1].type);
1685 } 1695 }
1686 1696
1687 // Ensure that when a group has a mix of aborted and finished animations, 1697 // Ensure that when a group has a mix of aborted and finished animations,
1688 // we generate a Finished event for the finished animation and an Aborted 1698 // we generate a Finished event for the finished animation and an Aborted
1689 // event for the aborted animation. 1699 // event for the aborted animation.
1690 TEST(LayerAnimationControllerTest, FinishedAndAbortedEventsForGroup) { 1700 TEST(LayerAnimationControllerTest, FinishedAndAbortedEventsForGroup) {
1691 scoped_ptr<AnimationEventsVector> events( 1701 scoped_ptr<AnimationEventsVector> events(
1692 make_scoped_ptr(new AnimationEventsVector)); 1702 make_scoped_ptr(new AnimationEventsVector));
1693 FakeLayerAnimationValueObserver dummy_impl; 1703 FakeLayerAnimationValueObserver dummy_impl;
1694 scoped_refptr<LayerAnimationController> controller_impl( 1704 scoped_refptr<LayerAnimationController> controller_impl(
1695 LayerAnimationController::Create(0)); 1705 LayerAnimationController::Create(0));
1696 controller_impl->AddValueObserver(&dummy_impl); 1706 controller_impl->AddValueObserver(&dummy_impl);
1697 1707
1698 // Add two animations with the same group id. 1708 // Add two animations with the same group id.
1699 controller_impl->AddAnimation(CreateAnimation( 1709 controller_impl->AddAnimation(CreateAnimation(
1700 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1.0)).Pass(), 1710 scoped_ptr<AnimationCurve>(new FakeTransformTransition(1.0)).Pass(),
1701 1, 1711 1,
1702 Animation::Transform)); 1712 Animation::Transform));
1703 controller_impl->AddAnimation(CreateAnimation( 1713 controller_impl->AddAnimation(CreateAnimation(
1704 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(), 1714 scoped_ptr<AnimationCurve>(new FakeFloatTransition(1.0, 0.f, 1.f)).Pass(),
1705 1, 1715 1,
1706 Animation::Opacity)); 1716 Animation::Opacity));
1707 1717
1708 controller_impl->Animate(kInitialTickTime); 1718 controller_impl->Animate(GetTimeTicks(kInitialTickTime));
1709 controller_impl->UpdateState(true, events.get()); 1719 controller_impl->UpdateState(true, events.get());
1710 1720
1711 // Both animations should have started. 1721 // Both animations should have started.
1712 EXPECT_EQ(2u, events->size()); 1722 EXPECT_EQ(2u, events->size());
1713 EXPECT_EQ(AnimationEvent::Started, (*events)[0].type); 1723 EXPECT_EQ(AnimationEvent::Started, (*events)[0].type);
1714 EXPECT_EQ(AnimationEvent::Started, (*events)[1].type); 1724 EXPECT_EQ(AnimationEvent::Started, (*events)[1].type);
1715 1725
1716 controller_impl->AbortAnimations(Animation::Opacity); 1726 controller_impl->AbortAnimations(Animation::Opacity);
1717 1727
1718 events.reset(new AnimationEventsVector); 1728 events.reset(new AnimationEventsVector);
1719 controller_impl->Animate(kInitialTickTime + 1.0); 1729 controller_impl->Animate(GetTimeTicks(kInitialTickTime + 1.0));
1720 controller_impl->UpdateState(true, events.get()); 1730 controller_impl->UpdateState(true, events.get());
1721 1731
1722 // We should have exactly 2 events: a Finished event for the tranform 1732 // We should have exactly 2 events: a Finished event for the tranform
1723 // animation, and an Aborted event for the opacity animation. 1733 // animation, and an Aborted event for the opacity animation.
1724 EXPECT_EQ(2u, events->size()); 1734 EXPECT_EQ(2u, events->size());
1725 EXPECT_EQ(AnimationEvent::Finished, (*events)[0].type); 1735 EXPECT_EQ(AnimationEvent::Finished, (*events)[0].type);
1726 EXPECT_EQ(Animation::Transform, (*events)[0].target_property); 1736 EXPECT_EQ(Animation::Transform, (*events)[0].target_property);
1727 EXPECT_EQ(AnimationEvent::Aborted, (*events)[1].type); 1737 EXPECT_EQ(AnimationEvent::Aborted, (*events)[1].type);
1728 EXPECT_EQ(Animation::Opacity, (*events)[1].target_property); 1738 EXPECT_EQ(Animation::Opacity, (*events)[1].target_property);
1729 } 1739 }
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
1903 ->SetRunState(Animation::Finished, 0.0); 1913 ->SetRunState(Animation::Finished, 0.0);
1904 1914
1905 // Only unfinished animations should be considered by 1915 // Only unfinished animations should be considered by
1906 // MaximumScale. 1916 // MaximumScale.
1907 EXPECT_TRUE(controller_impl->MaximumScale(&max_scale)); 1917 EXPECT_TRUE(controller_impl->MaximumScale(&max_scale));
1908 EXPECT_EQ(4.f, max_scale); 1918 EXPECT_EQ(4.f, max_scale);
1909 } 1919 }
1910 1920
1911 } // namespace 1921 } // namespace
1912 } // namespace cc 1922 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698