diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/bom-utf-16be.json b/html/semantics/scripting-1/the-script-element/bytes-module/bom-utf-16be.json new file mode 100644 index 00000000000000..d22a45a591079d Binary files /dev/null and b/html/semantics/scripting-1/the-script-element/bytes-module/bom-utf-16be.json differ diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/bom-utf-16le.json b/html/semantics/scripting-1/the-script-element/bytes-module/bom-utf-16le.json new file mode 100644 index 00000000000000..4d1aa264a697b2 Binary files /dev/null and b/html/semantics/scripting-1/the-script-element/bytes-module/bom-utf-16le.json differ diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/bom-utf-8.json b/html/semantics/scripting-1/the-script-element/bytes-module/bom-utf-8.json new file mode 100644 index 00000000000000..07ba933e8608da --- /dev/null +++ b/html/semantics/scripting-1/the-script-element/bytes-module/bom-utf-8.json @@ -0,0 +1 @@ +{ "data": "hello" } \ No newline at end of file diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/charset-1250.html b/html/semantics/scripting-1/the-script-element/bytes-module/charset-1250.html new file mode 100644 index 00000000000000..def356ba126ff1 --- /dev/null +++ b/html/semantics/scripting-1/the-script-element/bytes-module/charset-1250.html @@ -0,0 +1,26 @@ + + +Bytes modules: Windows-1250 decoding + + +
+ + \ No newline at end of file diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/charset-bom.any.js b/html/semantics/scripting-1/the-script-element/bytes-module/charset-bom.any.js new file mode 100644 index 00000000000000..f2012fdc9dce0a --- /dev/null +++ b/html/semantics/scripting-1/the-script-element/bytes-module/charset-bom.any.js @@ -0,0 +1,32 @@ +// META: global=window,dedicatedworker,sharedworker +// META: script=/common/utils.js + +promise_test(async () => { + const mod = await import('./bom-utf-8.json', { with: { type: 'bytes' } }); + assert_true(mod instanceof Uint8Array); + assert_array_equals(Array.from(mod), [ + 239, 187, 191, 123, 32, 34, 100, 97, 116, 97, 34, + 58, 32, 34, 104, 101, 108, 108, 111, 34, 32, 125, + ]); +}, 'UTF-8 BOM should be ignored when importing bytes'); + +promise_test(async () => { + const mod = await import('./bom-utf-16be.json', { with: { type: 'bytes' } }); + assert_true(mod instanceof Uint8Array); + assert_array_equals(Array.from(mod), [ + 254, 255, 0, 123, 0, 32, 0, 34, 0, 100, 0, 97, 0, 116, + 0, 97, 0, 34, 0, 58, 0, 32, 0, 34, 0, 104, 0, 101, + 0, 108, 0, 108, 0, 111, 0, 34, 0, 32, 0, 125, + ]); +}, 'UTF-16BE BOM should be ignored when importing bytes'); + +promise_test(async () => { + const mod = await import('./bom-utf-16le.json', { with: { type: 'bytes' } }); + assert_true(mod instanceof Uint8Array); + assert_array_equals(Array.from(mod), [ + 255, 254, 123, 0, 32, 0, 34, 0, 100, 0, 97, 0, 116, 0, + 97, 0, 34, 0, 58, 0, 32, 0, 34, 0, 104, 0, 101, 0, + 108, 0, 108, 0, 111, 0, 34, 0, 32, 0, 125, 0, + ]); +}, 'UTF-16LE BOM should be ignored when importing bytes'); + diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/charset.html b/html/semantics/scripting-1/the-script-element/bytes-module/charset.html new file mode 100644 index 00000000000000..fbdf15a3a04533 --- /dev/null +++ b/html/semantics/scripting-1/the-script-element/bytes-module/charset.html @@ -0,0 +1,56 @@ + + +Bytes modules: UTF-8 decoding + + +
+ + + + + \ No newline at end of file diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/file.bin b/html/semantics/scripting-1/the-script-element/bytes-module/file.bin new file mode 100644 index 00000000000000..271b60b1fdaa88 --- /dev/null +++ b/html/semantics/scripting-1/the-script-element/bytes-module/file.bin @@ -0,0 +1 @@ +mycontent diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/file.js b/html/semantics/scripting-1/the-script-element/bytes-module/file.js new file mode 100644 index 00000000000000..271b60b1fdaa88 --- /dev/null +++ b/html/semantics/scripting-1/the-script-element/bytes-module/file.js @@ -0,0 +1 @@ +mycontent diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/file.txt b/html/semantics/scripting-1/the-script-element/bytes-module/file.txt new file mode 100644 index 00000000000000..271b60b1fdaa88 --- /dev/null +++ b/html/semantics/scripting-1/the-script-element/bytes-module/file.txt @@ -0,0 +1 @@ +mycontent diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/ignore-content-type.html b/html/semantics/scripting-1/the-script-element/bytes-module/ignore-content-type.html new file mode 100644 index 00000000000000..0462d9114617ab --- /dev/null +++ b/html/semantics/scripting-1/the-script-element/bytes-module/ignore-content-type.html @@ -0,0 +1,114 @@ + + +Bytes modules: Content-Type + + +
+ + + + + + + diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/ignore-extension.any.js b/html/semantics/scripting-1/the-script-element/bytes-module/ignore-extension.any.js new file mode 100644 index 00000000000000..125f329f284a8a --- /dev/null +++ b/html/semantics/scripting-1/the-script-element/bytes-module/ignore-extension.any.js @@ -0,0 +1,8 @@ +// META: global=window,dedicatedworker,sharedworker + +for (const name of ["file", "file.bin", "file.js", "file.txt"]) { + promise_test(async t => { + const result = await import(`./${name}`, { with: { type: "bytes" } }); + assert_equals(result, "mycontent\n"); + }, `Extension: ${name}`); +} \ No newline at end of file diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/image.png b/html/semantics/scripting-1/the-script-element/bytes-module/image.png new file mode 100644 index 00000000000000..252d9502d8573d Binary files /dev/null and b/html/semantics/scripting-1/the-script-element/bytes-module/image.png differ diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/serve-with-content-type.py b/html/semantics/scripting-1/the-script-element/bytes-module/serve-with-content-type.py new file mode 100644 index 00000000000000..675b3fc3eb08c3 --- /dev/null +++ b/html/semantics/scripting-1/the-script-element/bytes-module/serve-with-content-type.py @@ -0,0 +1,17 @@ +import os + +from wptserve.utils import isomorphic_decode + +def main(request, response): + directory = os.path.dirname(isomorphic_decode(__file__)) + + try: + file_name = request.GET.first(b"fn") + content_type = request.GET.first(b"ct") + with open(os.path.join(directory, isomorphic_decode(file_name)), u"rb") as fh: + content = fh.read() + + response.headers.set(b"Content-Type", content_type) + response.content = content + except: + response.set_error(400, u"Not enough parameters or file not found") diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/sync-module.html b/html/semantics/scripting-1/the-script-element/bytes-module/sync-module.html new file mode 100644 index 00000000000000..a62dd2bb489739 --- /dev/null +++ b/html/semantics/scripting-1/the-script-element/bytes-module/sync-module.html @@ -0,0 +1,86 @@ + + +Bytes modules + + +
+ + diff --git a/html/semantics/scripting-1/the-script-element/bytes-module/windows-1250.json b/html/semantics/scripting-1/the-script-element/bytes-module/windows-1250.json new file mode 100644 index 00000000000000..9d6aaccbf4b58d --- /dev/null +++ b/html/semantics/scripting-1/the-script-element/bytes-module/windows-1250.json @@ -0,0 +1 @@ +{ "data": "�湿�" }