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

Side by Side Diff: LayoutTests/animations/resources/animation-test-helpers.js

Issue 14556022: Simplify animation testing API (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add new tests. Created 7 years, 7 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 | Annotate | Revision Log
OLDNEW
1 /* This is the helper function to run animation tests: 1 /* This is the helper function to run animation tests:
2 2
3 Test page requirements: 3 Test page requirements:
4 - The body must contain an empty div with id "result" 4 - The body must contain an empty div with id "result"
5 - Call this function directly from the <script> inside the test page 5 - Call this function directly from the <script> inside the test page
6 6
7 Function parameters: 7 Function parameters:
8 expected [required]: an array of arrays defining a set of CSS properties tha t must have given values at specific times (see below) 8 expected [required]: an array of arrays defining a set of CSS properties tha t must have given values at specific times (see below)
9 callback [optional]: a function to be executed just before the test starts ( none by default) 9 callback [optional]: a function to be executed just before the test starts ( none by default)
10 event [optional]: which DOM event to wait for before starting the test ("web kitAnimationStart" by default) 10 event [optional]: which DOM event to wait for before starting the test ("web kitAnimationStart" by default)
11 11
12 Each sub-array must contain these items in this order: 12 Each sub-array must contain these items in this order:
13 - the name of the CSS animation (may be null) [1] 13 - the name of the CSS animation (may be null) [1]
14 - the time in seconds at which to snapshot the CSS property 14 - the time in seconds at which to snapshot the CSS property
15 - the id of the element on which to get the CSS property value [2] 15 - the id of the element on which to get the CSS property value [2]
16 - the name of the CSS property to get [3] 16 - the name of the CSS property to get [3]
17 - the expected value for the CSS property 17 - the expected value for the CSS property
18 - the tolerance to use when comparing the effective CSS property value with its expected value 18 - the tolerance to use when comparing the effective CSS property value with its expected value
19 19
20 [1] If null is passed, a regular setTimeout() will be used instead to snapsh ot the animated property in the future, 20 [1] If null is passed, a regular setTimeout() will be used instead to snapsh ot the animated property in the future,
21 instead of fast forwarding using the pauseAnimationAtTimeOnElement() JS API from Internals. 21 instead of fast forwarding using the pauseAnimations() JS API from Internals .
Steve Block 2013/05/06 01:49:06 It looks like the animation name is still used to
dstockwell 2013/05/06 04:01:00 Not passing a name no longer falls back to the set
22 22
23 [2] If a single string is passed, it is the id of the element to test. If an array with 2 elements is passed they 23 [2] If a single string is passed, it is the id of the element to test. If an array with 2 elements is passed they
24 are the ids of 2 elements, whose values are compared for equality. In this c ase the expected value is ignored 24 are the ids of 2 elements, whose values are compared for equality. In this c ase the expected value is ignored
25 but the tolerance is used in the comparison. If the second element is prefix ed with "static:", no animation on that 25 but the tolerance is used in the comparison. If the second element is prefix ed with "static:", no animation on that
26 element is required, allowing comparison with an unanimated "expected value" element. 26 element is required, allowing comparison with an unanimated "expected value" element.
27 27
28 If a string with a '.' is passed, this is an element in an iframe. The strin g before the dot is the iframe id 28 If a string with a '.' is passed, this is an element in an iframe. The strin g before the dot is the iframe id
29 and the string after the dot is the element name in that iframe. 29 and the string after the dot is the element name in that iframe.
30 30
31 [3] If the CSS property name is "webkitTransform", expected value must be an array of 1 or more numbers corresponding to the matrix elements, 31 [3] If the CSS property name is "webkitTransform", expected value must be an array of 1 or more numbers corresponding to the matrix elements,
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 // Check for a dot separated string 233 // Check for a dot separated string
234 var iframeId; 234 var iframeId;
235 if (!compareElements) { 235 if (!compareElements) {
236 var array = elementId.split('.'); 236 var array = elementId.split('.');
237 if (array.length == 2) { 237 if (array.length == 2) {
238 iframeId = array[0]; 238 iframeId = array[0];
239 elementId = array[1]; 239 elementId = array[1];
240 } 240 }
241 } 241 }
242 242
243 if (animationName && hasPauseAnimationAPI && !internals.pauseAnimationAtTime OnElement(animationName, time, document.getElementById(elementId))) { 243 if (animationName && hasPauseAnimationAPI)
244 result += "FAIL - animation \"" + animationName + "\" is not running" + "<br>"; 244 internals.pauseAnimations(time);
245 return;
246 }
247
248 if (compareElements && !element2Static && animationName && hasPauseAnimation API && !internals.pauseAnimationAtTimeOnElement(animationName, time, document.ge tElementById(elementId2))) {
249 result += "FAIL - animation \"" + animationName + "\" is not running" + "<br>";
250 return;
251 }
252 245
253 var computedValue, computedValue2; 246 var computedValue, computedValue2;
254 if (compareElements) { 247 if (compareElements) {
255 computedValue = getPropertyValue(property, elementId, iframeId); 248 computedValue = getPropertyValue(property, elementId, iframeId);
256 computedValue2 = getPropertyValue(property, elementId2, iframeId); 249 computedValue2 = getPropertyValue(property, elementId2, iframeId);
257 250
258 if (comparePropertyValue(property, computedValue, computedValue2, tolera nce)) 251 if (comparePropertyValue(property, computedValue, computedValue2, tolera nce))
259 result += "PASS - \"" + property + "\" property for \"" + elementId + "\" and \"" + elementId2 + 252 result += "PASS - \"" + property + "\" property for \"" + elementId + "\" and \"" + elementId2 +
260 "\" elements at " + time + "s are close enough to ea ch other" + "<br>"; 253 "\" elements at " + time + "s are close enough to ea ch other" + "<br>";
261 else 254 else
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 { 372 {
380 if (testStarted) return; 373 if (testStarted) return;
381 testStarted = true; 374 testStarted = true;
382 375
383 if (callback) 376 if (callback)
384 callback(); 377 callback();
385 378
386 var maxTime = 0; 379 var maxTime = 0;
387 380
388 for (var i = 0; i < expected.length; ++i) { 381 for (var i = 0; i < expected.length; ++i) {
389 var animationName = expected[i][0];
390 var time = expected[i][1]; 382 var time = expected[i][1];
391 383
392 // We can only use the animation fast-forward mechanism if there's an an imation name 384 if (hasPauseAnimationAPI)
393 // and Internals implements pauseAnimationAtTimeOnElement()
394 if (animationName && hasPauseAnimationAPI)
395 checkExpectedValue(expected, i); 385 checkExpectedValue(expected, i);
396 else { 386 else {
397 if (time > maxTime) 387 if (time > maxTime)
398 maxTime = time; 388 maxTime = time;
399 389
400 window.setTimeout(checkExpectedValueCallback(expected, i), time * 10 00); 390 window.setTimeout(checkExpectedValueCallback(expected, i), time * 10 00);
401 } 391 }
402 } 392 }
403 393
404 if (maxTime > 0) 394 if (maxTime > 0)
(...skipping 28 matching lines...) Expand all
433 startTest(expected, callback); 423 startTest(expected, callback);
434 }, false); 424 }, false);
435 } 425 }
436 426
437 function waitForAnimationToStart(element, callback) 427 function waitForAnimationToStart(element, callback)
438 { 428 {
439 element.addEventListener('webkitAnimationStart', function() { 429 element.addEventListener('webkitAnimationStart', function() {
440 window.setTimeout(callback, 0); // delay to give hardware animations a c hance to start 430 window.setTimeout(callback, 0); // delay to give hardware animations a c hance to start
441 }, false); 431 }, false);
442 } 432 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698