| <!DOCTYPE html> |
| <meta name="timeout" content="long"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="../resources/test-helper.js"></script> |
| |
| <script> |
| // "bare/..." (i.e. without leading "./") are bare specifiers |
| // (not relative paths). |
| const importMap = ` |
| { |
| "imports": { |
| "bare": "../resources/log.js?pipe=sub&name=bare", |
| |
| "data:text/javascript,log.push('data:foo')": "../resources/log.js?pipe=sub&name=foo", |
| "data:text/javascript,log.push('data:cross-origin-foo')": "https://{{domains[www1]}}:{{ports[https][0]}}/import-maps/resources/log.js?pipe=sub&name=cross-origin-foo", |
| "data:text/javascript,log.push('data:to-data')": "data:text/javascript,log.push('dataURL')", |
| |
| "data:text/javascript,log.push('data:to-bare')": "bare" |
| } |
| } |
| `; |
| |
| const tests = { |
| // Arrays of expected results for: |
| // - <script src type="module">, |
| // - <script src> (classic script), |
| // - static import, and |
| // - dynamic import. |
| |
| // Currently, Chromium's implementation resolves import maps as a part of |
| // specifier resolution, and thus failure in import map resolution causes |
| // a parse error, not fetch error. Therefore, we use Result.PARSE_ERROR |
| // below. https://crbug.com/928435 |
| |
| // data: to HTTP(S). |
| "data:text/javascript,log.push('data:foo')": |
| [Result.URL, Result.URL, "log:foo", "log:foo"], |
| "data:text/javascript,log.push('data:cross-origin-foo')": |
| [Result.URL, Result.URL, "log:cross-origin-foo", "log:cross-origin-foo"], |
| |
| // data: to data: |
| "data:text/javascript,log.push('data:to-data')": |
| [Result.URL, Result.URL, "dataURL", "dataURL"], |
| |
| // data: to bare mapping is disabled. |
| "data:text/javascript,log.push('data:to-bare')": |
| [Result.URL, Result.URL, Result.PARSE_ERROR, Result.PARSE_ERROR], |
| }; |
| |
| doTests(importMap, null, tests); |
| </script> |
| <body> |