summaryrefslogtreecommitdiffstats
path: root/devtools/client/jsonview/test/browser_jsonview_encoding.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/jsonview/test/browser_jsonview_encoding.js')
-rw-r--r--devtools/client/jsonview/test/browser_jsonview_encoding.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/devtools/client/jsonview/test/browser_jsonview_encoding.js b/devtools/client/jsonview/test/browser_jsonview_encoding.js
new file mode 100644
index 0000000000..be49af39d2
--- /dev/null
+++ b/devtools/client/jsonview/test/browser_jsonview_encoding.js
@@ -0,0 +1,67 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+add_task(async function () {
+ info("Test JSON encoding started");
+
+ const bom = "%EF%BB%BF"; // UTF-8 BOM
+ const tests = [
+ {
+ input: bom,
+ output: "",
+ },
+ {
+ input: "%FE%FF", // UTF-16BE BOM
+ output: "\uFFFD\uFFFD",
+ },
+ {
+ input: "%FF%FE", // UTF-16LE BOM
+ output: "\uFFFD\uFFFD",
+ },
+ {
+ input: bom + "%30",
+ output: "0",
+ },
+ {
+ input: bom + bom,
+ output: "\uFEFF",
+ },
+ {
+ input: "%00%61",
+ output: "\u0000a",
+ },
+ {
+ input: "%61%00",
+ output: "a\u0000",
+ },
+ {
+ input: "%30%FF",
+ output: "0�",
+ },
+ {
+ input: "%C3%A0",
+ output: "à",
+ },
+ {
+ input: "%E2%9D%A4",
+ output: "❤",
+ },
+ {
+ input: "%F0%9F%9A%80",
+ output: "🚀",
+ },
+ ];
+
+ for (const { input, output } of tests) {
+ info("Test decoding of " + JSON.stringify(input) + ".");
+
+ await addJsonViewTab("data:application/json," + input);
+ await selectJsonViewContentTab("rawdata");
+
+ // Check displayed data.
+ const data = await getElementText(".textPanelBox .data");
+ is(data, output, "The right data has been received.");
+ }
+});