diff options
Diffstat (limited to 'devtools/client/jsonview/test/browser_jsonview_encoding.js')
-rw-r--r-- | devtools/client/jsonview/test/browser_jsonview_encoding.js | 67 |
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."); + } +}); |