test_variable_serialization_computed.html 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <!DOCTYPE html>
  2. <title>Test serialization of computed CSS variable values</title>
  3. <script src="/MochiKit/MochiKit.js"></script>
  4. <script src="/tests/SimpleTest/SimpleTest.js"></script>
  5. <link rel="stylesheet" href="/tests/SimpleTest/test.css" type="text/css">
  6. <div>
  7. <span></span>
  8. </div>
  9. <script>
  10. // Each entry is an entire declaration followed by the property to check and
  11. // its expected computed value.
  12. var values = [
  13. ["", "--z", "an-inherited-value"],
  14. ["--a: ", "--a", " "],
  15. ["--a: initial", "--a", ""],
  16. ["--z: initial", "--z", ""],
  17. ["--a: inherit", "--a", ""],
  18. ["--z: inherit", "--z", "an-inherited-value"],
  19. ["--a: unset", "--a", ""],
  20. ["--z: unset", "--z", "an-inherited-value"],
  21. ["--a: 1px", "--a", " 1px"],
  22. ["--a: var(--a)", "--a", ""],
  23. ["--a: var(--b)", "--a", ""],
  24. ["--a: var(--b); --b: 1px", "--a", " 1px"],
  25. ["--a: var(--b, 1px)", "--a", " 1px"],
  26. ["--a: var(--a, 1px)", "--a", ""],
  27. ["--a: something 3px url(whereever) calc(var(--a) + 1px)", "--a", ""],
  28. ["--a: something 3px url(whereever) calc(var(--b,1em) + 1px)", "--a", " something 3px url(whereever) calc(1em + 1px)"],
  29. ["--a: var(--b, var(--c, var(--d, Black)))", "--a", " Black"],
  30. ["--a: a var(--b) c; --b:b", "--a", " a b c"],
  31. ["--a: a var(--b,b var(--c) d) e; --c:c", "--a", " a b c d e"],
  32. ["--a: var(--b)red; --b:orange;", "--a", " orange/**/red"],
  33. ["--a: var(--b)var(--c); --b:orange; --c:red;", "--a", " orange/**/red"],
  34. ["--a: var(--b)var(--c,red); --b:orange;", "--a", " orange/**/red"],
  35. ["--a: var(--b,orange)var(--c); --c:red;", "--a", " orange/**/red"],
  36. ["--a: var(--b)-; --b:-;", "--a", " -/**/-"],
  37. ["--a: var(--b)--; --b:-;", "--a", " -/**/--"],
  38. ["--a: var(--b)--x; --b:-;", "--a", " -/**/--x"],
  39. ["--a: var(--b)var(--c); --b:-; --c:-;", "--a", " -/**/-"],
  40. ["--a: var(--b)var(--c); --b:--; --c:-;", "--a", " --/**/-"],
  41. ["--a: var(--b)var(--c); --b:--x; --c:-;", "--a", " --x/**/-"],
  42. ["counter-reset: var(--a)red; --a:orange;", "counter-reset", "orange 0 red 0"],
  43. ["--a: var(--b)var(--c); --c:[c]; --b:('ab", "--a", " ('ab')[c]"],
  44. ["--a: '", "--a", " ''"],
  45. ["--a: '\\", "--a", " ''"],
  46. ["--a: \\", "--a", " \\\ufffd"],
  47. ["--a: \"", "--a", " \"\""],
  48. ["--a: \"\\", "--a", " \"\""],
  49. ["--a: /* abc ", "--a", " /* abc */"],
  50. ["--a: /* abc *", "--a", " /* abc */"],
  51. ["--a: url(http://example.org/", "--a", " url(http://example.org/)"],
  52. ["--a: url(http://example.org/\\", "--a", " url(http://example.org/\\\ufffd)"],
  53. ["--a: url('http://example.org/", "--a", " url('http://example.org/')"],
  54. ["--a: url('http://example.org/\\", "--a", " url('http://example.org/')"],
  55. ["--a: url(\"http://example.org/", "--a", " url(\"http://example.org/\")"],
  56. ["--a: url(\"http://example.org/\\", "--a", " url(\"http://example.org/\")"]
  57. ];
  58. function runTest() {
  59. var div = document.querySelector("div");
  60. var span = document.querySelector("span");
  61. div.setAttribute("style", "--z:an-inherited-value");
  62. values.forEach(function(entry, i) {
  63. var declaration = entry[0];
  64. var property = entry[1];
  65. var expected = entry[2];
  66. span.setAttribute("style", declaration);
  67. var cs = getComputedStyle(span, "");
  68. is(cs.getPropertyValue(property), expected, "subtest #" + i);
  69. });
  70. SimpleTest.finish();
  71. }
  72. SimpleTest.waitForExplicitFinish();
  73. SpecialPowers.pushPrefEnv({ set: [["layout.css.variables.enabled", true]] },
  74. runTest);
  75. </script>