summaryrefslogtreecommitdiffstats
path: root/devtools/client/shared/source-map-loader/test/browser/browser_locations.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/shared/source-map-loader/test/browser/browser_locations.js')
-rw-r--r--devtools/client/shared/source-map-loader/test/browser/browser_locations.js141
1 files changed, 141 insertions, 0 deletions
diff --git a/devtools/client/shared/source-map-loader/test/browser/browser_locations.js b/devtools/client/shared/source-map-loader/test/browser/browser_locations.js
new file mode 100644
index 0000000000..4d43df5902
--- /dev/null
+++ b/devtools/client/shared/source-map-loader/test/browser/browser_locations.js
@@ -0,0 +1,141 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Covert getOriginalLocation and getGeneratedLocation functions.
+
+add_task(async function testGetOriginalLocation() {
+ await fetchFixtureSourceMap("bundle");
+
+ const generatedLocation = {
+ sourceId: "bundle.js",
+ line: 49,
+ };
+
+ const originalLocation = await gSourceMapLoader.getOriginalLocation(
+ generatedLocation
+ );
+ Assert.deepEqual(
+ originalLocation,
+ {
+ column: 0,
+ line: 3,
+ sourceId: "bundle.js/originalSource-fe2c41d3535b76c158e39ba4f3ff826a",
+ sourceUrl: "webpack:///entry.js",
+ },
+ "Mapped a generated location"
+ );
+
+ const originalLocation2 = await gSourceMapLoader.getOriginalLocation(
+ originalLocation
+ );
+ Assert.deepEqual(originalLocation2, null, "No mapped location");
+
+ gSourceMapLoader.clearSourceMaps();
+ const originalLocation3 = await gSourceMapLoader.getOriginalLocation(
+ generatedLocation
+ );
+ Assert.deepEqual(
+ originalLocation3,
+ null,
+ "after clearing the source maps, the same generated location no longer maps"
+ );
+});
+
+add_task(async function testGetGeneratedLocation() {
+ await fetchFixtureSourceMap("bundle");
+
+ const originalLocation = {
+ column: 0,
+ line: 3,
+ sourceId: "bundle.js/originalSource-fe2c41d3535b76c158e39ba4f3ff826a",
+ };
+
+ const source = {
+ url: "webpack:///entry.js",
+ id: "bundle.js/originalSource-fe2c41d3535b76c158e39ba4f3ff826a",
+ };
+
+ const generatedLocation = await gSourceMapLoader.getGeneratedLocation(
+ originalLocation,
+ source
+ );
+ Assert.deepEqual(
+ generatedLocation,
+ {
+ sourceId: "bundle.js",
+ line: 49,
+ column: 0,
+ },
+ "Map an original location"
+ );
+
+ {
+ gSourceMapLoader.clearSourceMaps();
+
+ const secondGeneratedLocation = await gSourceMapLoader.getGeneratedLocation(
+ originalLocation,
+ source
+ );
+ Assert.deepEqual(
+ secondGeneratedLocation,
+ null,
+ "after clearing source maps, the same location no longer maps to an original location"
+ );
+ }
+
+ {
+ // we expect symmetric mappings, which means that if
+ // we map a generated location to an original location,
+ // and then map it back, we should get the original generated value.
+ // e.g. G[8, 0] -> O[5, 4] -> G[8, 0]
+ await fetchFixtureSourceMap("if.out");
+
+ const genLoc1 = {
+ sourceId: "if.out.js",
+ column: 0,
+ line: 8,
+ };
+
+ const ifSource = {
+ url: "if.js",
+ id: "if.out.js/originalSource-5ad3141023dae912c5f8833c7e03beeb",
+ };
+
+ const oLoc = await gSourceMapLoader.getOriginalLocation(genLoc1);
+ const genLoc2 = await gSourceMapLoader.getGeneratedLocation(oLoc, ifSource);
+
+ Assert.deepEqual(genLoc2, genLoc1, "location mapping is symmetric");
+ }
+
+ {
+ // we expect that an undefined column will be handled like a
+ // location w/ column 0. e.g. G[8, u] -> O[5, 4] -> G[8, 0]
+ await fetchFixtureSourceMap("if.out");
+
+ const genLoc1 = {
+ sourceId: "if.out.js",
+ column: undefined,
+ line: 8,
+ };
+
+ const ifSource = {
+ url: "if.js",
+ id: "if.out.js/originalSource-5ad3141023dae912c5f8833c7e03beeb",
+ };
+
+ const oLoc = await gSourceMapLoader.getOriginalLocation(genLoc1);
+ const genLoc2 = await gSourceMapLoader.getGeneratedLocation(oLoc, ifSource);
+
+ Assert.deepEqual(
+ genLoc2,
+ {
+ sourceId: "if.out.js",
+ column: 0,
+ line: 8,
+ },
+ "undefined column is handled like 0 column"
+ );
+ }
+});