File: test_parseStyleSheetImport.html

package info (click to toggle)
firefox 141.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,550,616 kB
  • sloc: cpp: 7,426,508; javascript: 6,367,238; ansic: 3,707,354; python: 1,368,984; xml: 623,983; asm: 426,916; java: 184,324; sh: 64,488; makefile: 19,203; objc: 13,059; perl: 12,955; yacc: 4,583; cs: 3,846; pascal: 3,352; lex: 1,720; ruby: 1,071; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (82 lines) | stat: -rw-r--r-- 3,125 bytes parent folder | download | duplicates (25)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<!DOCTYPE HTML>
<html>
<!--
    https://bugzilla.mozilla.org/show_bug.cgi?id=1202095
-->
  <head>
    <title>Test for Bug 1202095</title>
    <script src="/tests/SimpleTest/SimpleTest.js"></script>
    <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
    <style>
      @import url('bug1202095.css');
      @import url('bug1202095-2.css');
    </style>
  </head>
  <body>
    <script type="application/javascript">
const InspectorUtils = SpecialPowers.InspectorUtils;

function do_test() {
  var sheet = document.styleSheets[1];
  var importRule = sheet.cssRules[0];
  is(importRule.type, CSSRule.IMPORT_RULE,
     "initial sheet has @import rule");

  var importedSheet = importRule.styleSheet;
  importedSheet.deleteRule(0);
  is(importedSheet.cssRules.length, 0, "imported sheet now has no rules");

  // "suffixed" refers to the "-2".
  var suffixedSheet = sheet.cssRules[1].styleSheet;
  InspectorUtils.parseStyleSheet(suffixedSheet, "");
  is(suffixedSheet.cssRules.length, 0, "second imported sheet now has no rules");

  // Re-parse the style sheet, preserving the imports.
  InspectorUtils.parseStyleSheet(sheet, "@import url('bug1202095.css');" +
                                        "@import url('bug1202095-2.css');");
  is(sheet.cssRules[0].type, CSSRule.IMPORT_RULE,
     "re-parsed sheet has @import rule");
  is(sheet.cssRules[0].styleSheet, importedSheet,
     "imported sheet has not changed");
  is(sheet.cssRules[1].styleSheet, suffixedSheet,
     "second imported sheet has not changed");

  // Re-parse the style sheet, preserving both imports, but changing
  // the order.
  InspectorUtils.parseStyleSheet(sheet, "@import url('bug1202095-2.css');" +
                                        "@import url('bug1202095.css');");
  is(sheet.cssRules[0].styleSheet, suffixedSheet,
     "reordering preserved suffixed style sheet");
  is(sheet.cssRules[1].styleSheet, importedSheet,
     "reordering preserved unsuffixed style sheet");

  // Re-parse the style sheet, removing the imports.
  InspectorUtils.parseStyleSheet(sheet, "");
  is(sheet.cssRules.length, 0, "style sheet now has no rules");

  // Re-parse the style sheet, adding one import back.  This should
  // not allow reuse.
  InspectorUtils.parseStyleSheet(sheet, "@import url('bug1202095.css');");
  is(sheet.cssRules[0].type, CSSRule.IMPORT_RULE,
     "re-re-re-parsed sheet has @import rule");
  isnot(sheet.cssRules[0].styleSheet, importedSheet,
     "imported sheet has changed now");

  // Re-parse the style sheet, importing the same URL twice.
  // The style sheet should be reused once, but not two times.
  importedSheet = sheet.cssRules[0].styleSheet;
  InspectorUtils.parseStyleSheet(sheet, "@import url('bug1202095.css');" +
                                        "@import url('bug1202095.css');");
  is(sheet.cssRules[0].styleSheet, importedSheet,
     "first imported sheet is reused");
  isnot(sheet.cssRules[1].styleSheet, importedSheet,
     "second imported sheet is reused");

  SimpleTest.finish();
}

SimpleTest.waitForExplicitFinish();
addLoadEvent(do_test);
    </script>
  </body>
</html>