tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>