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

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

Issue 99733003: Add monotonic time and target property to cc::AnimationDelegate notifications (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/animation/animation_delegate.h ('k') | cc/animation/layer_animation_controller_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 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 <algorithm> 7 #include <algorithm>
8 8
9 #include "cc/animation/animation.h" 9 #include "cc/animation/animation.h"
10 #include "cc/animation/animation_delegate.h" 10 #include "cc/animation/animation_delegate.h"
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 registrar_ = registrar; 275 registrar_ = registrar;
276 if (registrar_) 276 if (registrar_)
277 registrar_->RegisterAnimationController(this); 277 registrar_->RegisterAnimationController(this);
278 278
279 UpdateActivation(ForceActivation); 279 UpdateActivation(ForceActivation);
280 } 280 }
281 281
282 void LayerAnimationController::NotifyAnimationStarted( 282 void LayerAnimationController::NotifyAnimationStarted(
283 const AnimationEvent& event, 283 const AnimationEvent& event,
284 double wall_clock_time) { 284 double wall_clock_time) {
285 base::TimeTicks monotonic_time = base::TimeTicks::FromInternalValue(
286 event.monotonic_time * base::Time::kMicrosecondsPerSecond);
285 if (event.is_impl_only) { 287 if (event.is_impl_only) {
286 FOR_EACH_OBSERVER(LayerAnimationEventObserver, event_observers_, 288 FOR_EACH_OBSERVER(LayerAnimationEventObserver, event_observers_,
287 OnAnimationStarted(event)); 289 OnAnimationStarted(event));
288 if (layer_animation_delegate_) 290 if (layer_animation_delegate_)
289 layer_animation_delegate_->NotifyAnimationStarted(wall_clock_time); 291 layer_animation_delegate_->NotifyAnimationStarted(
292 wall_clock_time, monotonic_time, event.target_property);
290 293
291 return; 294 return;
292 } 295 }
293 296
294 for (size_t i = 0; i < active_animations_.size(); ++i) { 297 for (size_t i = 0; i < active_animations_.size(); ++i) {
295 if (active_animations_[i]->group() == event.group_id && 298 if (active_animations_[i]->group() == event.group_id &&
296 active_animations_[i]->target_property() == event.target_property && 299 active_animations_[i]->target_property() == event.target_property &&
297 active_animations_[i]->needs_synchronized_start_time()) { 300 active_animations_[i]->needs_synchronized_start_time()) {
298 active_animations_[i]->set_needs_synchronized_start_time(false); 301 active_animations_[i]->set_needs_synchronized_start_time(false);
299 active_animations_[i]->set_start_time(event.monotonic_time); 302 active_animations_[i]->set_start_time(event.monotonic_time);
300 303
301 FOR_EACH_OBSERVER(LayerAnimationEventObserver, event_observers_, 304 FOR_EACH_OBSERVER(LayerAnimationEventObserver, event_observers_,
302 OnAnimationStarted(event)); 305 OnAnimationStarted(event));
303 if (layer_animation_delegate_) 306 if (layer_animation_delegate_)
304 layer_animation_delegate_->NotifyAnimationStarted(wall_clock_time); 307 layer_animation_delegate_->NotifyAnimationStarted(
308 wall_clock_time, monotonic_time, event.target_property);
305 309
306 return; 310 return;
307 } 311 }
308 } 312 }
309 } 313 }
310 314
311 void LayerAnimationController::NotifyAnimationFinished( 315 void LayerAnimationController::NotifyAnimationFinished(
312 const AnimationEvent& event, 316 const AnimationEvent& event,
313 double wall_clock_time) { 317 double wall_clock_time) {
318 base::TimeTicks monotonic_time = base::TimeTicks::FromInternalValue(
319 event.monotonic_time * base::Time::kMicrosecondsPerSecond);
314 if (event.is_impl_only) { 320 if (event.is_impl_only) {
315 if (layer_animation_delegate_) 321 if (layer_animation_delegate_)
316 layer_animation_delegate_->NotifyAnimationFinished(wall_clock_time); 322 layer_animation_delegate_->NotifyAnimationFinished(
323 wall_clock_time, monotonic_time, event.target_property);
317 return; 324 return;
318 } 325 }
319 326
320 for (size_t i = 0; i < active_animations_.size(); ++i) { 327 for (size_t i = 0; i < active_animations_.size(); ++i) {
321 if (active_animations_[i]->group() == event.group_id && 328 if (active_animations_[i]->group() == event.group_id &&
322 active_animations_[i]->target_property() == event.target_property) { 329 active_animations_[i]->target_property() == event.target_property) {
323 active_animations_[i]->set_received_finished_event(true); 330 active_animations_[i]->set_received_finished_event(true);
324 if (layer_animation_delegate_) 331 if (layer_animation_delegate_)
325 layer_animation_delegate_->NotifyAnimationFinished(wall_clock_time); 332 layer_animation_delegate_->NotifyAnimationFinished(
333 wall_clock_time, monotonic_time, event.target_property);
326 334
327 return; 335 return;
328 } 336 }
329 } 337 }
330 } 338 }
331 339
332 void LayerAnimationController::NotifyAnimationAborted( 340 void LayerAnimationController::NotifyAnimationAborted(
333 const AnimationEvent& event) { 341 const AnimationEvent& event) {
334 for (size_t i = 0; i < active_animations_.size(); ++i) { 342 for (size_t i = 0; i < active_animations_.size(); ++i) {
335 if (active_animations_[i]->group() == event.group_id && 343 if (active_animations_[i]->group() == event.group_id &&
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 value_observers_); 795 value_observers_);
788 LayerAnimationValueObserver* obs; 796 LayerAnimationValueObserver* obs;
789 while ((obs = it.GetNext()) != NULL) 797 while ((obs = it.GetNext()) != NULL)
790 if (obs->IsActive()) 798 if (obs->IsActive())
791 return true; 799 return true;
792 } 800 }
793 return false; 801 return false;
794 } 802 }
795 803
796 } // namespace cc 804 } // namespace cc
OLDNEW
« no previous file with comments | « cc/animation/animation_delegate.h ('k') | cc/animation/layer_animation_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698