80 lines
1.8 KiB
JavaScript
80 lines
1.8 KiB
JavaScript
/* 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 protocol = require("devtools/shared/protocol");
|
|
const { Arg, RetVal, Option, generateActorSpec } = protocol;
|
|
|
|
/**
|
|
* Type describing a single function call in a stack trace.
|
|
*/
|
|
protocol.types.addDictType("call-stack-item", {
|
|
name: "string",
|
|
file: "string",
|
|
line: "number"
|
|
});
|
|
|
|
/**
|
|
* Type describing an overview of a function call.
|
|
*/
|
|
protocol.types.addDictType("call-details", {
|
|
type: "number",
|
|
name: "string",
|
|
stack: "array:call-stack-item"
|
|
});
|
|
|
|
const functionCallSpec = generateActorSpec({
|
|
typeName: "function-call",
|
|
|
|
methods: {
|
|
getDetails: {
|
|
response: { info: RetVal("call-details") }
|
|
},
|
|
},
|
|
});
|
|
|
|
exports.functionCallSpec = functionCallSpec;
|
|
|
|
const callWatcherSpec = generateActorSpec({
|
|
typeName: "call-watcher",
|
|
|
|
events: {
|
|
/**
|
|
* Events emitted when the `onCall` function isn't provided.
|
|
*/
|
|
"call": {
|
|
type: "call",
|
|
function: Arg(0, "function-call")
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
setup: {
|
|
request: {
|
|
tracedGlobals: Option(0, "nullable:array:string"),
|
|
tracedFunctions: Option(0, "nullable:array:string"),
|
|
startRecording: Option(0, "boolean"),
|
|
performReload: Option(0, "boolean"),
|
|
holdWeak: Option(0, "boolean"),
|
|
storeCalls: Option(0, "boolean")
|
|
},
|
|
oneway: true
|
|
},
|
|
finalize: {
|
|
oneway: true
|
|
},
|
|
isRecording: {
|
|
response: RetVal("boolean")
|
|
},
|
|
initTimestampEpoch: {},
|
|
resumeRecording: {},
|
|
pauseRecording: {
|
|
response: { calls: RetVal("array:function-call") }
|
|
},
|
|
eraseRecording: {},
|
|
}
|
|
});
|
|
|
|
exports.callWatcherSpec = callWatcherSpec;
|