File: fallback-disallowed.sub.tentative.html

package info (click to toggle)
firefox-esr 68.10.0esr-1~deb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 3,143,932 kB
  • sloc: cpp: 5,227,879; javascript: 4,315,531; ansic: 2,467,042; python: 794,975; java: 349,993; asm: 232,034; xml: 228,320; sh: 82,008; lisp: 41,202; makefile: 22,347; perl: 15,555; objc: 5,277; cs: 4,725; yacc: 1,778; ada: 1,681; pascal: 1,673; lex: 1,417; exp: 527; php: 436; ruby: 225; awk: 162; sed: 53; csh: 44
file content (79 lines) | stat: -rw-r--r-- 2,819 bytes parent folder | download | duplicates (2)
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
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/test-helper.js"></script>

<script>
// Fallbacks from external URLs (such as HTTPS URLs) are
// blocked by ongoing spec discussions, for example
// https://github.com/WICG/import-maps/issues/76.
// https://crbug.com/928435
//
// This test, as well as Chromium's implementation, rejects broader range of
// fallbacks (not only those from HTTPS), to avoid potential spec and
// interoperability issues.
// The only allowed fallback pattern is fallbacks from bare specifiers with
// two elements, which are listed in fallback.sub.tentative.html.
const importMap = `
{
  "imports": {
    "bare": "./resources/log.js?pipe=sub&name=bare",

    "./resources/log.js?pipe=sub&name=http-to-builtin": [
      "./resources/log.js?pipe=sub&name=http-to-builtin",
      "@std/blank"
    ],

    "./resources/log.js?pipe=sub&name=fallback-to-different-url-1": [
      "@std/blank",
      "./resources/log.js?pipe=sub&name=something-different"
    ],
    "./resources/log.js?pipe=sub&name=fallback-to-different-url-2": [
      "@std/none",
      "./resources/log.js?pipe=sub&name=something-different2"
    ],
    "./resources/log.js?pipe=sub&name=fallback-to-different-origin-1": [
      "@std/blank",
      "https://{{domains[www1]}}:{{ports[https][0]}}/import-maps/resources/log.js?pipe=sub&name=fallback-to-different-origin-1"
    ],
    "./resources/log.js?pipe=sub&name=fallback-to-different-origin-2": [
      "@std/none",
      "https://{{domains[www1]}}:{{ports[https][0]}}/import-maps/resources/log.js?pipe=sub&name=fallback-to-different-origin-2"
    ],

    "./resources/log.js?pipe=sub&name=more-than-two-values-1": [
      "@std/none",
      "@std/blank",
      "./resources/log.js?pipe=sub&name=more-than-two-values-1"
    ],
    "./resources/log.js?pipe=sub&name=more-than-two-values-2": [
      "@std/none",
      "./resources/log.js?pipe=sub&name=more-than-two-values-2",
      "@std/blank"
    ],
    "./resources/log.js?pipe=sub&name=fallback-from-http": [
      "./resources/log.js?pipe=sub&name=non-built-in",
      "./resources/log.js?pipe=sub&name=fallback-from-http"
    ],
    "./resources/log.js?pipe=sub&name=fallback-from-data-1": [
      "data:text/plain,",
      "./resources/log.js?pipe=sub&name=fallback-from-http"
    ],
    "./resources/log.js?pipe=sub&name=fallback-from-data-2": [
      "data:text/javascript,log.push('dataURL')",
      "./resources/log.js?pipe=sub&name=fallback-from-http"
    ]
  }
}
`;
const tests = {};
for (const key in JSON.parse(importMap).imports) {
  if (key === "bare") {
    continue;
  }
  tests[key] =
    [Result.URL, Result.URL, Result.PARSE_ERROR, Result.PARSE_ERROR];
}
doTests(importMap, null, tests);
</script>
<body>