| OLD | NEW |
| 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 * Exported function: | 5 * Exported function: |
| 6 * - assertAttributeInterpolation({property, from, to, [fromComposite], [toComp
osite], [underlying]}, [{at: fraction, is: value}]) | 6 * - assertAttributeInterpolation({property, from, to, [fromComposite], [toComp
osite], [underlying]}, [{at: fraction, is: value}]) |
| 7 * Constructs a test case for each fraction that asserts the expected val
ue | 7 * Constructs a test case for each fraction that asserts the expected val
ue |
| 8 * equals the value produced by interpolation between from and to composi
ted | 8 * equals the value produced by interpolation between from and to composi
ted |
| 9 * onto underlying by fromComposite and toComposite respectively using | 9 * onto underlying by fromComposite and toComposite respectively using |
| 10 * SMIL and Web Animations. | 10 * SMIL and Web Animations. |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 return (parseFloat(n).toFixed(2)). | 51 return (parseFloat(n).toFixed(2)). |
| 52 replace(/\.\d+/, function(m) { | 52 replace(/\.\d+/, function(m) { |
| 53 return m.replace(/0+$/, ''); | 53 return m.replace(/0+$/, ''); |
| 54 }). | 54 }). |
| 55 replace(/\.$/, ''). | 55 replace(/\.$/, ''). |
| 56 replace(/^-0$/, '0'); | 56 replace(/^-0$/, '0'); |
| 57 }); | 57 }); |
| 58 } | 58 } |
| 59 | 59 |
| 60 function normalizeValue(value) { | 60 function normalizeValue(value) { |
| 61 if (value === null) { |
| 62 return '-NULL-'; |
| 63 } |
| 61 return roundNumbers(value). | 64 return roundNumbers(value). |
| 62 // Place whitespace between tokens. | 65 // Place whitespace between tokens. |
| 63 replace(/([\w\d.]+|[^\s])/g, '$1 '). | 66 replace(/([\w\d.]+|[^\s])/g, '$1 '). |
| 64 replace(/\s+/g, ' '); | 67 replace(/\s+/g, ' '); |
| 65 } | 68 } |
| 66 | 69 |
| 67 function createTarget(container) { | 70 function createTarget(container) { |
| 68 var targetContainer = createElement('div'); | 71 var targetContainer = createElement('div'); |
| 69 var template = document.querySelector('#target-template'); | 72 var template = document.querySelector('#target-template'); |
| 70 if (template) { | 73 if (template) { |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 target.container.setCurrentTime(expectation.at); | 310 target.container.setCurrentTime(expectation.at); |
| 308 } else { | 311 } else { |
| 309 console.warn(`Unable to test SMIL from ${params.from} to ${params.to}`
); | 312 console.warn(`Unable to test SMIL from ${params.from} to ${params.to}`
); |
| 310 target.container.remove(); | 313 target.container.remove(); |
| 311 target.measure = function() {}; | 314 target.measure = function() {}; |
| 312 } | 315 } |
| 313 break; | 316 break; |
| 314 case 'Web Animations': | 317 case 'Web Animations': |
| 315 // Replace 'transform' with 'svgTransform', etc. This avoids collisions
with CSS properties or the Web Animations API (offset). | 318 // Replace 'transform' with 'svgTransform', etc. This avoids collisions
with CSS properties or the Web Animations API (offset). |
| 316 var prefixedProperty = 'svg' + params.property[0].toUpperCase() + params
.property.slice(1); | 319 var prefixedProperty = 'svg' + params.property[0].toUpperCase() + params
.property.slice(1); |
| 317 target.animate([ | 320 var keyFrames = []; |
| 318 { | 321 if (params.from !== '') { |
| 322 keyFrames.push({ |
| 323 offset: 0, |
| 319 [prefixedProperty]: params.from, | 324 [prefixedProperty]: params.from, |
| 320 composite: params.fromComposite, | 325 composite: params.fromComposite, |
| 321 }, | 326 }) |
| 322 { | 327 } |
| 328 if (params.to !== '') { |
| 329 keyFrames.push({ |
| 330 offset: 1, |
| 323 [prefixedProperty]: params.to, | 331 [prefixedProperty]: params.to, |
| 324 composite: params.toComposite, | 332 composite: params.toComposite, |
| 325 }, | 333 }) |
| 326 ], { | 334 } |
| 335 target.animate(keyFrames, { |
| 327 fill: 'forwards', | 336 fill: 'forwards', |
| 328 duration: 1, | 337 duration: 1, |
| 329 easing: createEasing(expectation.at), | 338 easing: createEasing(expectation.at), |
| 330 delay: -0.5, | 339 delay: -0.5, |
| 331 iterations: 0.5, | 340 iterations: 0.5, |
| 332 }); | 341 }); |
| 333 break; | 342 break; |
| 334 default: | 343 default: |
| 335 console.error('Unknown test method: ' + method); | 344 console.error('Unknown test method: ' + method); |
| 336 } | 345 } |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 409 return loadScript('../../resources/testharnessreport.js'); | 418 return loadScript('../../resources/testharnessreport.js'); |
| 410 }).then(() => { | 419 }).then(() => { |
| 411 var asyncHandle = async_test('This test uses interpolation-test.js.') | 420 var asyncHandle = async_test('This test uses interpolation-test.js.') |
| 412 requestAnimationFrame(() => { | 421 requestAnimationFrame(() => { |
| 413 runTests().then(() => asyncHandle.done()); | 422 runTests().then(() => asyncHandle.done()); |
| 414 }); | 423 }); |
| 415 }); | 424 }); |
| 416 | 425 |
| 417 window.assertAttributeInterpolation = assertAttributeInterpolation; | 426 window.assertAttributeInterpolation = assertAttributeInterpolation; |
| 418 })(); | 427 })(); |
| OLD | NEW |