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

Side by Side Diff: third_party/WebKit/Source/core/animation/KeyframeEffectTest.cpp

Issue 2047293002: Code cleanup: Replace Element with Document in element.animate() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@_killForceConversionsToAnimatableValues
Patch Set: Fix unit test crash. Created 4 years, 5 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "core/animation/KeyframeEffect.h" 5 #include "core/animation/KeyframeEffect.h"
6 6
7 #include "bindings/core/v8/Dictionary.h" 7 #include "bindings/core/v8/Dictionary.h"
8 #include "bindings/core/v8/EffectModelOrDictionarySequenceOrDictionary.h" 8 #include "bindings/core/v8/EffectModelOrDictionarySequenceOrDictionary.h"
9 #include "bindings/core/v8/V8BindingForTesting.h" 9 #include "bindings/core/v8/V8BindingForTesting.h"
10 #include "bindings/core/v8/V8KeyframeEffectOptions.h" 10 #include "bindings/core/v8/V8KeyframeEffectOptions.h"
(...skipping 26 matching lines...) Expand all
37 Document& document() const { return pageHolder->document(); } 37 Document& document() const { return pageHolder->document(); }
38 38
39 std::unique_ptr<DummyPageHolder> pageHolder; 39 std::unique_ptr<DummyPageHolder> pageHolder;
40 Persistent<Element> element; 40 Persistent<Element> element;
41 TrackExceptionState exceptionState; 41 TrackExceptionState exceptionState;
42 }; 42 };
43 43
44 class AnimationKeyframeEffectV8Test : public KeyframeEffectTest { 44 class AnimationKeyframeEffectV8Test : public KeyframeEffectTest {
45 protected: 45 protected:
46 template<typename T> 46 template<typename T>
47 static KeyframeEffect* createAnimation(Element* element, Vector<Dictionary> keyframeDictionaryVector, T timingInput, ExceptionState& exceptionState) 47 static KeyframeEffect* createAnimation(Document& document, Element* element, Vector<Dictionary> keyframeDictionaryVector, T timingInput, ExceptionState& exc eptionState)
48 { 48 {
49 return KeyframeEffect::create(nullptr, element, EffectModelOrDictionaryS equenceOrDictionary::fromDictionarySequence(keyframeDictionaryVector), timingInp ut, exceptionState); 49 return KeyframeEffect::create(&document, element, EffectModelOrDictionar ySequenceOrDictionary::fromDictionarySequence(keyframeDictionaryVector), timingI nput, exceptionState);
50 } 50 }
51 static KeyframeEffect* createAnimation(Element* element, Vector<Dictionary> keyframeDictionaryVector, ExceptionState& exceptionState) 51 static KeyframeEffect* createAnimation(Document& document, Element* element, Vector<Dictionary> keyframeDictionaryVector, ExceptionState& exceptionState)
52 { 52 {
53 return KeyframeEffect::create(nullptr, element, EffectModelOrDictionaryS equenceOrDictionary::fromDictionarySequence(keyframeDictionaryVector), exception State); 53 return KeyframeEffect::create(&document, element, EffectModelOrDictionar ySequenceOrDictionary::fromDictionarySequence(keyframeDictionaryVector), excepti onState);
54 } 54 }
55 }; 55 };
56 56
57 TEST_F(AnimationKeyframeEffectV8Test, CanCreateAnAnimation) 57 TEST_F(AnimationKeyframeEffectV8Test, CanCreateAnAnimation)
58 { 58 {
59 V8TestingScope scope; 59 V8TestingScope scope;
60 Vector<Dictionary> jsKeyframes; 60 Vector<Dictionary> jsKeyframes;
61 v8::Local<v8::Object> keyframe1 = v8::Object::New(scope.isolate()); 61 v8::Local<v8::Object> keyframe1 = v8::Object::New(scope.isolate());
62 v8::Local<v8::Object> keyframe2 = v8::Object::New(scope.isolate()); 62 v8::Local<v8::Object> keyframe2 = v8::Object::New(scope.isolate());
63 63
64 setV8ObjectPropertyAsString(scope.isolate(), keyframe1, "width", "100px"); 64 setV8ObjectPropertyAsString(scope.isolate(), keyframe1, "width", "100px");
65 setV8ObjectPropertyAsString(scope.isolate(), keyframe1, "offset", "0"); 65 setV8ObjectPropertyAsString(scope.isolate(), keyframe1, "offset", "0");
66 setV8ObjectPropertyAsString(scope.isolate(), keyframe1, "easing", "ease-in-o ut"); 66 setV8ObjectPropertyAsString(scope.isolate(), keyframe1, "easing", "ease-in-o ut");
67 setV8ObjectPropertyAsString(scope.isolate(), keyframe2, "width", "0px"); 67 setV8ObjectPropertyAsString(scope.isolate(), keyframe2, "width", "0px");
68 setV8ObjectPropertyAsString(scope.isolate(), keyframe2, "offset", "1"); 68 setV8ObjectPropertyAsString(scope.isolate(), keyframe2, "offset", "1");
69 setV8ObjectPropertyAsString(scope.isolate(), keyframe2, "easing", "cubic-bez ier(1, 1, 0.3, 0.3)"); 69 setV8ObjectPropertyAsString(scope.isolate(), keyframe2, "easing", "cubic-bez ier(1, 1, 0.3, 0.3)");
70 70
71 jsKeyframes.append(Dictionary(keyframe1, scope.isolate(), exceptionState)); 71 jsKeyframes.append(Dictionary(keyframe1, scope.isolate(), exceptionState));
72 jsKeyframes.append(Dictionary(keyframe2, scope.isolate(), exceptionState)); 72 jsKeyframes.append(Dictionary(keyframe2, scope.isolate(), exceptionState));
73 73
74 String value1; 74 String value1;
75 ASSERT_TRUE(DictionaryHelper::get(jsKeyframes[0], "width", value1)); 75 ASSERT_TRUE(DictionaryHelper::get(jsKeyframes[0], "width", value1));
76 ASSERT_EQ("100px", value1); 76 ASSERT_EQ("100px", value1);
77 77
78 String value2; 78 String value2;
79 ASSERT_TRUE(DictionaryHelper::get(jsKeyframes[1], "width", value2)); 79 ASSERT_TRUE(DictionaryHelper::get(jsKeyframes[1], "width", value2));
80 ASSERT_EQ("0px", value2); 80 ASSERT_EQ("0px", value2);
81 81
82 KeyframeEffect* animation = createAnimation(element.get(), jsKeyframes, 0, e xceptionState); 82 KeyframeEffect* animation = createAnimation(document(), element.get(), jsKey frames, 0, exceptionState);
83 83
84 Element* target = animation->target(); 84 Element* target = animation->target();
85 EXPECT_EQ(*element.get(), *target); 85 EXPECT_EQ(*element.get(), *target);
86 86
87 const KeyframeVector keyframes = toKeyframeEffectModelBase(animation->model( ))->getFrames(); 87 const KeyframeVector keyframes = toKeyframeEffectModelBase(animation->model( ))->getFrames();
88 88
89 EXPECT_EQ(0, keyframes[0]->offset()); 89 EXPECT_EQ(0, keyframes[0]->offset());
90 EXPECT_EQ(1, keyframes[1]->offset()); 90 EXPECT_EQ(1, keyframes[1]->offset());
91 91
92 const CSSValue* keyframe1Width = toStringKeyframe(keyframes[0].get())->cssPr opertyValue(CSSPropertyWidth); 92 const CSSValue* keyframe1Width = toStringKeyframe(keyframes[0].get())->cssPr opertyValue(CSSPropertyWidth);
93 const CSSValue* keyframe2Width = toStringKeyframe(keyframes[1].get())->cssPr opertyValue(CSSPropertyWidth); 93 const CSSValue* keyframe2Width = toStringKeyframe(keyframes[1].get())->cssPr opertyValue(CSSPropertyWidth);
94 ASSERT(keyframe1Width); 94 ASSERT(keyframe1Width);
95 ASSERT(keyframe2Width); 95 ASSERT(keyframe2Width);
96 96
97 EXPECT_EQ("100px", keyframe1Width->cssText()); 97 EXPECT_EQ("100px", keyframe1Width->cssText());
98 EXPECT_EQ("0px", keyframe2Width->cssText()); 98 EXPECT_EQ("0px", keyframe2Width->cssText());
99 99
100 EXPECT_EQ(*(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Eas eType::EASE_IN_OUT)), keyframes[0]->easing()); 100 EXPECT_EQ(*(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Eas eType::EASE_IN_OUT)), keyframes[0]->easing());
101 EXPECT_EQ(*(CubicBezierTimingFunction::create(1, 1, 0.3, 0.3).get()), keyfra mes[1]->easing()); 101 EXPECT_EQ(*(CubicBezierTimingFunction::create(1, 1, 0.3, 0.3).get()), keyfra mes[1]->easing());
102 } 102 }
103 103
104 TEST_F(AnimationKeyframeEffectV8Test, CanSetDuration) 104 TEST_F(AnimationKeyframeEffectV8Test, CanSetDuration)
105 { 105 {
106 Vector<Dictionary, 0> jsKeyframes; 106 Vector<Dictionary, 0> jsKeyframes;
107 double duration = 2000; 107 double duration = 2000;
108 108
109 KeyframeEffect* animation = createAnimation(element.get(), jsKeyframes, dura tion, exceptionState); 109 KeyframeEffect* animation = createAnimation(document(), element.get(), jsKey frames, duration, exceptionState);
110 110
111 EXPECT_EQ(duration / 1000, animation->specifiedTiming().iterationDuration); 111 EXPECT_EQ(duration / 1000, animation->specifiedTiming().iterationDuration);
112 } 112 }
113 113
114 TEST_F(AnimationKeyframeEffectV8Test, CanOmitSpecifiedDuration) 114 TEST_F(AnimationKeyframeEffectV8Test, CanOmitSpecifiedDuration)
115 { 115 {
116 Vector<Dictionary, 0> jsKeyframes; 116 Vector<Dictionary, 0> jsKeyframes;
117 KeyframeEffect* animation = createAnimation(element.get(), jsKeyframes, exce ptionState); 117 KeyframeEffect* animation = createAnimation(document(), element.get(), jsKey frames, exceptionState);
118 EXPECT_TRUE(std::isnan(animation->specifiedTiming().iterationDuration)); 118 EXPECT_TRUE(std::isnan(animation->specifiedTiming().iterationDuration));
119 } 119 }
120 120
121 TEST_F(AnimationKeyframeEffectV8Test, SpecifiedGetters) 121 TEST_F(AnimationKeyframeEffectV8Test, SpecifiedGetters)
122 { 122 {
123 V8TestingScope scope; 123 V8TestingScope scope;
124 Vector<Dictionary, 0> jsKeyframes; 124 Vector<Dictionary, 0> jsKeyframes;
125 125
126 v8::Local<v8::Object> timingInput = v8::Object::New(scope.isolate()); 126 v8::Local<v8::Object> timingInput = v8::Object::New(scope.isolate());
127 setV8ObjectPropertyAsNumber(scope.isolate(), timingInput, "delay", 2); 127 setV8ObjectPropertyAsNumber(scope.isolate(), timingInput, "delay", 2);
128 setV8ObjectPropertyAsNumber(scope.isolate(), timingInput, "endDelay", 0.5); 128 setV8ObjectPropertyAsNumber(scope.isolate(), timingInput, "endDelay", 0.5);
129 setV8ObjectPropertyAsString(scope.isolate(), timingInput, "fill", "backwards "); 129 setV8ObjectPropertyAsString(scope.isolate(), timingInput, "fill", "backwards ");
130 setV8ObjectPropertyAsNumber(scope.isolate(), timingInput, "iterationStart", 2); 130 setV8ObjectPropertyAsNumber(scope.isolate(), timingInput, "iterationStart", 2);
131 setV8ObjectPropertyAsNumber(scope.isolate(), timingInput, "iterations", 10); 131 setV8ObjectPropertyAsNumber(scope.isolate(), timingInput, "iterations", 10);
132 setV8ObjectPropertyAsNumber(scope.isolate(), timingInput, "playbackRate", 2) ; 132 setV8ObjectPropertyAsNumber(scope.isolate(), timingInput, "playbackRate", 2) ;
133 setV8ObjectPropertyAsString(scope.isolate(), timingInput, "direction", "reve rse"); 133 setV8ObjectPropertyAsString(scope.isolate(), timingInput, "direction", "reve rse");
134 setV8ObjectPropertyAsString(scope.isolate(), timingInput, "easing", "step-st art"); 134 setV8ObjectPropertyAsString(scope.isolate(), timingInput, "easing", "step-st art");
135 KeyframeEffectOptions timingInputDictionary; 135 KeyframeEffectOptions timingInputDictionary;
136 V8KeyframeEffectOptions::toImpl(scope.isolate(), timingInput, timingInputDic tionary, exceptionState); 136 V8KeyframeEffectOptions::toImpl(scope.isolate(), timingInput, timingInputDic tionary, exceptionState);
137 137
138 KeyframeEffect* animation = createAnimation(element.get(), jsKeyframes, timi ngInputDictionary, exceptionState); 138 KeyframeEffect* animation = createAnimation(document(), element.get(), jsKey frames, timingInputDictionary, exceptionState);
139 139
140 AnimationEffectTiming* specified = animation->timing(); 140 AnimationEffectTiming* specified = animation->timing();
141 EXPECT_EQ(2, specified->delay()); 141 EXPECT_EQ(2, specified->delay());
142 EXPECT_EQ(0.5, specified->endDelay()); 142 EXPECT_EQ(0.5, specified->endDelay());
143 EXPECT_EQ("backwards", specified->fill()); 143 EXPECT_EQ("backwards", specified->fill());
144 EXPECT_EQ(2, specified->iterationStart()); 144 EXPECT_EQ(2, specified->iterationStart());
145 EXPECT_EQ(10, specified->iterations()); 145 EXPECT_EQ(10, specified->iterations());
146 EXPECT_EQ(2, specified->playbackRate()); 146 EXPECT_EQ(2, specified->playbackRate());
147 EXPECT_EQ("reverse", specified->direction()); 147 EXPECT_EQ("reverse", specified->direction());
148 EXPECT_EQ("step-start", specified->easing()); 148 EXPECT_EQ("step-start", specified->easing());
149 } 149 }
150 150
151 TEST_F(AnimationKeyframeEffectV8Test, SpecifiedDurationGetter) 151 TEST_F(AnimationKeyframeEffectV8Test, SpecifiedDurationGetter)
152 { 152 {
153 V8TestingScope scope; 153 V8TestingScope scope;
154 Vector<Dictionary, 0> jsKeyframes; 154 Vector<Dictionary, 0> jsKeyframes;
155 155
156 v8::Local<v8::Object> timingInputWithDuration = v8::Object::New(scope.isolat e()); 156 v8::Local<v8::Object> timingInputWithDuration = v8::Object::New(scope.isolat e());
157 setV8ObjectPropertyAsNumber(scope.isolate(), timingInputWithDuration, "durat ion", 2.5); 157 setV8ObjectPropertyAsNumber(scope.isolate(), timingInputWithDuration, "durat ion", 2.5);
158 KeyframeEffectOptions timingInputDictionaryWithDuration; 158 KeyframeEffectOptions timingInputDictionaryWithDuration;
159 V8KeyframeEffectOptions::toImpl(scope.isolate(), timingInputWithDuration, ti mingInputDictionaryWithDuration, exceptionState); 159 V8KeyframeEffectOptions::toImpl(scope.isolate(), timingInputWithDuration, ti mingInputDictionaryWithDuration, exceptionState);
160 160
161 KeyframeEffect* animationWithDuration = createAnimation(element.get(), jsKey frames, timingInputDictionaryWithDuration, exceptionState); 161 KeyframeEffect* animationWithDuration = createAnimation(document(), element. get(), jsKeyframes, timingInputDictionaryWithDuration, exceptionState);
162 162
163 AnimationEffectTiming* specifiedWithDuration = animationWithDuration->timing (); 163 AnimationEffectTiming* specifiedWithDuration = animationWithDuration->timing ();
164 UnrestrictedDoubleOrString duration; 164 UnrestrictedDoubleOrString duration;
165 specifiedWithDuration->duration(duration); 165 specifiedWithDuration->duration(duration);
166 EXPECT_TRUE(duration.isUnrestrictedDouble()); 166 EXPECT_TRUE(duration.isUnrestrictedDouble());
167 EXPECT_EQ(2.5, duration.getAsUnrestrictedDouble()); 167 EXPECT_EQ(2.5, duration.getAsUnrestrictedDouble());
168 EXPECT_FALSE(duration.isString()); 168 EXPECT_FALSE(duration.isString());
169 169
170 170
171 v8::Local<v8::Object> timingInputNoDuration = v8::Object::New(scope.isolate( )); 171 v8::Local<v8::Object> timingInputNoDuration = v8::Object::New(scope.isolate( ));
172 KeyframeEffectOptions timingInputDictionaryNoDuration; 172 KeyframeEffectOptions timingInputDictionaryNoDuration;
173 V8KeyframeEffectOptions::toImpl(scope.isolate(), timingInputNoDuration, timi ngInputDictionaryNoDuration, exceptionState); 173 V8KeyframeEffectOptions::toImpl(scope.isolate(), timingInputNoDuration, timi ngInputDictionaryNoDuration, exceptionState);
174 174
175 KeyframeEffect* animationNoDuration = createAnimation(element.get(), jsKeyfr ames, timingInputDictionaryNoDuration, exceptionState); 175 KeyframeEffect* animationNoDuration = createAnimation(document(), element.ge t(), jsKeyframes, timingInputDictionaryNoDuration, exceptionState);
176 176
177 AnimationEffectTiming* specifiedNoDuration = animationNoDuration->timing(); 177 AnimationEffectTiming* specifiedNoDuration = animationNoDuration->timing();
178 UnrestrictedDoubleOrString duration2; 178 UnrestrictedDoubleOrString duration2;
179 specifiedNoDuration->duration(duration2); 179 specifiedNoDuration->duration(duration2);
180 EXPECT_FALSE(duration2.isUnrestrictedDouble()); 180 EXPECT_FALSE(duration2.isUnrestrictedDouble());
181 EXPECT_TRUE(duration2.isString()); 181 EXPECT_TRUE(duration2.isString());
182 EXPECT_EQ("auto", duration2.getAsString()); 182 EXPECT_EQ("auto", duration2.getAsString());
183 } 183 }
184 184
185 TEST_F(AnimationKeyframeEffectV8Test, SpecifiedSetters) 185 TEST_F(AnimationKeyframeEffectV8Test, SpecifiedSetters)
186 { 186 {
187 V8TestingScope scope; 187 V8TestingScope scope;
188 Vector<Dictionary, 0> jsKeyframes; 188 Vector<Dictionary, 0> jsKeyframes;
189 v8::Local<v8::Object> timingInput = v8::Object::New(scope.isolate()); 189 v8::Local<v8::Object> timingInput = v8::Object::New(scope.isolate());
190 KeyframeEffectOptions timingInputDictionary; 190 KeyframeEffectOptions timingInputDictionary;
191 V8KeyframeEffectOptions::toImpl(scope.isolate(), timingInput, timingInputDic tionary, exceptionState); 191 V8KeyframeEffectOptions::toImpl(scope.isolate(), timingInput, timingInputDic tionary, exceptionState);
192 KeyframeEffect* animation = createAnimation(element.get(), jsKeyframes, timi ngInputDictionary, exceptionState); 192 KeyframeEffect* animation = createAnimation(document(), element.get(), jsKey frames, timingInputDictionary, exceptionState);
193 193
194 AnimationEffectTiming* specified = animation->timing(); 194 AnimationEffectTiming* specified = animation->timing();
195 195
196 EXPECT_EQ(0, specified->delay()); 196 EXPECT_EQ(0, specified->delay());
197 specified->setDelay(2); 197 specified->setDelay(2);
198 EXPECT_EQ(2, specified->delay()); 198 EXPECT_EQ(2, specified->delay());
199 199
200 EXPECT_EQ(0, specified->endDelay()); 200 EXPECT_EQ(0, specified->endDelay());
201 specified->setEndDelay(0.5); 201 specified->setEndDelay(0.5);
202 EXPECT_EQ(0.5, specified->endDelay()); 202 EXPECT_EQ(0.5, specified->endDelay());
(...skipping 14 matching lines...) Expand all
217 217
218 EXPECT_EQ(1, specified->playbackRate()); 218 EXPECT_EQ(1, specified->playbackRate());
219 specified->setPlaybackRate(2); 219 specified->setPlaybackRate(2);
220 EXPECT_EQ(2, specified->playbackRate()); 220 EXPECT_EQ(2, specified->playbackRate());
221 221
222 EXPECT_EQ("normal", specified->direction()); 222 EXPECT_EQ("normal", specified->direction());
223 specified->setDirection("reverse"); 223 specified->setDirection("reverse");
224 EXPECT_EQ("reverse", specified->direction()); 224 EXPECT_EQ("reverse", specified->direction());
225 225
226 EXPECT_EQ("linear", specified->easing()); 226 EXPECT_EQ("linear", specified->easing());
227 specified->setEasing("step-start", exceptionState); 227 specified->setEasing(&document(), "step-start", exceptionState);
228 ASSERT_FALSE(exceptionState.hadException()); 228 ASSERT_FALSE(exceptionState.hadException());
229 EXPECT_EQ("step-start", specified->easing()); 229 EXPECT_EQ("step-start", specified->easing());
230 } 230 }
231 231
232 TEST_F(AnimationKeyframeEffectV8Test, SetSpecifiedDuration) 232 TEST_F(AnimationKeyframeEffectV8Test, SetSpecifiedDuration)
233 { 233 {
234 V8TestingScope scope; 234 V8TestingScope scope;
235 Vector<Dictionary, 0> jsKeyframes; 235 Vector<Dictionary, 0> jsKeyframes;
236 v8::Local<v8::Object> timingInput = v8::Object::New(scope.isolate()); 236 v8::Local<v8::Object> timingInput = v8::Object::New(scope.isolate());
237 KeyframeEffectOptions timingInputDictionary; 237 KeyframeEffectOptions timingInputDictionary;
238 V8KeyframeEffectOptions::toImpl(scope.isolate(), timingInput, timingInputDic tionary, exceptionState); 238 V8KeyframeEffectOptions::toImpl(scope.isolate(), timingInput, timingInputDic tionary, exceptionState);
239 KeyframeEffect* animation = createAnimation(element.get(), jsKeyframes, timi ngInputDictionary, exceptionState); 239 KeyframeEffect* animation = createAnimation(document(), element.get(), jsKey frames, timingInputDictionary, exceptionState);
240 240
241 AnimationEffectTiming* specified = animation->timing(); 241 AnimationEffectTiming* specified = animation->timing();
242 242
243 UnrestrictedDoubleOrString duration; 243 UnrestrictedDoubleOrString duration;
244 specified->duration(duration); 244 specified->duration(duration);
245 EXPECT_FALSE(duration.isUnrestrictedDouble()); 245 EXPECT_FALSE(duration.isUnrestrictedDouble());
246 EXPECT_TRUE(duration.isString()); 246 EXPECT_TRUE(duration.isString());
247 EXPECT_EQ("auto", duration.getAsString()); 247 EXPECT_EQ("auto", duration.getAsString());
248 248
249 UnrestrictedDoubleOrString inDuration; 249 UnrestrictedDoubleOrString inDuration;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 Timing timing; 361 Timing timing;
362 timing.iterationDuration = 5; 362 timing.iterationDuration = 5;
363 KeyframeEffect* animation = KeyframeEffect::create(element.get(), nullptr, t iming); 363 KeyframeEffect* animation = KeyframeEffect::create(element.get(), nullptr, t iming);
364 EXPECT_EQ(element.get(), animation->target()); 364 EXPECT_EQ(element.get(), animation->target());
365 document().timeline().play(animation); 365 document().timeline().play(animation);
366 pageHolder.reset(); 366 pageHolder.reset();
367 element.clear(); 367 element.clear();
368 } 368 }
369 369
370 } // namespace blink 370 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/animation/KeyframeEffect.cpp ('k') | third_party/WebKit/Source/core/animation/StringKeyframe.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698