test_disabled_properties.html (2941B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <script src="../testcommon.js"></script> 6 <body> 7 <div id="log"></div> 8 <script> 9 'use strict'; 10 11 function waitForSetPref(pref, value) { 12 return SpecialPowers.pushPrefEnv({ 'set': [[pref, value]] }); 13 } 14 15 /* 16 * These tests rely on the fact that the font-palette property is 17 * disabled by the layout.css.font-palette.enabled pref. If we ever remove 18 * that pref we will need to substitute some other pref:property combination. 19 */ 20 21 promise_test(function(t) { 22 return waitForSetPref('layout.css.font-palette.enabled', true).then(() => { 23 var anim = addDiv(t).animate({ fontPalette: [ 'light', 'dark' ]}); 24 assert_equals(anim.effect.getKeyframes().length, 2, 25 'A property-indexed keyframe specifying only enabled' 26 + ' properties produces keyframes'); 27 return waitForSetPref('layout.css.font-palette.enabled', false); 28 }).then(() => { 29 var anim = addDiv(t).animate({ fontPalette: [ 'light', 'dark' ]}); 30 assert_equals(anim.effect.getKeyframes().length, 0, 31 'A property-indexed keyframe specifying only disabled' 32 + ' properties produces no keyframes'); 33 }); 34 }, 'Specifying a disabled property using a property-indexed keyframe'); 35 36 promise_test(function(t) { 37 var createAnim = () => { 38 var anim = addDiv(t).animate([ { fontPalette: 'light' }, 39 { fontPalette: 'dark' } ]); 40 assert_equals(anim.effect.getKeyframes().length, 2, 41 'Animation specified using a keyframe sequence should' 42 + ' return the same number of keyframes regardless of' 43 + ' whether or not the specified properties are disabled'); 44 return anim; 45 }; 46 47 var assert_has_property = (anim, index, descr, property) => { 48 assert_true( 49 anim.effect.getKeyframes()[index].hasOwnProperty(property), 50 `${descr} should have the '${property}' property`); 51 }; 52 var assert_does_not_have_property = (anim, index, descr, property) => { 53 assert_false( 54 anim.effect.getKeyframes()[index].hasOwnProperty(property), 55 `${descr} should NOT have the '${property}' property`); 56 }; 57 58 return waitForSetPref('layout.css.font-palette.enabled', true).then(() => { 59 var anim = createAnim(); 60 assert_has_property(anim, 0, 'Initial keyframe', 'fontPalette'); 61 assert_has_property(anim, 1, 'Final keyframe', 'fontPalette'); 62 return waitForSetPref('layout.css.font-palette.enabled', false); 63 }).then(() => { 64 var anim = createAnim(); 65 assert_does_not_have_property(anim, 0, 'Initial keyframe', 66 'fontPalette'); 67 assert_does_not_have_property(anim, 1, 'Final keyframe', 68 'fontPalette'); 69 }); 70 }, 'Specifying a disabled property using a keyframe sequence'); 71 72 </script> 73 </body>