tor-browser

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

cssom-pagerule.html (4360B)


      1 <!DOCTYPE html>
      2 <title>CSSOM: CSSPageRule tests</title>
      3 <link rel="help" href="https://drafts.csswg.org/cssom/#the-csspagerule-interface" />
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <style>
      7  @page {}
      8 </style>
      9 <script>
     10  const sheet = document.styleSheets[0];
     11  const rule = sheet.cssRules[0];
     12 
     13  test(() => {
     14    assert_true(!!rule);
     15    assert_equals(rule.type, CSSRule.PAGE_RULE);
     16  }, "Sanity checks");
     17 
     18  test(() => {
     19    assert_equals(rule.selectorText, "");
     20  }, "Page selector is initially the empty string");
     21 
     22  test(() => {
     23    assert_equals(rule.cssText, "@page { }");
     24  }, "Page selector 'cssText' is initially the @page { }");
     25 
     26  test(() => {
     27    rule.selectorText = ":left";
     28    assert_equals(rule.selectorText, ":left");
     29  }, "Set selectorText to :left pseudo page");
     30 
     31  test(() => {
     32    rule.selectorText = ":left";
     33    assert_equals(rule.cssText, "@page :left { }");
     34  }, "Set cssText to :left pseudo page");
     35 
     36  test(() => {
     37    rule.selectorText = "named";
     38    assert_equals(rule.selectorText, "named");
     39  }, "Set selectorText to named page");
     40 
     41  test(() => {
     42    rule.selectorText = "named";
     43    assert_equals(rule.cssText, "@page named { }");
     44  }, "Set cssText to named page");
     45 
     46  test(() => {
     47    rule.selectorText = "named:first";
     48    assert_equals(rule.selectorText, "named:first");
     49  }, "Set selectorText to named page with :first pseudo page");
     50 
     51  test(() => {
     52    rule.selectorText = "named:first";
     53    assert_equals(rule.cssText, "@page named:first { }");
     54  }, "Set cssText to named page with :first pseudo page");
     55 
     56  test(() => {
     57    rule.selectorText = "named:First";
     58    assert_equals(rule.selectorText, "named:first");
     59  }, "Set selectorText to named page with case insensitive :first pseudo page");
     60 
     61  test(() => {
     62    rule.selectorText = "named:First";
     63    assert_equals(rule.cssText, "@page named:first { }");
     64  }, "Set cssText to named page with case insensitive :first pseudo page");
     65 
     66  test(() => {
     67    rule.selectorText = "named:first:first";
     68    assert_equals(rule.selectorText, "named:first:first");
     69  }, "Set selectorText to named page with two :first pseudo page");
     70 
     71  test(() => {
     72    rule.selectorText = "named:first:first";
     73    assert_equals(rule.cssText, "@page named:first:first { }");
     74  }, "Set cssText to named page with two :first pseudo page");
     75 
     76  test(() => {
     77    rule.selectorText = "named:first:left:right:first";
     78    assert_equals(rule.selectorText, "named:first:left:right:first");
     79  }, "Set selectorText to named page with pseudo pages of " +
     80    ":first, :left, :right, :first in order.");
     81 
     82    test(() => {
     83    rule.selectorText = "named:first:left:right:first";
     84    assert_equals(rule.cssText, "@page named:first:left:right:first { }");
     85  }, "Set cssText to named page with pseudo pages of " +
     86    ":first, :left, :right, :first in order.");
     87 
     88  test(() => {
     89    rule.selectorText = "";
     90    rule.selectorText = "named :first";
     91    assert_equals(rule.selectorText, "");
     92  }, "Cannot set selectorText to named page with pseudo, whitespace between");
     93 
     94  test(() => {
     95    rule.selectorText = "";
     96    rule.selectorText = "named :first";
     97    assert_equals(rule.cssText, "@page { }");
     98  }, "Cannot set cssText to named page with pseudo, whitespace between - return default @page { }");
     99 
    100  test(() => {
    101    rule.selectorText = "";
    102    rule.selectorText = ":first :left";
    103    assert_equals(rule.selectorText, "");
    104  }, "Cannot set selectorText to two pseudos, whitespace between");
    105 
    106  test(() => {
    107    rule.selectorText = "";
    108    rule.selectorText = ":first :left";
    109    assert_equals(rule.cssText, "@page { }");
    110  }, "Cannot set cssText to two pseudos, whitespace between - return default @page { }");
    111 
    112  test(() => {
    113    rule.selectorText = "";
    114    rule.selectorText = ":notapagepseudo";
    115    assert_equals(rule.selectorText, "");
    116  }, "Cannot set selectorText to invalid pseudo page");
    117 
    118  test(() => {
    119    rule.selectorText = "";
    120    rule.selectorText = ":notapagepseudo";
    121    assert_equals(rule.cssText, "@page { }");
    122  }, "Cannot set cssText to invalid pseudo page - return default @page { }");
    123 
    124  test(() => {
    125    assert_equals(rule.parentStyleSheet, sheet);
    126    sheet.deleteRule(0);
    127    assert_equals(rule.parentStyleSheet, null);
    128    rule.selectorText = "pagename";
    129  }, "Set selectorText to named page after rule was removed");
    130 </script>