gecko-dev/devtools/shared/specs/webextension-inspected-wind...

107 строки
3.0 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 {
Arg,
RetVal,
generateActorSpec,
types,
} = require("devtools/shared/protocol");
/**
* Sent with the eval and reload requests, used to inform the
* webExtensionInspectedWindowActor about the caller information
* to be able to evaluate code as being executed from the caller
* WebExtension sources, or log errors with information that can
* help the addon developer to more easily identify the affected
* lines in his own addon code.
*/
types.addDictType("webExtensionCallerInfo", {
// Information related to the line of code that has originated
// the request.
url: "string",
lineNumber: "nullable:number",
// The called addonId.
addonId: "string",
});
/**
* RDP type related to the inspectedWindow.eval method request.
*/
types.addDictType("webExtensionEvalOptions", {
frameURL: "nullable:string",
contextSecurityOrigin: "nullable:string",
useContentScriptContext: "nullable:boolean",
});
/**
* RDP type related to the inspectedWindow.eval method result errors.
*
* This type has been modelled on the same data format
* used in the corresponding chrome API method.
*/
types.addDictType("webExtensionEvalExceptionInfo", {
// The following properties are set if the error has not occurred
// in the evaluated JS code.
isError: "nullable:boolean",
code: "nullable:string",
description: "nullable:string",
details: "nullable:array:json",
// The following properties are set if the error has occurred
// in the evaluated JS code.
isException: "nullable:string",
value: "nullable:string",
});
/**
* RDP type related to the inspectedWindow.eval method result.
*/
types.addDictType("webExtensionEvalResult", {
// The following properties are set if the evaluation has been
// completed successfully.
value: "nullable:json",
// The following properties are set if the evalutation has been
// completed with errors.
exceptionInfo: "nullable:webExtensionEvalExceptionInfo",
});
/**
* RDP type related to the inspectedWindow.reload method request.
*/
types.addDictType("webExtensionReloadOptions", {
ignoreCache: "nullable:boolean",
userAgent: "nullable:string",
injectedScript: "nullable:string",
});
const webExtensionInspectedWindowSpec = generateActorSpec({
typeName: "webExtensionInspectedWindow",
methods: {
reload: {
request: {
webExtensionCallerInfo: Arg(0, "webExtensionCallerInfo"),
options: Arg(1, "webExtensionReloadOptions"),
},
},
eval: {
request: {
webExtensionCallerInfo: Arg(0, "webExtensionCallerInfo"),
expression: Arg(1, "string"),
options: Arg(2, "webExtensionEvalOptions"),
},
response: {
evalResult: RetVal("webExtensionEvalResult"),
},
},
},
});
exports.webExtensionInspectedWindowSpec = webExtensionInspectedWindowSpec;