diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /devtools/client/shared/source-map-loader/test/browser/browser_wasm-source-map.js | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'devtools/client/shared/source-map-loader/test/browser/browser_wasm-source-map.js')
-rw-r--r-- | devtools/client/shared/source-map-loader/test/browser/browser_wasm-source-map.js | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/devtools/client/shared/source-map-loader/test/browser/browser_wasm-source-map.js b/devtools/client/shared/source-map-loader/test/browser/browser_wasm-source-map.js new file mode 100644 index 0000000000..0f69d7b038 --- /dev/null +++ b/devtools/client/shared/source-map-loader/test/browser/browser_wasm-source-map.js @@ -0,0 +1,126 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// Test source mappings WASM sources. +// This test is quite general and test various functions. + +const { + WasmRemap, +} = require("resource://devtools/client/shared/source-map-loader/utils/wasmRemap.js"); +const { + SourceMapConsumer, +} = require("resource://devtools/client/shared/vendor/source-map/source-map.js"); + +SourceMapConsumer.initialize({ + "lib/mappings.wasm": + "resource://devtools/client/shared/vendor/source-map/lib/mappings.wasm", +}); + +add_task(async function smokeTest() { + const testMap1 = { + version: 3, + file: "min.js", + names: [], + sources: ["one.js", "two.js"], + sourceRoot: "/the/root", + mappings: "CAAC,IAAM,SACU,GAAC", + }; + const testMap1Entries = [ + { offset: 1, line: 1, column: 1 }, + { offset: 5, line: 1, column: 7 }, + { offset: 14, line: 2, column: 17 }, + { offset: 17, line: 2, column: 18 }, + ]; + + const map1 = await new SourceMapConsumer(testMap1); + + const remap1 = new WasmRemap(map1); + + is(remap1.file, "min.js"); + is(remap1.hasContentsOfAllSources(), false); + is(remap1.sources.length, 2); + is(remap1.sources[0], "/the/root/one.js"); + is(remap1.sources[1], "/the/root/two.js"); + + const expectedEntries = testMap1Entries.slice(0); + remap1.eachMapping(function (entry) { + const expected = expectedEntries.shift(); + is(entry.generatedLine, expected.offset); + is(entry.generatedColumn, 0); + is(entry.originalLine, expected.line); + is(entry.originalColumn, expected.column); + is(entry.name, null); + }); + + const pos1 = remap1.originalPositionFor({ line: 5, column: 0 }); + is(pos1.line, 1); + is(pos1.column, 7); + is(pos1.source, "/the/root/one.js"); + + const pos2 = remap1.generatedPositionFor({ + source: "/the/root/one.js", + line: 2, + column: 18, + }); + is(pos2.line, 17); + is(pos2.column, 0); + is(pos2.lastColumn, undefined); + + remap1.computeColumnSpans(); + const pos3 = remap1.allGeneratedPositionsFor({ + source: "/the/root/one.js", + line: 2, + column: 17, + }); + is(pos3.length, 1); + is(pos3[0].line, 14); + is(pos3[0].column, 0); + is(pos3[0].lastColumn, 0); + + map1.destroy(); +}); + +add_task(async function contentPresents() { + const testMap2 = { + version: 3, + file: "none.js", + names: [], + sources: ["zero.js"], + mappings: "", + sourcesContent: ["//test"], + }; + + const map2 = await new SourceMapConsumer(testMap2); + const remap2 = new WasmRemap(map2); + is(remap2.file, "none.js"); + ok(remap2.hasContentsOfAllSources()); + is(remap2.sourceContentFor("zero.js"), "//test"); + + map2.destroy(); +}); + +add_task(async function readAndTransposeWasmMap() { + const source = { + id: "wasm.js", + sourceMapBaseURL: "wasm:http://example.com/whatever/:min.js", + sourceMapURL: `${URL_ROOT}fixtures/wasm.js.map`, + isWasm: true, + }; + + const urls = await gSourceMapLoader.getOriginalURLs(source); + Assert.deepEqual(urls, [ + { + id: "wasm.js/originalSource-63954a1c231200652c0d99c6a69cd178", + url: `${URL_ROOT}fixtures/one.js`, + }, + ]); + + const { line, column } = await gSourceMapLoader.getOriginalLocation({ + sourceId: source.id, + line: 5, + }); + is(line, 1); + is(column, 7); +}); |