tor-browser

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

non-computed-unit-cycles.html (4092B)


      1 <!DOCTYPE html>
      2 <link rel="help" href="https://drafts.css-houdini.org/css-properties-values-api-1/#dependency-cycles-via-relative-units">
      3 <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1938927">
      4 <meta name="assert" content="This test verifies reference cycles involving only unreigstered properties don't make used units invalid at compute time.">
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <style>
      8 @property --registered-a {
      9  syntax: "*";
     10  inherits: false;
     11 }
     12 
     13 @property --registered-b {
     14  syntax: "*";
     15  inherits: false;
     16 }
     17 
     18 @property --registered-c {
     19  syntax: "*";
     20  inherits: false;
     21 }
     22 
     23 :root {
     24  --font-size-em: 2em;
     25  --line-height-lh: 2lh;
     26 }
     27 
     28 </style>
     29 <div id="target" class="values"></div>
     30 <div id="reference" class="values"></div>
     31 <script>
     32 function assert_target_matches_reference(prop) {
     33  const target_style = getComputedStyle(target);
     34  const target_prop = target_style.getPropertyValue(prop);
     35  const reference_style = getComputedStyle(reference);
     36  const reference_prop = reference_style.getPropertyValue(prop);
     37  assert_equals(target_prop, reference_prop);
     38 }
     39 
     40 function set_for_target_and_reference(prop, value) {
     41  target.style.setProperty(prop, value);
     42  reference.style.setProperty(prop, value);
     43 }
     44 
     45 function set_cycle(value, prop_names) {
     46  target.style.setProperty(`--${prop_names[0]}`, `${value} var(--${prop_names[0]})`);
     47  for (let i = 1; i < prop_names.length; i++) {
     48    target.style.setProperty(`--${prop_names[i]}`, `var(--${prop_names[i - 1]})`);
     49  }
     50 }
     51 
     52 function do_test(run_test, desc) {
     53  test(t => {
     54    t.add_cleanup(() => {
     55      target.style = '';
     56      reference.style = '';
     57    });
     58    run_test();
     59  }, desc);
     60 }
     61 
     62 do_test(() => {
     63  set_for_target_and_reference('font-size', 'var(--font-size-em)');
     64  set_cycle('1em', ['a']);
     65  assert_target_matches_reference('font-size');
     66 }, "Unregistered property in a simple cycle using em should not make font-size invalid at compute time");
     67 
     68 do_test(() => {
     69  set_for_target_and_reference('font-size', 'var(--font-size-em)');
     70  set_cycle('1em', ['a', 'b', 'c']);
     71  assert_target_matches_reference('font-size');
     72 }, "Unregistered property in a multi-property cycle using em should not make font-size invalid at compute time");
     73 
     74 do_test(() => {
     75  set_for_target_and_reference('line-height', 'var(--line-height-lh)');
     76  set_cycle('1lh', ['a']);
     77  assert_target_matches_reference('line-height');
     78 }, "Unregistered property in a simple cycle using lh should not make line-height invalid at compute time");
     79 
     80 do_test(() => {
     81  set_for_target_and_reference('line-height', 'var(--line-height-lh)');
     82  set_cycle('1lh', ['a', 'b', 'c']);
     83  assert_target_matches_reference('line-height');
     84 }, "Unregistered property in a multi-property cycle using lh should not make line-height invalid at compute time");
     85 
     86 do_test(() => {
     87  set_for_target_and_reference('font-size', 'var(--font-size-em)');
     88  set_cycle('1em', ['registered-a']);
     89  assert_target_matches_reference('font-size');
     90 }, "Registered universal property in a simple cycle using em should not make font-size invalid at compute time");
     91 
     92 do_test(() => {
     93  set_for_target_and_reference('font-size', 'var(--font-size-em)');
     94  set_cycle('1em', ['registered-a', 'registered-b', 'registered-c']);
     95  assert_target_matches_reference('font-size');
     96 }, "Registered universal property in a multi-property cycle using em should not make font-size invalid at compute time");
     97 
     98 do_test(() => {
     99  set_for_target_and_reference('line-height', 'var(--line-height-lh)');
    100  set_cycle('1lh', ['registered-a']);
    101  assert_target_matches_reference('line-height');
    102 }, "Registered universal property in a simple cycle using lh should not make line-height invalid at compute time");
    103 
    104 do_test(() => {
    105  set_for_target_and_reference('line-height', 'var(--line-height-lh)');
    106  set_cycle('1lh', ['registered-a', 'registered-b', 'registered-c']);
    107  assert_target_matches_reference('line-height');
    108 }, "Registered universal property in a multi-property cycle using lh should not make line-height invalid at compute time");
    109 </script>