| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 if (endKeyframe->offset() != 1) { | 165 if (endKeyframe->offset() != 1) { |
| 166 endKeyframe = StringKeyframe::create(); | 166 endKeyframe = StringKeyframe::create(); |
| 167 endKeyframe->setOffset(1); | 167 endKeyframe->setOffset(1); |
| 168 endKeyframe->setEasing(defaultTimingFunction); | 168 endKeyframe->setEasing(defaultTimingFunction); |
| 169 keyframes.push_back(endKeyframe); | 169 keyframes.push_back(endKeyframe); |
| 170 } | 170 } |
| 171 DCHECK_GE(keyframes.size(), 2U); | 171 DCHECK_GE(keyframes.size(), 2U); |
| 172 DCHECK(!keyframes.front()->offset()); | 172 DCHECK(!keyframes.front()->offset()); |
| 173 DCHECK_EQ(keyframes.back()->offset(), 1); | 173 DCHECK_EQ(keyframes.back()->offset(), 1); |
| 174 | 174 |
| 175 // This is used for use counting neutral keyframes running on the compositor. | |
| 176 PropertySet allProperties; | |
| 177 for (const auto& keyframe : keyframes) { | |
| 178 for (const auto& property : keyframe->properties()) | |
| 179 allProperties.add(property.cssProperty()); | |
| 180 } | |
| 181 const PropertyHandleSet& startKeyframeProperties = | |
| 182 startKeyframe->properties(); | |
| 183 const PropertyHandleSet& endKeyframeProperties = endKeyframe->properties(); | |
| 184 bool missingStartValues = | |
| 185 startKeyframeProperties.size() < allProperties.size(); | |
| 186 bool missingEndValues = endKeyframeProperties.size() < allProperties.size(); | |
| 187 if (missingStartValues || missingEndValues) { | |
| 188 for (CSSPropertyID property : allProperties) { | |
| 189 bool startNeedsValue = | |
| 190 missingStartValues && | |
| 191 !startKeyframeProperties.contains(PropertyHandle(property)); | |
| 192 bool endNeedsValue = | |
| 193 missingEndValues && | |
| 194 !endKeyframeProperties.contains(PropertyHandle(property)); | |
| 195 if (!startNeedsValue && !endNeedsValue) | |
| 196 continue; | |
| 197 if (CompositorAnimations::isCompositableProperty(property)) | |
| 198 UseCounter::count( | |
| 199 elementForScoping->document(), | |
| 200 UseCounter::SyntheticKeyframesInCompositedCSSAnimation); | |
| 201 } | |
| 202 } | |
| 203 | |
| 204 StringKeyframeEffectModel* model = | 175 StringKeyframeEffectModel* model = |
| 205 StringKeyframeEffectModel::create(keyframes, &keyframes[0]->easing()); | 176 StringKeyframeEffectModel::create(keyframes, &keyframes[0]->easing()); |
| 206 if (animationIndex > 0 && model->hasSyntheticKeyframes()) | 177 if (animationIndex > 0 && model->hasSyntheticKeyframes()) |
| 207 UseCounter::count(elementForScoping->document(), | 178 UseCounter::count(elementForScoping->document(), |
| 208 UseCounter::CSSAnimationsStackedNeutralKeyframe); | 179 UseCounter::CSSAnimationsStackedNeutralKeyframe); |
| 209 return model; | 180 return model; |
| 210 } | 181 } |
| 211 | 182 |
| 212 } // namespace | 183 } // namespace |
| 213 | 184 |
| (...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1097 isCustomPropertyHandle); | 1068 isCustomPropertyHandle); |
| 1098 } | 1069 } |
| 1099 | 1070 |
| 1100 DEFINE_TRACE(CSSAnimations) { | 1071 DEFINE_TRACE(CSSAnimations) { |
| 1101 visitor->trace(m_transitions); | 1072 visitor->trace(m_transitions); |
| 1102 visitor->trace(m_pendingUpdate); | 1073 visitor->trace(m_pendingUpdate); |
| 1103 visitor->trace(m_runningAnimations); | 1074 visitor->trace(m_runningAnimations); |
| 1104 } | 1075 } |
| 1105 | 1076 |
| 1106 } // namespace blink | 1077 } // namespace blink |
| OLD | NEW |