| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 KeyframeEffectModel::KeyframeVector keyframes(2); | 55 KeyframeEffectModel::KeyframeVector keyframes(2); |
| 56 keyframes[0] = Keyframe::create(); | 56 keyframes[0] = Keyframe::create(); |
| 57 keyframes[0]->setOffset(0.0); | 57 keyframes[0]->setOffset(0.0); |
| 58 keyframes[0]->setPropertyValue(CSSPropertyLeft, zeroValue); | 58 keyframes[0]->setPropertyValue(CSSPropertyLeft, zeroValue); |
| 59 keyframes[1] = Keyframe::create(); | 59 keyframes[1] = Keyframe::create(); |
| 60 keyframes[1]->setOffset(1.0); | 60 keyframes[1]->setOffset(1.0); |
| 61 keyframes[1]->setPropertyValue(CSSPropertyLeft, oneValue); | 61 keyframes[1]->setPropertyValue(CSSPropertyLeft, oneValue); |
| 62 return keyframes; | 62 return keyframes; |
| 63 } | 63 } |
| 64 | 64 |
| 65 void expectDoubleValue(double expectedValue, PassRefPtr<AnimatableValue> value) | 65 void expectProperty(CSSPropertyID property, PassRefPtr<Interpolation> interpolat
ionValue) |
| 66 { | 66 { |
| 67 LegacyStyleInterpolation *interpolation = static_cast<LegacyStyleInterpolati
on *>(interpolationValue.get()); |
| 68 ASSERT_EQ(property, interpolation->id()); |
| 69 } |
| 70 |
| 71 void expectDoubleValue(double expectedValue, PassRefPtr<Interpolation> interpola
tionValue) |
| 72 { |
| 73 LegacyStyleInterpolation *interpolation = static_cast<LegacyStyleInterpolati
on *>(interpolationValue.get()); |
| 74 RefPtr<AnimatableValue> value = interpolation->currentValue(); |
| 75 |
| 67 ASSERT_TRUE(value->isLength() || value->isUnknown()); | 76 ASSERT_TRUE(value->isLength() || value->isUnknown()); |
| 68 | 77 |
| 69 double actualValue; | 78 double actualValue; |
| 70 if (value->isLength()) | 79 if (value->isLength()) |
| 71 actualValue = toCSSPrimitiveValue(toAnimatableLength(value.get())->toCSS
Value().get())->getDoubleValue(); | 80 actualValue = toCSSPrimitiveValue(toAnimatableLength(value.get())->toCSS
Value().get())->getDoubleValue(); |
| 72 else | 81 else |
| 73 actualValue = toCSSPrimitiveValue(toAnimatableUnknown(value.get())->toCS
SValue().get())->getDoubleValue(); | 82 actualValue = toCSSPrimitiveValue(toAnimatableUnknown(value.get())->toCS
SValue().get())->getDoubleValue(); |
| 74 | 83 |
| 75 EXPECT_FLOAT_EQ(static_cast<float>(expectedValue), actualValue); | 84 EXPECT_FLOAT_EQ(static_cast<float>(expectedValue), actualValue); |
| 76 } | 85 } |
| 77 | 86 |
| 78 const AnimationEffect::CompositableValue* findValue(const AnimationEffect::Compo
sitableValueList& values, CSSPropertyID id) | 87 Interpolation* findValue(Vector<RefPtr<Interpolation> >& values, CSSPropertyID i
d) |
| 79 { | 88 { |
| 80 for (size_t i = 0; i < values.size(); ++i) { | 89 for (size_t i = 0; i < values.size(); ++i) { |
| 81 const std::pair<CSSPropertyID, RefPtr<AnimationEffect::CompositableValue
> >& value = values.at(i); | 90 LegacyStyleInterpolation *value = static_cast<LegacyStyleInterpolation *
>(values.at(i).get()); |
| 82 if (value.first == id) | 91 if (value->id() == id) |
| 83 return value.second.get(); | 92 return value; |
| 84 } | 93 } |
| 85 return 0; | 94 return 0; |
| 86 } | 95 } |
| 87 | 96 |
| 88 | 97 |
| 89 TEST(AnimationKeyframeEffectModel, BasicOperation) | 98 TEST(AnimationKeyframeEffectModel, BasicOperation) |
| 90 { | 99 { |
| 91 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(unknow
nAnimatableValue(3.0), unknownAnimatableValue(5.0)); | 100 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(unknow
nAnimatableValue(3.0), unknownAnimatableValue(5.0)); |
| 92 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 101 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 93 OwnPtr<AnimationEffect::CompositableValueList> values = effect->sample(0, 0.
6); | 102 OwnPtr<Vector<RefPtr<Interpolation> > > values = effect->sample(0, 0.6); |
| 94 ASSERT_EQ(1UL, values->size()); | 103 ASSERT_EQ(1UL, values->size()); |
| 95 EXPECT_EQ(CSSPropertyLeft, values->at(0).first); | 104 expectProperty(CSSPropertyLeft, values->at(0)); |
| 96 expectDoubleValue(5.0, values->at(0).second->compositeOnto(unknownAnimatable
Value(7.0))); | 105 expectDoubleValue(5.0, values->at(0)); |
| 97 } | 106 } |
| 98 | 107 |
| 99 TEST(AnimationKeyframeEffectModel, CompositeReplaceNonInterpolable) | 108 TEST(AnimationKeyframeEffectModel, CompositeReplaceNonInterpolable) |
| 100 { | 109 { |
| 101 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(unknow
nAnimatableValue(3.0), unknownAnimatableValue(5.0)); | 110 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(unknow
nAnimatableValue(3.0), unknownAnimatableValue(5.0)); |
| 102 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); | 111 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); |
| 103 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); | 112 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); |
| 104 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 113 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 105 expectDoubleValue(5.0, effect->sample(0, 0.6)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 114 expectDoubleValue(5.0, effect->sample(0, 0.6)->at(0)); |
| 106 } | 115 } |
| 107 | 116 |
| 108 TEST(AnimationKeyframeEffectModel, CompositeReplace) | 117 TEST(AnimationKeyframeEffectModel, CompositeReplace) |
| 109 { | 118 { |
| 110 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); | 119 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); |
| 111 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); | 120 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); |
| 112 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); | 121 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); |
| 113 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 122 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 114 expectDoubleValue(3.0 * 0.4 + 5.0 * 0.6, effect->sample(0, 0.6)->at(0).secon
d->compositeOnto(unknownAnimatableValue(7.0))); | 123 expectDoubleValue(3.0 * 0.4 + 5.0 * 0.6, effect->sample(0, 0.6)->at(0)); |
| 115 } | 124 } |
| 116 | 125 |
| 117 TEST(AnimationKeyframeEffectModel, CompositeAdd) | 126 TEST(AnimationKeyframeEffectModel, CompositeAdd) |
| 118 { | 127 { |
| 119 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); | 128 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); |
| 120 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); | 129 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); |
| 121 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); | 130 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); |
| 122 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 131 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 123 expectDoubleValue((7.0 + 3.0) * 0.4 + (7.0 + 5.0) * 0.6, effect->sample(0, 0
.6)->at(0).second->compositeOnto(pixelAnimatableValue(7.0))); | 132 expectDoubleValue((7.0 + 3.0) * 0.4 + (7.0 + 5.0) * 0.6, effect->sample(0, 0
.6)->at(0)); |
| 124 } | 133 } |
| 125 | 134 |
| 126 TEST(AnimationKeyframeEffectModel, ExtrapolateReplaceNonInterpolable) | 135 TEST(AnimationKeyframeEffectModel, ExtrapolateReplaceNonInterpolable) |
| 127 { | 136 { |
| 128 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(unknow
nAnimatableValue(3.0), unknownAnimatableValue(5.0)); | 137 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(unknow
nAnimatableValue(3.0), unknownAnimatableValue(5.0)); |
| 129 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 138 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 130 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); | 139 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); |
| 131 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); | 140 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); |
| 132 expectDoubleValue(5.0, effect->sample(0, 1.6)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 141 expectDoubleValue(5.0, effect->sample(0, 1.6)->at(0)); |
| 133 } | 142 } |
| 134 | 143 |
| 135 TEST(AnimationKeyframeEffectModel, ExtrapolateReplace) | 144 TEST(AnimationKeyframeEffectModel, ExtrapolateReplace) |
| 136 { | 145 { |
| 137 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); | 146 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); |
| 138 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 147 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 139 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); | 148 keyframes[0]->setComposite(AnimationEffect::CompositeReplace); |
| 140 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); | 149 keyframes[1]->setComposite(AnimationEffect::CompositeReplace); |
| 141 expectDoubleValue(3.0 * -0.6 + 5.0 * 1.6, effect->sample(0, 1.6)->at(0).seco
nd->compositeOnto(pixelAnimatableValue(7.0))); | 150 expectDoubleValue(3.0 * -0.6 + 5.0 * 1.6, effect->sample(0, 1.6)->at(0)); |
| 142 } | 151 } |
| 143 | 152 |
| 144 TEST(AnimationKeyframeEffectModel, ExtrapolateAdd) | 153 TEST(AnimationKeyframeEffectModel, ExtrapolateAdd) |
| 145 { | 154 { |
| 146 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); | 155 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); |
| 147 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); | 156 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); |
| 148 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); | 157 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); |
| 149 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 158 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 150 expectDoubleValue((7.0 + 3.0) * -0.6 + (7.0 + 5.0) * 1.6, effect->sample(0,
1.6)->at(0).second->compositeOnto(pixelAnimatableValue(7.0))); | 159 expectDoubleValue((7.0 + 3.0) * -0.6 + (7.0 + 5.0) * 1.6, effect->sample(0,
1.6)->at(0)); |
| 151 } | 160 } |
| 152 | 161 |
| 153 TEST(AnimationKeyframeEffectModel, ZeroKeyframes) | 162 TEST(AnimationKeyframeEffectModel, ZeroKeyframes) |
| 154 { | 163 { |
| 155 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(KeyframeEff
ectModel::KeyframeVector()); | 164 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(KeyframeEff
ectModel::KeyframeVector()); |
| 156 EXPECT_TRUE(effect->sample(0, 0.5)->isEmpty()); | 165 EXPECT_TRUE(effect->sample(0, 0.5)->isEmpty()); |
| 157 } | 166 } |
| 158 | 167 |
| 159 TEST(AnimationKeyframeEffectModel, SingleKeyframeAtOffsetZero) | 168 TEST(AnimationKeyframeEffectModel, SingleKeyframeAtOffsetZero) |
| 160 { | 169 { |
| 161 KeyframeEffectModel::KeyframeVector keyframes(1); | 170 KeyframeEffectModel::KeyframeVector keyframes(1); |
| 162 keyframes[0] = Keyframe::create(); | 171 keyframes[0] = Keyframe::create(); |
| 163 keyframes[0]->setOffset(0.0); | 172 keyframes[0]->setOffset(0.0); |
| 164 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; | 173 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; |
| 165 | 174 |
| 166 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 175 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 167 expectDoubleValue(3.0, effect->sample(0, 0.6)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 176 expectDoubleValue(3.0, effect->sample(0, 0.6)->at(0)); |
| 168 } | 177 } |
| 169 | 178 |
| 170 TEST(AnimationKeyframeEffectModel, SingleKeyframeAtOffsetOne) | 179 TEST(AnimationKeyframeEffectModel, SingleKeyframeAtOffsetOne) |
| 171 { | 180 { |
| 172 KeyframeEffectModel::KeyframeVector keyframes(1); | 181 KeyframeEffectModel::KeyframeVector keyframes(1); |
| 173 keyframes[0] = Keyframe::create(); | 182 keyframes[0] = Keyframe::create(); |
| 174 keyframes[0]->setOffset(1.0); | 183 keyframes[0]->setOffset(1.0); |
| 175 keyframes[0]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(5.0)); | 184 keyframes[0]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(5.0)); |
| 176 | 185 |
| 177 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 186 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 178 expectDoubleValue(7.0 * 0.4 + 5.0 * 0.6, effect->sample(0, 0.6)->at(0).secon
d->compositeOnto(pixelAnimatableValue(7.0))); | 187 expectDoubleValue(7.0 * 0.4 + 5.0 * 0.6, effect->sample(0, 0.6)->at(0)); |
| 179 } | 188 } |
| 180 | 189 |
| 181 TEST(AnimationKeyframeEffectModel, MoreThanTwoKeyframes) | 190 TEST(AnimationKeyframeEffectModel, MoreThanTwoKeyframes) |
| 182 { | 191 { |
| 183 KeyframeEffectModel::KeyframeVector keyframes(3); | 192 KeyframeEffectModel::KeyframeVector keyframes(3); |
| 184 keyframes[0] = Keyframe::create(); | 193 keyframes[0] = Keyframe::create(); |
| 185 keyframes[0]->setOffset(0.0); | 194 keyframes[0]->setOffset(0.0); |
| 186 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; | 195 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; |
| 187 keyframes[1] = Keyframe::create(); | 196 keyframes[1] = Keyframe::create(); |
| 188 keyframes[1]->setOffset(0.5); | 197 keyframes[1]->setOffset(0.5); |
| 189 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; | 198 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; |
| 190 keyframes[2] = Keyframe::create(); | 199 keyframes[2] = Keyframe::create(); |
| 191 keyframes[2]->setOffset(1.0); | 200 keyframes[2]->setOffset(1.0); |
| 192 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; | 201 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; |
| 193 | 202 |
| 194 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 203 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 195 expectDoubleValue(4.0, effect->sample(0, 0.3)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 204 expectDoubleValue(4.0, effect->sample(0, 0.3)->at(0)); |
| 196 expectDoubleValue(5.0, effect->sample(0, 0.8)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 205 expectDoubleValue(5.0, effect->sample(0, 0.8)->at(0)); |
| 197 } | 206 } |
| 198 | 207 |
| 199 TEST(AnimationKeyframeEffectModel, EndKeyframeOffsetsUnspecified) | 208 TEST(AnimationKeyframeEffectModel, EndKeyframeOffsetsUnspecified) |
| 200 { | 209 { |
| 201 KeyframeEffectModel::KeyframeVector keyframes(3); | 210 KeyframeEffectModel::KeyframeVector keyframes(3); |
| 202 keyframes[0] = Keyframe::create(); | 211 keyframes[0] = Keyframe::create(); |
| 203 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; | 212 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; |
| 204 keyframes[1] = Keyframe::create(); | 213 keyframes[1] = Keyframe::create(); |
| 205 keyframes[1]->setOffset(0.5); | 214 keyframes[1]->setOffset(0.5); |
| 206 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; | 215 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; |
| 207 keyframes[2] = Keyframe::create(); | 216 keyframes[2] = Keyframe::create(); |
| 208 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; | 217 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; |
| 209 | 218 |
| 210 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 219 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 211 expectDoubleValue(3.0, effect->sample(0, 0.1)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 220 expectDoubleValue(3.0, effect->sample(0, 0.1)->at(0)); |
| 212 expectDoubleValue(4.0, effect->sample(0, 0.6)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 221 expectDoubleValue(4.0, effect->sample(0, 0.6)->at(0)); |
| 213 expectDoubleValue(5.0, effect->sample(0, 0.9)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 222 expectDoubleValue(5.0, effect->sample(0, 0.9)->at(0)); |
| 214 } | 223 } |
| 215 | 224 |
| 216 TEST(AnimationKeyframeEffectModel, SampleOnKeyframe) | 225 TEST(AnimationKeyframeEffectModel, SampleOnKeyframe) |
| 217 { | 226 { |
| 218 KeyframeEffectModel::KeyframeVector keyframes(3); | 227 KeyframeEffectModel::KeyframeVector keyframes(3); |
| 219 keyframes[0] = Keyframe::create(); | 228 keyframes[0] = Keyframe::create(); |
| 220 keyframes[0]->setOffset(0.0); | 229 keyframes[0]->setOffset(0.0); |
| 221 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; | 230 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; |
| 222 keyframes[1] = Keyframe::create(); | 231 keyframes[1] = Keyframe::create(); |
| 223 keyframes[1]->setOffset(0.5); | 232 keyframes[1]->setOffset(0.5); |
| 224 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; | 233 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; |
| 225 keyframes[2] = Keyframe::create(); | 234 keyframes[2] = Keyframe::create(); |
| 226 keyframes[2]->setOffset(1.0); | 235 keyframes[2]->setOffset(1.0); |
| 227 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; | 236 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; |
| 228 | 237 |
| 229 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 238 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 230 expectDoubleValue(3.0, effect->sample(0, 0.0)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 239 expectDoubleValue(3.0, effect->sample(0, 0.0)->at(0)); |
| 231 expectDoubleValue(4.0, effect->sample(0, 0.5)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 240 expectDoubleValue(4.0, effect->sample(0, 0.5)->at(0)); |
| 232 expectDoubleValue(5.0, effect->sample(0, 1.0)->at(0).second->compositeOnto(u
nknownAnimatableValue(7.0))); | 241 expectDoubleValue(5.0, effect->sample(0, 1.0)->at(0)); |
| 233 } | |
| 234 | |
| 235 // Note that this tests an implementation detail, not behaviour defined by the s
pec. | |
| 236 TEST(AnimationKeyframeEffectModel, SampleReturnsSameAnimatableValueInstance) | |
| 237 { | |
| 238 AnimatableValue* threePixelsValue = unknownAnimatableValue(3.0); | |
| 239 AnimatableValue* fourPixelsValue = unknownAnimatableValue(4.0); | |
| 240 AnimatableValue* fivePixelsValue = unknownAnimatableValue(5.0); | |
| 241 | |
| 242 KeyframeEffectModel::KeyframeVector keyframes(3); | |
| 243 keyframes[0] = Keyframe::create(); | |
| 244 keyframes[0]->setOffset(0.0); | |
| 245 keyframes[0]->setPropertyValue(CSSPropertyLeft, threePixelsValue); | |
| 246 keyframes[1] = Keyframe::create(); | |
| 247 keyframes[1]->setOffset(0.5); | |
| 248 keyframes[1]->setPropertyValue(CSSPropertyLeft, fourPixelsValue); | |
| 249 keyframes[2] = Keyframe::create(); | |
| 250 keyframes[2]->setOffset(1.0); | |
| 251 keyframes[2]->setPropertyValue(CSSPropertyLeft, fivePixelsValue); | |
| 252 | |
| 253 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | |
| 254 EXPECT_EQ(threePixelsValue, effect->sample(0, 0.0)->at(0).second->compositeO
nto(unknownAnimatableValue(7.0))); | |
| 255 EXPECT_EQ(threePixelsValue, effect->sample(0, 0.1)->at(0).second->compositeO
nto(unknownAnimatableValue(7.0))); | |
| 256 EXPECT_EQ(fourPixelsValue, effect->sample(0, 0.4)->at(0).second->compositeOn
to(unknownAnimatableValue(7.0))); | |
| 257 EXPECT_EQ(fourPixelsValue, effect->sample(0, 0.5)->at(0).second->compositeOn
to(unknownAnimatableValue(7.0))); | |
| 258 EXPECT_EQ(fourPixelsValue, effect->sample(0, 0.6)->at(0).second->compositeOn
to(unknownAnimatableValue(7.0))); | |
| 259 EXPECT_EQ(fivePixelsValue, effect->sample(0, 0.9)->at(0).second->compositeOn
to(unknownAnimatableValue(7.0))); | |
| 260 EXPECT_EQ(fivePixelsValue, effect->sample(0, 1.0)->at(0).second->compositeOn
to(unknownAnimatableValue(7.0))); | |
| 261 } | 242 } |
| 262 | 243 |
| 263 TEST(AnimationKeyframeEffectModel, MultipleKeyframesWithSameOffset) | 244 TEST(AnimationKeyframeEffectModel, MultipleKeyframesWithSameOffset) |
| 264 { | 245 { |
| 265 KeyframeEffectModel::KeyframeVector keyframes(7); | 246 KeyframeEffectModel::KeyframeVector keyframes(7); |
| 266 keyframes[0] = Keyframe::create(); | 247 keyframes[0] = Keyframe::create(); |
| 267 keyframes[0]->setOffset(0.1); | 248 keyframes[0]->setOffset(0.1); |
| 268 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(1.0))
; | 249 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(1.0))
; |
| 269 keyframes[1] = Keyframe::create(); | 250 keyframes[1] = Keyframe::create(); |
| 270 keyframes[1]->setOffset(0.1); | 251 keyframes[1]->setOffset(0.1); |
| 271 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(2.0))
; | 252 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(2.0))
; |
| 272 keyframes[2] = Keyframe::create(); | 253 keyframes[2] = Keyframe::create(); |
| 273 keyframes[2]->setOffset(0.5); | 254 keyframes[2]->setOffset(0.5); |
| 274 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; | 255 keyframes[2]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; |
| 275 keyframes[3] = Keyframe::create(); | 256 keyframes[3] = Keyframe::create(); |
| 276 keyframes[3]->setOffset(0.5); | 257 keyframes[3]->setOffset(0.5); |
| 277 keyframes[3]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; | 258 keyframes[3]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(4.0))
; |
| 278 keyframes[4] = Keyframe::create(); | 259 keyframes[4] = Keyframe::create(); |
| 279 keyframes[4]->setOffset(0.5); | 260 keyframes[4]->setOffset(0.5); |
| 280 keyframes[4]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; | 261 keyframes[4]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; |
| 281 keyframes[5] = Keyframe::create(); | 262 keyframes[5] = Keyframe::create(); |
| 282 keyframes[5]->setOffset(0.9); | 263 keyframes[5]->setOffset(0.9); |
| 283 keyframes[5]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(6.0))
; | 264 keyframes[5]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(6.0))
; |
| 284 keyframes[6] = Keyframe::create(); | 265 keyframes[6] = Keyframe::create(); |
| 285 keyframes[6]->setOffset(0.9); | 266 keyframes[6]->setOffset(0.9); |
| 286 keyframes[6]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(7.0))
; | 267 keyframes[6]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(7.0))
; |
| 287 | 268 |
| 288 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 269 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 289 expectDoubleValue(2.0, effect->sample(0, 0.0)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 270 expectDoubleValue(2.0, effect->sample(0, 0.0)->at(0)); |
| 290 expectDoubleValue(2.0, effect->sample(0, 0.2)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 271 expectDoubleValue(2.0, effect->sample(0, 0.2)->at(0)); |
| 291 expectDoubleValue(3.0, effect->sample(0, 0.4)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 272 expectDoubleValue(3.0, effect->sample(0, 0.4)->at(0)); |
| 292 expectDoubleValue(5.0, effect->sample(0, 0.5)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 273 expectDoubleValue(5.0, effect->sample(0, 0.5)->at(0)); |
| 293 expectDoubleValue(5.0, effect->sample(0, 0.6)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 274 expectDoubleValue(5.0, effect->sample(0, 0.6)->at(0)); |
| 294 expectDoubleValue(6.0, effect->sample(0, 0.8)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 275 expectDoubleValue(6.0, effect->sample(0, 0.8)->at(0)); |
| 295 expectDoubleValue(6.0, effect->sample(0, 1.0)->at(0).second->compositeOnto(u
nknownAnimatableValue(8.0))); | 276 expectDoubleValue(6.0, effect->sample(0, 1.0)->at(0)); |
| 296 } | 277 } |
| 297 | 278 |
| 298 TEST(AnimationKeyframeEffectModel, PerKeyframeComposite) | 279 TEST(AnimationKeyframeEffectModel, PerKeyframeComposite) |
| 299 { | 280 { |
| 300 KeyframeEffectModel::KeyframeVector keyframes(2); | 281 KeyframeEffectModel::KeyframeVector keyframes(2); |
| 301 keyframes[0] = Keyframe::create(); | 282 keyframes[0] = Keyframe::create(); |
| 302 keyframes[0]->setOffset(0.0); | 283 keyframes[0]->setOffset(0.0); |
| 303 keyframes[0]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(3.0)); | 284 keyframes[0]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(3.0)); |
| 304 keyframes[1] = Keyframe::create(); | 285 keyframes[1] = Keyframe::create(); |
| 305 keyframes[1]->setOffset(1.0); | 286 keyframes[1]->setOffset(1.0); |
| 306 keyframes[1]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(5.0)); | 287 keyframes[1]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(5.0)); |
| 307 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); | 288 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); |
| 308 | 289 |
| 309 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 290 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 310 expectDoubleValue(3.0 * 0.4 + (7.0 + 5.0) * 0.6, effect->sample(0, 0.6)->at(
0).second->compositeOnto(pixelAnimatableValue(7.0))); | 291 expectDoubleValue(3.0 * 0.4 + (7.0 + 5.0) * 0.6, effect->sample(0, 0.6)->at(
0)); |
| 311 } | 292 } |
| 312 | 293 |
| 313 TEST(AnimationKeyframeEffectModel, MultipleProperties) | 294 TEST(AnimationKeyframeEffectModel, MultipleProperties) |
| 314 { | 295 { |
| 315 KeyframeEffectModel::KeyframeVector keyframes(2); | 296 KeyframeEffectModel::KeyframeVector keyframes(2); |
| 316 keyframes[0] = Keyframe::create(); | 297 keyframes[0] = Keyframe::create(); |
| 317 keyframes[0]->setOffset(0.0); | 298 keyframes[0]->setOffset(0.0); |
| 318 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; | 299 keyframes[0]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(3.0))
; |
| 319 keyframes[0]->setPropertyValue(CSSPropertyRight, unknownAnimatableValue(4.0)
); | 300 keyframes[0]->setPropertyValue(CSSPropertyRight, unknownAnimatableValue(4.0)
); |
| 320 keyframes[1] = Keyframe::create(); | 301 keyframes[1] = Keyframe::create(); |
| 321 keyframes[1]->setOffset(1.0); | 302 keyframes[1]->setOffset(1.0); |
| 322 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; | 303 keyframes[1]->setPropertyValue(CSSPropertyLeft, unknownAnimatableValue(5.0))
; |
| 323 keyframes[1]->setPropertyValue(CSSPropertyRight, unknownAnimatableValue(6.0)
); | 304 keyframes[1]->setPropertyValue(CSSPropertyRight, unknownAnimatableValue(6.0)
); |
| 324 | 305 |
| 325 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 306 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 326 OwnPtr<AnimationEffect::CompositableValueList> values = effect->sample(0, 0.
6); | 307 OwnPtr<Vector<RefPtr<Interpolation> > > values = effect->sample(0, 0.6); |
| 327 EXPECT_EQ(2UL, values->size()); | 308 EXPECT_EQ(2UL, values->size()); |
| 328 const AnimationEffect::CompositableValue* leftValue = findValue(*values.get(
), CSSPropertyLeft); | 309 Interpolation* leftValue = findValue(*values.get(), CSSPropertyLeft); |
| 329 ASSERT_TRUE(leftValue); | 310 ASSERT_TRUE(leftValue); |
| 330 expectDoubleValue(5.0, leftValue->compositeOnto(unknownAnimatableValue(7.0))
); | 311 expectDoubleValue(5.0, leftValue); |
| 331 const AnimationEffect::CompositableValue* rightValue = findValue(*values.get
(), CSSPropertyRight); | 312 Interpolation* rightValue = findValue(*values.get(), CSSPropertyRight); |
| 332 ASSERT_TRUE(rightValue); | 313 ASSERT_TRUE(rightValue); |
| 333 expectDoubleValue(6.0, rightValue->compositeOnto(unknownAnimatableValue(7.0)
)); | 314 expectDoubleValue(6.0, rightValue); |
| 334 } | 315 } |
| 335 | 316 |
| 336 TEST(AnimationKeyframeEffectModel, RecompositeCompositableValue) | 317 TEST(AnimationKeyframeEffectModel, RecompositeCompositableValue) |
| 337 { | 318 { |
| 338 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); | 319 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(3.0), pixelAnimatableValue(5.0)); |
| 339 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); | 320 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); |
| 340 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); | 321 keyframes[1]->setComposite(AnimationEffect::CompositeAdd); |
| 341 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 322 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 342 OwnPtr<AnimationEffect::CompositableValueList> values = effect->sample(0, 0.
6); | 323 OwnPtr<Vector<RefPtr<Interpolation> > > values = effect->sample(0, 0.6); |
| 343 expectDoubleValue((7.0 + 3.0) * 0.4 + (7.0 + 5.0) * 0.6, values->at(0).secon
d->compositeOnto(pixelAnimatableValue(7.0))); | 324 expectDoubleValue((7.0 + 3.0) * 0.4 + (7.0 + 5.0) * 0.6, values->at(0)); |
| 344 expectDoubleValue((9.0 + 3.0) * 0.4 + (9.0 + 5.0) * 0.6, values->at(0).secon
d->compositeOnto(pixelAnimatableValue(9.0))); | 325 expectDoubleValue((9.0 + 3.0) * 0.4 + (9.0 + 5.0) * 0.6, values->at(0)); |
| 345 } | 326 } |
| 346 | 327 |
| 347 TEST(AnimationKeyframeEffectModel, MultipleIterations) | 328 TEST(AnimationKeyframeEffectModel, MultipleIterations) |
| 348 { | 329 { |
| 349 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(1.0), pixelAnimatableValue(3.0)); | 330 KeyframeEffectModel::KeyframeVector keyframes = keyframesAtZeroAndOne(pixelA
nimatableValue(1.0), pixelAnimatableValue(3.0)); |
| 350 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 331 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 351 expectDoubleValue(2.0, effect->sample(0, 0.5)->at(0).second->compositeOnto(u
nknownAnimatableValue(0.0))); | 332 expectDoubleValue(2.0, effect->sample(0, 0.5)->at(0)); |
| 352 expectDoubleValue(2.0, effect->sample(1, 0.5)->at(0).second->compositeOnto(u
nknownAnimatableValue(0.0))); | 333 expectDoubleValue(2.0, effect->sample(1, 0.5)->at(0)); |
| 353 expectDoubleValue(2.0, effect->sample(2, 0.5)->at(0).second->compositeOnto(u
nknownAnimatableValue(0.0))); | 334 expectDoubleValue(2.0, effect->sample(2, 0.5)->at(0)); |
| 354 } | 335 } |
| 355 | 336 |
| 356 TEST(AnimationKeyframeEffectModel, DependsOnUnderlyingValue) | 337 TEST(AnimationKeyframeEffectModel, DependsOnUnderlyingValue) |
| 357 { | 338 { |
| 358 KeyframeEffectModel::KeyframeVector keyframes(3); | 339 KeyframeEffectModel::KeyframeVector keyframes(3); |
| 359 keyframes[0] = Keyframe::create(); | 340 keyframes[0] = Keyframe::create(); |
| 360 keyframes[0]->setOffset(0.0); | 341 keyframes[0]->setOffset(0.0); |
| 361 keyframes[0]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(1.0)); | 342 keyframes[0]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(1.0)); |
| 362 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); | 343 keyframes[0]->setComposite(AnimationEffect::CompositeAdd); |
| 363 keyframes[1] = Keyframe::create(); | 344 keyframes[1] = Keyframe::create(); |
| 364 keyframes[1]->setOffset(0.5); | 345 keyframes[1]->setOffset(0.5); |
| 365 keyframes[1]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(1.0)); | 346 keyframes[1]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(1.0)); |
| 366 keyframes[2] = Keyframe::create(); | 347 keyframes[2] = Keyframe::create(); |
| 367 keyframes[2]->setOffset(1.0); | 348 keyframes[2]->setOffset(1.0); |
| 368 keyframes[2]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(1.0)); | 349 keyframes[2]->setPropertyValue(CSSPropertyLeft, pixelAnimatableValue(1.0)); |
| 369 | 350 |
| 370 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 351 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 371 EXPECT_TRUE(effect->sample(0, 0)->at(0).second->dependsOnUnderlyingValue()); | 352 EXPECT_TRUE(effect->sample(0, 0)->at(0)); |
| 372 EXPECT_TRUE(effect->sample(0, 0.1)->at(0).second->dependsOnUnderlyingValue()
); | 353 EXPECT_TRUE(effect->sample(0, 0.1)->at(0)); |
| 373 EXPECT_TRUE(effect->sample(0, 0.25)->at(0).second->dependsOnUnderlyingValue(
)); | 354 EXPECT_TRUE(effect->sample(0, 0.25)->at(0)); |
| 374 EXPECT_TRUE(effect->sample(0, 0.4)->at(0).second->dependsOnUnderlyingValue()
); | 355 EXPECT_TRUE(effect->sample(0, 0.4)->at(0)); |
| 375 EXPECT_FALSE(effect->sample(0, 0.5)->at(0).second->dependsOnUnderlyingValue(
)); | 356 EXPECT_FALSE(effect->sample(0, 0.5)->at(0)); |
| 376 EXPECT_FALSE(effect->sample(0, 0.6)->at(0).second->dependsOnUnderlyingValue(
)); | 357 EXPECT_FALSE(effect->sample(0, 0.6)->at(0)); |
| 377 EXPECT_FALSE(effect->sample(0, 0.75)->at(0).second->dependsOnUnderlyingValue
()); | 358 EXPECT_FALSE(effect->sample(0, 0.75)->at(0)); |
| 378 EXPECT_FALSE(effect->sample(0, 0.8)->at(0).second->dependsOnUnderlyingValue(
)); | 359 EXPECT_FALSE(effect->sample(0, 0.8)->at(0)); |
| 379 EXPECT_FALSE(effect->sample(0, 1)->at(0).second->dependsOnUnderlyingValue())
; | 360 EXPECT_FALSE(effect->sample(0, 1)->at(0)); |
| 380 } | 361 } |
| 381 | 362 |
| 382 TEST(AnimationKeyframeEffectModel, ToKeyframeEffectModel) | 363 TEST(AnimationKeyframeEffectModel, ToKeyframeEffectModel) |
| 383 { | 364 { |
| 384 KeyframeEffectModel::KeyframeVector keyframes(0); | 365 KeyframeEffectModel::KeyframeVector keyframes(0); |
| 385 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); | 366 RefPtr<KeyframeEffectModel> effect = KeyframeEffectModel::create(keyframes); |
| 386 | 367 |
| 387 AnimationEffect* baseEffect = effect.get(); | 368 AnimationEffect* baseEffect = effect.get(); |
| 388 EXPECT_TRUE(toKeyframeEffectModel(baseEffect)); | 369 EXPECT_TRUE(toKeyframeEffectModel(baseEffect)); |
| 389 } | 370 } |
| 390 | 371 |
| 391 } // namespace | 372 } // namespace |
| OLD | NEW |