diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /devtools/shared/specs/source.js | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | devtools/shared/specs/source.js | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/devtools/shared/specs/source.js b/devtools/shared/specs/source.js new file mode 100644 index 0000000000..d6c84c45dd --- /dev/null +++ b/devtools/shared/specs/source.js @@ -0,0 +1,95 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +"use strict"; + +const { + Arg, + RetVal, + generateActorSpec, + types, +} = require("resource://devtools/shared/protocol.js"); + +const longstringType = types.getType("longstring"); +const arraybufferType = types.getType("arraybuffer"); +// The sourcedata type needs some custom marshalling, because it is sometimes +// returned as an arraybuffer and sometimes as a longstring. +types.addType("sourcedata", { + write: (value, context, detail) => { + if (value.typeName === "arraybuffer") { + return arraybufferType.write(value, context, detail); + } + return longstringType.write(value, context, detail); + }, + read: (value, context, detail) => { + if (value.typeName === "arraybuffer") { + return arraybufferType.read(value, context, detail); + } + return longstringType.read(value, context, detail); + }, +}); + +types.addDictType("sourceposition", { + line: "number", + column: "number", +}); +types.addDictType("nullablesourceposition", { + line: "nullable:number", + column: "nullable:number", +}); +types.addDictType("breakpointquery", { + start: "nullable:nullablesourceposition", + end: "nullable:nullablesourceposition", +}); + +types.addDictType("source.onsource", { + contentType: "nullable:string", + source: "nullable:sourcedata", +}); + +const sourceSpec = generateActorSpec({ + typeName: "source", + + methods: { + getBreakpointPositions: { + request: { + query: Arg(0, "nullable:breakpointquery"), + }, + response: { + positions: RetVal("array:sourceposition"), + }, + }, + getBreakpointPositionsCompressed: { + request: { + query: Arg(0, "nullable:breakpointquery"), + }, + response: { + positions: RetVal("json"), + }, + }, + getBreakableLines: { + request: {}, + response: { + lines: RetVal("json"), + }, + }, + source: { + request: {}, + response: RetVal("source.onsource"), + }, + setPausePoints: { + request: { + pausePoints: Arg(0, "json"), + }, + }, + blackbox: { + request: { range: Arg(0, "nullable:json") }, + response: { pausedInSource: RetVal("boolean") }, + }, + unblackbox: { + request: { range: Arg(0, "nullable:json") }, + }, + }, +}); + +exports.sourceSpec = sourceSpec; |