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

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

Issue 1921583003: CC Animation: Let MutatorHostClient deals with elements instead of layers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@elementid
Patch Set: Rename methods in ElementAnimations Created 4 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
« no previous file with comments | « cc/animation/element_animations.h ('k') | cc/animation/element_animations_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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/element_animations.h" 5 #include "cc/animation/element_animations.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 element_id_ = element_id; 47 element_id_ = element_id;
48 } 48 }
49 49
50 void ElementAnimations::InitAffectedElementTypes() { 50 void ElementAnimations::InitAffectedElementTypes() {
51 DCHECK(element_id_); 51 DCHECK(element_id_);
52 DCHECK(animation_host_); 52 DCHECK(animation_host_);
53 53
54 UpdateActivation(FORCE_ACTIVATION); 54 UpdateActivation(FORCE_ACTIVATION);
55 55
56 DCHECK(animation_host_->mutator_host_client()); 56 DCHECK(animation_host_->mutator_host_client());
57 if (animation_host_->mutator_host_client()->IsLayerInTree( 57 if (animation_host_->mutator_host_client()->IsElementInList(
58 element_id_, LayerTreeType::ACTIVE)) { 58 element_id_, ElementListType::ACTIVE)) {
59 set_has_element_in_active_list(true); 59 set_has_element_in_active_list(true);
60 } 60 }
61 if (animation_host_->mutator_host_client()->IsLayerInTree( 61 if (animation_host_->mutator_host_client()->IsElementInList(
62 element_id_, LayerTreeType::PENDING)) { 62 element_id_, ElementListType::PENDING)) {
63 set_has_element_in_pending_list(true); 63 set_has_element_in_pending_list(true);
64 } 64 }
65 } 65 }
66 66
67 void ElementAnimations::ClearAffectedElementTypes() { 67 void ElementAnimations::ClearAffectedElementTypes() {
68 DCHECK(animation_host_); 68 DCHECK(animation_host_);
69 69
70 if (has_element_in_active_list()) 70 if (has_element_in_active_list())
71 OnTransformIsPotentiallyAnimatingChanged(LayerTreeType::ACTIVE, false); 71 OnTransformIsPotentiallyAnimatingChanged(ElementListType::ACTIVE, false);
72 set_has_element_in_active_list(false); 72 set_has_element_in_active_list(false);
73 73
74 if (has_element_in_pending_list()) 74 if (has_element_in_pending_list())
75 OnTransformIsPotentiallyAnimatingChanged(LayerTreeType::PENDING, false); 75 OnTransformIsPotentiallyAnimatingChanged(ElementListType::PENDING, false);
76 set_has_element_in_pending_list(false); 76 set_has_element_in_pending_list(false);
77 77
78 animation_host_->DidDeactivateElementAnimations(this); 78 animation_host_->DidDeactivateElementAnimations(this);
79 UpdateActivation(FORCE_ACTIVATION); 79 UpdateActivation(FORCE_ACTIVATION);
80 } 80 }
81 81
82 void ElementAnimations::LayerRegistered(ElementId element_id, 82 void ElementAnimations::ElementRegistered(ElementId element_id,
83 LayerTreeType tree_type) { 83 ElementListType list_type) {
84 DCHECK_EQ(element_id_, element_id); 84 DCHECK_EQ(element_id_, element_id);
85 85
86 if (tree_type == LayerTreeType::ACTIVE) 86 if (list_type == ElementListType::ACTIVE)
87 set_has_element_in_active_list(true); 87 set_has_element_in_active_list(true);
88 else 88 else
89 set_has_element_in_pending_list(true); 89 set_has_element_in_pending_list(true);
90 } 90 }
91 91
92 void ElementAnimations::LayerUnregistered(ElementId element_id, 92 void ElementAnimations::ElementUnregistered(ElementId element_id,
93 LayerTreeType tree_type) { 93 ElementListType list_type) {
94 DCHECK_EQ(this->element_id(), element_id); 94 DCHECK_EQ(this->element_id(), element_id);
95 if (tree_type == LayerTreeType::ACTIVE) 95 if (list_type == ElementListType::ACTIVE)
96 set_has_element_in_active_list(false); 96 set_has_element_in_active_list(false);
97 else 97 else
98 set_has_element_in_pending_list(false); 98 set_has_element_in_pending_list(false);
99 } 99 }
100 100
101 void ElementAnimations::AddPlayer(AnimationPlayer* player) { 101 void ElementAnimations::AddPlayer(AnimationPlayer* player) {
102 players_list_->Append(player); 102 players_list_->Append(player);
103 } 103 }
104 104
105 void ElementAnimations::RemovePlayer(AnimationPlayer* player) { 105 void ElementAnimations::RemovePlayer(AnimationPlayer* player) {
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 ->ToFilterAnimationCurve() 369 ->ToFilterAnimationCurve()
370 ->HasFilterThatMovesPixels()) 370 ->HasFilterThatMovesPixels())
371 return true; 371 return true;
372 } 372 }
373 373
374 return false; 374 return false;
375 } 375 }
376 376
377 bool ElementAnimations::HasTransformAnimationThatInflatesBounds() const { 377 bool ElementAnimations::HasTransformAnimationThatInflatesBounds() const {
378 return IsCurrentlyAnimatingProperty(TargetProperty::TRANSFORM, 378 return IsCurrentlyAnimatingProperty(TargetProperty::TRANSFORM,
379 LayerTreeType::ACTIVE) || 379 ElementListType::ACTIVE) ||
380 IsCurrentlyAnimatingProperty(TargetProperty::TRANSFORM, 380 IsCurrentlyAnimatingProperty(TargetProperty::TRANSFORM,
381 LayerTreeType::PENDING); 381 ElementListType::PENDING);
382 } 382 }
383 383
384 bool ElementAnimations::FilterAnimationBoundsForBox(const gfx::BoxF& box, 384 bool ElementAnimations::FilterAnimationBoundsForBox(const gfx::BoxF& box,
385 gfx::BoxF* bounds) const { 385 gfx::BoxF* bounds) const {
386 // TODO(avallee): Implement. 386 // TODO(avallee): Implement.
387 return false; 387 return false;
388 } 388 }
389 389
390 bool ElementAnimations::TransformAnimationBoundsForBox( 390 bool ElementAnimations::TransformAnimationBoundsForBox(
391 const gfx::BoxF& box, 391 const gfx::BoxF& box,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 const TransformAnimationCurve* transform_animation_curve = 427 const TransformAnimationCurve* transform_animation_curve =
428 animations_[i]->curve()->ToTransformAnimationCurve(); 428 animations_[i]->curve()->ToTransformAnimationCurve();
429 if (transform_animation_curve->AffectsScale()) 429 if (transform_animation_curve->AffectsScale())
430 return true; 430 return true;
431 } 431 }
432 432
433 return false; 433 return false;
434 } 434 }
435 435
436 bool ElementAnimations::HasOnlyTranslationTransforms( 436 bool ElementAnimations::HasOnlyTranslationTransforms(
437 LayerTreeType tree_type) const { 437 ElementListType list_type) const {
438 for (size_t i = 0; i < animations_.size(); ++i) { 438 for (size_t i = 0; i < animations_.size(); ++i) {
439 if (animations_[i]->is_finished() || 439 if (animations_[i]->is_finished() ||
440 animations_[i]->target_property() != TargetProperty::TRANSFORM) 440 animations_[i]->target_property() != TargetProperty::TRANSFORM)
441 continue; 441 continue;
442 442
443 if ((tree_type == LayerTreeType::ACTIVE && 443 if ((list_type == ElementListType::ACTIVE &&
444 !animations_[i]->affects_active_elements()) || 444 !animations_[i]->affects_active_elements()) ||
445 (tree_type == LayerTreeType::PENDING && 445 (list_type == ElementListType::PENDING &&
446 !animations_[i]->affects_pending_elements())) 446 !animations_[i]->affects_pending_elements()))
447 continue; 447 continue;
448 448
449 const TransformAnimationCurve* transform_animation_curve = 449 const TransformAnimationCurve* transform_animation_curve =
450 animations_[i]->curve()->ToTransformAnimationCurve(); 450 animations_[i]->curve()->ToTransformAnimationCurve();
451 if (!transform_animation_curve->IsTranslation()) 451 if (!transform_animation_curve->IsTranslation())
452 return false; 452 return false;
453 } 453 }
454 454
455 return true; 455 return true;
456 } 456 }
457 457
458 bool ElementAnimations::AnimationsPreserveAxisAlignment() const { 458 bool ElementAnimations::AnimationsPreserveAxisAlignment() const {
459 for (size_t i = 0; i < animations_.size(); ++i) { 459 for (size_t i = 0; i < animations_.size(); ++i) {
460 if (animations_[i]->is_finished() || 460 if (animations_[i]->is_finished() ||
461 animations_[i]->target_property() != TargetProperty::TRANSFORM) 461 animations_[i]->target_property() != TargetProperty::TRANSFORM)
462 continue; 462 continue;
463 463
464 const TransformAnimationCurve* transform_animation_curve = 464 const TransformAnimationCurve* transform_animation_curve =
465 animations_[i]->curve()->ToTransformAnimationCurve(); 465 animations_[i]->curve()->ToTransformAnimationCurve();
466 if (!transform_animation_curve->PreservesAxisAlignment()) 466 if (!transform_animation_curve->PreservesAxisAlignment())
467 return false; 467 return false;
468 } 468 }
469 469
470 return true; 470 return true;
471 } 471 }
472 472
473 bool ElementAnimations::AnimationStartScale(LayerTreeType tree_type, 473 bool ElementAnimations::AnimationStartScale(ElementListType list_type,
474 float* start_scale) const { 474 float* start_scale) const {
475 *start_scale = 0.f; 475 *start_scale = 0.f;
476 for (size_t i = 0; i < animations_.size(); ++i) { 476 for (size_t i = 0; i < animations_.size(); ++i) {
477 if (animations_[i]->is_finished() || 477 if (animations_[i]->is_finished() ||
478 animations_[i]->target_property() != TargetProperty::TRANSFORM) 478 animations_[i]->target_property() != TargetProperty::TRANSFORM)
479 continue; 479 continue;
480 480
481 if ((tree_type == LayerTreeType::ACTIVE && 481 if ((list_type == ElementListType::ACTIVE &&
482 !animations_[i]->affects_active_elements()) || 482 !animations_[i]->affects_active_elements()) ||
483 (tree_type == LayerTreeType::PENDING && 483 (list_type == ElementListType::PENDING &&
484 !animations_[i]->affects_pending_elements())) 484 !animations_[i]->affects_pending_elements()))
485 continue; 485 continue;
486 486
487 bool forward_direction = true; 487 bool forward_direction = true;
488 switch (animations_[i]->direction()) { 488 switch (animations_[i]->direction()) {
489 case Animation::DIRECTION_NORMAL: 489 case Animation::DIRECTION_NORMAL:
490 case Animation::DIRECTION_ALTERNATE: 490 case Animation::DIRECTION_ALTERNATE:
491 forward_direction = animations_[i]->playback_rate() >= 0.0; 491 forward_direction = animations_[i]->playback_rate() >= 0.0;
492 break; 492 break;
493 case Animation::DIRECTION_REVERSE: 493 case Animation::DIRECTION_REVERSE:
494 case Animation::DIRECTION_ALTERNATE_REVERSE: 494 case Animation::DIRECTION_ALTERNATE_REVERSE:
495 forward_direction = animations_[i]->playback_rate() < 0.0; 495 forward_direction = animations_[i]->playback_rate() < 0.0;
496 break; 496 break;
497 } 497 }
498 498
499 const TransformAnimationCurve* transform_animation_curve = 499 const TransformAnimationCurve* transform_animation_curve =
500 animations_[i]->curve()->ToTransformAnimationCurve(); 500 animations_[i]->curve()->ToTransformAnimationCurve();
501 float animation_start_scale = 0.f; 501 float animation_start_scale = 0.f;
502 if (!transform_animation_curve->AnimationStartScale(forward_direction, 502 if (!transform_animation_curve->AnimationStartScale(forward_direction,
503 &animation_start_scale)) 503 &animation_start_scale))
504 return false; 504 return false;
505 *start_scale = std::max(*start_scale, animation_start_scale); 505 *start_scale = std::max(*start_scale, animation_start_scale);
506 } 506 }
507 return true; 507 return true;
508 } 508 }
509 509
510 bool ElementAnimations::MaximumTargetScale(LayerTreeType tree_type, 510 bool ElementAnimations::MaximumTargetScale(ElementListType list_type,
511 float* max_scale) const { 511 float* max_scale) const {
512 *max_scale = 0.f; 512 *max_scale = 0.f;
513 for (size_t i = 0; i < animations_.size(); ++i) { 513 for (size_t i = 0; i < animations_.size(); ++i) {
514 if (animations_[i]->is_finished() || 514 if (animations_[i]->is_finished() ||
515 animations_[i]->target_property() != TargetProperty::TRANSFORM) 515 animations_[i]->target_property() != TargetProperty::TRANSFORM)
516 continue; 516 continue;
517 517
518 if ((tree_type == LayerTreeType::ACTIVE && 518 if ((list_type == ElementListType::ACTIVE &&
519 !animations_[i]->affects_active_elements()) || 519 !animations_[i]->affects_active_elements()) ||
520 (tree_type == LayerTreeType::PENDING && 520 (list_type == ElementListType::PENDING &&
521 !animations_[i]->affects_pending_elements())) 521 !animations_[i]->affects_pending_elements()))
522 continue; 522 continue;
523 523
524 bool forward_direction = true; 524 bool forward_direction = true;
525 switch (animations_[i]->direction()) { 525 switch (animations_[i]->direction()) {
526 case Animation::DIRECTION_NORMAL: 526 case Animation::DIRECTION_NORMAL:
527 case Animation::DIRECTION_ALTERNATE: 527 case Animation::DIRECTION_ALTERNATE:
528 forward_direction = animations_[i]->playback_rate() >= 0.0; 528 forward_direction = animations_[i]->playback_rate() >= 0.0;
529 break; 529 break;
530 case Animation::DIRECTION_REVERSE: 530 case Animation::DIRECTION_REVERSE:
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 else if (!is_active_ && (was_active || force)) 1018 else if (!is_active_ && (was_active || force))
1019 animation_host_->DidDeactivateElementAnimations(this); 1019 animation_host_->DidDeactivateElementAnimations(this);
1020 } 1020 }
1021 } 1021 }
1022 1022
1023 void ElementAnimations::NotifyClientOpacityAnimated( 1023 void ElementAnimations::NotifyClientOpacityAnimated(
1024 float opacity, 1024 float opacity,
1025 bool notify_active_elements, 1025 bool notify_active_elements,
1026 bool notify_pending_elements) { 1026 bool notify_pending_elements) {
1027 if (notify_active_elements && has_element_in_active_list()) 1027 if (notify_active_elements && has_element_in_active_list())
1028 OnOpacityAnimated(LayerTreeType::ACTIVE, opacity); 1028 OnOpacityAnimated(ElementListType::ACTIVE, opacity);
1029 if (notify_pending_elements && has_element_in_pending_list()) 1029 if (notify_pending_elements && has_element_in_pending_list())
1030 OnOpacityAnimated(LayerTreeType::PENDING, opacity); 1030 OnOpacityAnimated(ElementListType::PENDING, opacity);
1031 } 1031 }
1032 1032
1033 void ElementAnimations::NotifyClientTransformAnimated( 1033 void ElementAnimations::NotifyClientTransformAnimated(
1034 const gfx::Transform& transform, 1034 const gfx::Transform& transform,
1035 bool notify_active_elements, 1035 bool notify_active_elements,
1036 bool notify_pending_elements) { 1036 bool notify_pending_elements) {
1037 if (notify_active_elements && has_element_in_active_list()) 1037 if (notify_active_elements && has_element_in_active_list())
1038 OnTransformAnimated(LayerTreeType::ACTIVE, transform); 1038 OnTransformAnimated(ElementListType::ACTIVE, transform);
1039 if (notify_pending_elements && has_element_in_pending_list()) 1039 if (notify_pending_elements && has_element_in_pending_list())
1040 OnTransformAnimated(LayerTreeType::PENDING, transform); 1040 OnTransformAnimated(ElementListType::PENDING, transform);
1041 } 1041 }
1042 1042
1043 void ElementAnimations::NotifyClientFilterAnimated( 1043 void ElementAnimations::NotifyClientFilterAnimated(
1044 const FilterOperations& filters, 1044 const FilterOperations& filters,
1045 bool notify_active_elements, 1045 bool notify_active_elements,
1046 bool notify_pending_elements) { 1046 bool notify_pending_elements) {
1047 if (notify_active_elements && has_element_in_active_list()) 1047 if (notify_active_elements && has_element_in_active_list())
1048 OnFilterAnimated(LayerTreeType::ACTIVE, filters); 1048 OnFilterAnimated(ElementListType::ACTIVE, filters);
1049 if (notify_pending_elements && has_element_in_pending_list()) 1049 if (notify_pending_elements && has_element_in_pending_list())
1050 OnFilterAnimated(LayerTreeType::PENDING, filters); 1050 OnFilterAnimated(ElementListType::PENDING, filters);
1051 } 1051 }
1052 1052
1053 void ElementAnimations::NotifyClientScrollOffsetAnimated( 1053 void ElementAnimations::NotifyClientScrollOffsetAnimated(
1054 const gfx::ScrollOffset& scroll_offset, 1054 const gfx::ScrollOffset& scroll_offset,
1055 bool notify_active_elements, 1055 bool notify_active_elements,
1056 bool notify_pending_elements) { 1056 bool notify_pending_elements) {
1057 if (notify_active_elements && has_element_in_active_list()) 1057 if (notify_active_elements && has_element_in_active_list())
1058 OnScrollOffsetAnimated(LayerTreeType::ACTIVE, scroll_offset); 1058 OnScrollOffsetAnimated(ElementListType::ACTIVE, scroll_offset);
1059 if (notify_pending_elements && has_element_in_pending_list()) 1059 if (notify_pending_elements && has_element_in_pending_list())
1060 OnScrollOffsetAnimated(LayerTreeType::PENDING, scroll_offset); 1060 OnScrollOffsetAnimated(ElementListType::PENDING, scroll_offset);
1061 } 1061 }
1062 1062
1063 void ElementAnimations::NotifyClientAnimationWaitingForDeletion() { 1063 void ElementAnimations::NotifyClientAnimationWaitingForDeletion() {
1064 OnAnimationWaitingForDeletion(); 1064 OnAnimationWaitingForDeletion();
1065 } 1065 }
1066 1066
1067 void ElementAnimations::NotifyClientTransformIsPotentiallyAnimatingChanged( 1067 void ElementAnimations::NotifyClientTransformIsPotentiallyAnimatingChanged(
1068 bool notify_active_elements, 1068 bool notify_active_elements,
1069 bool notify_pending_elements) { 1069 bool notify_pending_elements) {
1070 if (notify_active_elements && has_element_in_active_list()) 1070 if (notify_active_elements && has_element_in_active_list())
1071 OnTransformIsPotentiallyAnimatingChanged( 1071 OnTransformIsPotentiallyAnimatingChanged(
1072 LayerTreeType::ACTIVE, 1072 ElementListType::ACTIVE,
1073 potentially_animating_transform_for_active_elements_); 1073 potentially_animating_transform_for_active_elements_);
1074 if (notify_pending_elements && has_element_in_pending_list()) 1074 if (notify_pending_elements && has_element_in_pending_list())
1075 OnTransformIsPotentiallyAnimatingChanged( 1075 OnTransformIsPotentiallyAnimatingChanged(
1076 LayerTreeType::PENDING, 1076 ElementListType::PENDING,
1077 potentially_animating_transform_for_pending_elements_); 1077 potentially_animating_transform_for_pending_elements_);
1078 } 1078 }
1079 1079
1080 void ElementAnimations::UpdatePotentiallyAnimatingTransform() { 1080 void ElementAnimations::UpdatePotentiallyAnimatingTransform() {
1081 bool was_potentially_animating_transform_for_active_elements = 1081 bool was_potentially_animating_transform_for_active_elements =
1082 potentially_animating_transform_for_active_elements_; 1082 potentially_animating_transform_for_active_elements_;
1083 bool was_potentially_animating_transform_for_pending_elements = 1083 bool was_potentially_animating_transform_for_pending_elements =
1084 potentially_animating_transform_for_pending_elements_; 1084 potentially_animating_transform_for_pending_elements_;
1085 1085
1086 potentially_animating_transform_for_active_elements_ = false; 1086 potentially_animating_transform_for_active_elements_ = false;
(...skipping 26 matching lines...) Expand all
1113 bool ElementAnimations::HasActiveAnimation() const { 1113 bool ElementAnimations::HasActiveAnimation() const {
1114 for (size_t i = 0; i < animations_.size(); ++i) { 1114 for (size_t i = 0; i < animations_.size(); ++i) {
1115 if (!animations_[i]->is_finished()) 1115 if (!animations_[i]->is_finished())
1116 return true; 1116 return true;
1117 } 1117 }
1118 return false; 1118 return false;
1119 } 1119 }
1120 1120
1121 bool ElementAnimations::IsPotentiallyAnimatingProperty( 1121 bool ElementAnimations::IsPotentiallyAnimatingProperty(
1122 TargetProperty::Type target_property, 1122 TargetProperty::Type target_property,
1123 LayerTreeType tree_type) const { 1123 ElementListType list_type) const {
1124 for (size_t i = 0; i < animations_.size(); ++i) { 1124 for (size_t i = 0; i < animations_.size(); ++i) {
1125 if (!animations_[i]->is_finished() && 1125 if (!animations_[i]->is_finished() &&
1126 animations_[i]->target_property() == target_property) { 1126 animations_[i]->target_property() == target_property) {
1127 if ((tree_type == LayerTreeType::ACTIVE && 1127 if ((list_type == ElementListType::ACTIVE &&
1128 animations_[i]->affects_active_elements()) || 1128 animations_[i]->affects_active_elements()) ||
1129 (tree_type == LayerTreeType::PENDING && 1129 (list_type == ElementListType::PENDING &&
1130 animations_[i]->affects_pending_elements())) 1130 animations_[i]->affects_pending_elements()))
1131 return true; 1131 return true;
1132 } 1132 }
1133 } 1133 }
1134 return false; 1134 return false;
1135 } 1135 }
1136 1136
1137 bool ElementAnimations::IsCurrentlyAnimatingProperty( 1137 bool ElementAnimations::IsCurrentlyAnimatingProperty(
1138 TargetProperty::Type target_property, 1138 TargetProperty::Type target_property,
1139 LayerTreeType tree_type) const { 1139 ElementListType list_type) const {
1140 for (size_t i = 0; i < animations_.size(); ++i) { 1140 for (size_t i = 0; i < animations_.size(); ++i) {
1141 if (!animations_[i]->is_finished() && 1141 if (!animations_[i]->is_finished() &&
1142 animations_[i]->InEffect(last_tick_time_) && 1142 animations_[i]->InEffect(last_tick_time_) &&
1143 animations_[i]->target_property() == target_property) { 1143 animations_[i]->target_property() == target_property) {
1144 if ((tree_type == LayerTreeType::ACTIVE && 1144 if ((list_type == ElementListType::ACTIVE &&
1145 animations_[i]->affects_active_elements()) || 1145 animations_[i]->affects_active_elements()) ||
1146 (tree_type == LayerTreeType::PENDING && 1146 (list_type == ElementListType::PENDING &&
1147 animations_[i]->affects_pending_elements())) 1147 animations_[i]->affects_pending_elements()))
1148 return true; 1148 return true;
1149 } 1149 }
1150 } 1150 }
1151 return false; 1151 return false;
1152 } 1152 }
1153 1153
1154 void ElementAnimations::PauseAnimation(int animation_id, 1154 void ElementAnimations::PauseAnimation(int animation_id,
1155 base::TimeDelta time_offset) { 1155 base::TimeDelta time_offset) {
1156 for (size_t i = 0; i < animations_.size(); ++i) { 1156 for (size_t i = 0; i < animations_.size(); ++i) {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1235 return nullptr; 1235 return nullptr;
1236 } 1236 }
1237 1237
1238 Animation* ElementAnimations::GetAnimationById(int animation_id) const { 1238 Animation* ElementAnimations::GetAnimationById(int animation_id) const {
1239 for (size_t i = 0; i < animations_.size(); ++i) 1239 for (size_t i = 0; i < animations_.size(); ++i)
1240 if (animations_[i]->id() == animation_id) 1240 if (animations_[i]->id() == animation_id)
1241 return animations_[i].get(); 1241 return animations_[i].get();
1242 return nullptr; 1242 return nullptr;
1243 } 1243 }
1244 1244
1245 void ElementAnimations::OnFilterAnimated(LayerTreeType tree_type, 1245 void ElementAnimations::OnFilterAnimated(ElementListType list_type,
1246 const FilterOperations& filters) { 1246 const FilterOperations& filters) {
1247 DCHECK(element_id()); 1247 DCHECK(element_id());
1248 DCHECK(animation_host()); 1248 DCHECK(animation_host());
1249 DCHECK(animation_host()->mutator_host_client()); 1249 DCHECK(animation_host()->mutator_host_client());
1250 animation_host()->mutator_host_client()->SetLayerFilterMutated( 1250 animation_host()->mutator_host_client()->SetElementFilterMutated(
1251 element_id(), tree_type, filters); 1251 element_id(), list_type, filters);
1252 } 1252 }
1253 1253
1254 void ElementAnimations::OnOpacityAnimated(LayerTreeType tree_type, 1254 void ElementAnimations::OnOpacityAnimated(ElementListType list_type,
1255 float opacity) { 1255 float opacity) {
1256 DCHECK(element_id()); 1256 DCHECK(element_id());
1257 DCHECK(animation_host()); 1257 DCHECK(animation_host());
1258 DCHECK(animation_host()->mutator_host_client()); 1258 DCHECK(animation_host()->mutator_host_client());
1259 animation_host()->mutator_host_client()->SetLayerOpacityMutated( 1259 animation_host()->mutator_host_client()->SetElementOpacityMutated(
1260 element_id(), tree_type, opacity); 1260 element_id(), list_type, opacity);
1261 } 1261 }
1262 1262
1263 void ElementAnimations::OnTransformAnimated(LayerTreeType tree_type, 1263 void ElementAnimations::OnTransformAnimated(ElementListType list_type,
1264 const gfx::Transform& transform) { 1264 const gfx::Transform& transform) {
1265 DCHECK(element_id()); 1265 DCHECK(element_id());
1266 DCHECK(animation_host()); 1266 DCHECK(animation_host());
1267 DCHECK(animation_host()->mutator_host_client()); 1267 DCHECK(animation_host()->mutator_host_client());
1268 animation_host()->mutator_host_client()->SetLayerTransformMutated( 1268 animation_host()->mutator_host_client()->SetElementTransformMutated(
1269 element_id(), tree_type, transform); 1269 element_id(), list_type, transform);
1270 } 1270 }
1271 1271
1272 void ElementAnimations::OnScrollOffsetAnimated( 1272 void ElementAnimations::OnScrollOffsetAnimated(
1273 LayerTreeType tree_type, 1273 ElementListType list_type,
1274 const gfx::ScrollOffset& scroll_offset) { 1274 const gfx::ScrollOffset& scroll_offset) {
1275 DCHECK(element_id()); 1275 DCHECK(element_id());
1276 DCHECK(animation_host()); 1276 DCHECK(animation_host());
1277 DCHECK(animation_host()->mutator_host_client()); 1277 DCHECK(animation_host()->mutator_host_client());
1278 animation_host()->mutator_host_client()->SetLayerScrollOffsetMutated( 1278 animation_host()->mutator_host_client()->SetElementScrollOffsetMutated(
1279 element_id(), tree_type, scroll_offset); 1279 element_id(), list_type, scroll_offset);
1280 } 1280 }
1281 1281
1282 void ElementAnimations::OnAnimationWaitingForDeletion() { 1282 void ElementAnimations::OnAnimationWaitingForDeletion() {
1283 // TODO(loyso): Invalidate AnimationHost::SetNeedsPushProperties here. 1283 // TODO(loyso): Invalidate AnimationHost::SetNeedsPushProperties here.
1284 // But we always do PushProperties in AnimationHost for now. crbug.com/604280 1284 // But we always do PushProperties in AnimationHost for now. crbug.com/604280
1285 DCHECK(animation_host()); 1285 DCHECK(animation_host());
1286 animation_host()->OnAnimationWaitingForDeletion(); 1286 animation_host()->OnAnimationWaitingForDeletion();
1287 } 1287 }
1288 1288
1289 void ElementAnimations::OnTransformIsPotentiallyAnimatingChanged( 1289 void ElementAnimations::OnTransformIsPotentiallyAnimatingChanged(
1290 LayerTreeType tree_type, 1290 ElementListType list_type,
1291 bool is_animating) { 1291 bool is_animating) {
1292 DCHECK(element_id()); 1292 DCHECK(element_id());
1293 DCHECK(animation_host()); 1293 DCHECK(animation_host());
1294 DCHECK(animation_host()->mutator_host_client()); 1294 DCHECK(animation_host()->mutator_host_client());
1295 animation_host() 1295 animation_host()
1296 ->mutator_host_client() 1296 ->mutator_host_client()
1297 ->LayerTransformIsPotentiallyAnimatingChanged(element_id(), tree_type, 1297 ->ElementTransformIsPotentiallyAnimatingChanged(element_id(), list_type,
1298 is_animating); 1298 is_animating);
1299 } 1299 }
1300 1300
1301 void ElementAnimations::NotifyPlayersAnimationStarted( 1301 void ElementAnimations::NotifyPlayersAnimationStarted(
1302 base::TimeTicks monotonic_time, 1302 base::TimeTicks monotonic_time,
1303 TargetProperty::Type target_property, 1303 TargetProperty::Type target_property,
1304 int group) { 1304 int group) {
1305 for (PlayersListNode* node = players_list_->head(); 1305 for (PlayersListNode* node = players_list_->head();
1306 node != players_list_->end(); node = node->next()) { 1306 node != players_list_->end(); node = node->next()) {
1307 AnimationPlayer* player = node->value(); 1307 AnimationPlayer* player = node->value();
1308 player->NotifyAnimationStarted(monotonic_time, target_property, group); 1308 player->NotifyAnimationStarted(monotonic_time, target_property, group);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1351 if (animation_host()) { 1351 if (animation_host()) {
1352 DCHECK(animation_host()->mutator_host_client()); 1352 DCHECK(animation_host()->mutator_host_client());
1353 return animation_host()->mutator_host_client()->GetScrollOffsetForAnimation( 1353 return animation_host()->mutator_host_client()->GetScrollOffsetForAnimation(
1354 element_id()); 1354 element_id());
1355 } 1355 }
1356 1356
1357 return gfx::ScrollOffset(); 1357 return gfx::ScrollOffset();
1358 } 1358 }
1359 1359
1360 } // namespace cc 1360 } // namespace cc
OLDNEW
« no previous file with comments | « cc/animation/element_animations.h ('k') | cc/animation/element_animations_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698