gecko-dev/devtools/shared/specs/targets/browsing-context.js

172 строки
4.4 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 {
types,
generateActorSpec,
RetVal,
Option,
Arg,
} = require("devtools/shared/protocol");
types.addDictType("browsingContextTarget.attach", {
threadActor: "number",
cacheDisabled: "boolean",
javascriptEnabled: "boolean",
traits: "json",
});
types.addDictType("browsingContextTarget.switchtoframe", {
message: "string",
});
types.addDictType("browsingContextTarget.listframes", {
frames: "array:browsingContextTarget.window",
});
types.addDictType("browsingContextTarget.window", {
id: "string",
parentID: "nullable:string",
url: "nullable:string", // should be present if not destroying
title: "nullable:string", // should be present if not destroying
destroy: "nullable:boolean", // not present if not destroying
});
types.addDictType("browsingContextTarget.workers", {
workers: "array:workerTarget",
});
types.addDictType("browsingContextTarget.reload", {
force: "boolean",
});
types.addDictType("browsingContextTarget.reconfigure", {
javascriptEnabled: "nullable:boolean",
cacheDisabled: "nullable:boolean",
serviceWorkersTestingEnabled: "nullable:boolean",
performReload: "nullable:boolean",
});
const browsingContextTargetSpecPrototype = {
typeName: "browsingContextTarget",
methods: {
attach: {
request: {},
response: RetVal("browsingContextTarget.attach"),
},
detach: {
request: {},
response: {},
},
ensureCSSErrorReportingEnabled: {
request: {},
response: {},
},
focus: {
request: {},
response: {},
},
goForward: {
request: {},
response: {},
},
goBack: {
request: {},
response: {},
},
reload: {
request: {
options: Option(0, "browsingContextTarget.reload"),
},
response: {},
},
navigateTo: {
request: {
url: Option(0, "string"),
},
response: {},
},
reconfigure: {
request: {
options: Option(0, "browsingContextTarget.reconfigure"),
},
response: {},
},
switchToFrame: {
request: {
windowId: Option(0, "string"),
},
response: RetVal("browsingContextTarget.switchtoframe"),
},
listFrames: {
request: {},
response: RetVal("browsingContextTarget.listframes"),
},
listWorkers: {
request: {},
response: RetVal("browsingContextTarget.workers"),
},
logInPage: {
request: {
text: Option(0, "string"),
category: Option(0, "string"),
flags: Option(0, "string"),
},
response: {},
},
},
events: {
tabNavigated: {
type: "tabNavigated",
url: Option(0, "string"),
title: Option(0, "string"),
nativeConsoleAPI: Option(0, "boolean"),
state: Option(0, "string"),
isFrameSwitching: Option(0, "boolean"),
},
frameUpdate: {
type: "frameUpdate",
frames: Option(0, "nullable:array:browsingContextTarget.window"),
selected: Option(0, "nullable:number"),
destroyAll: Option(0, "nullable:boolean"),
},
tabDetached: {
type: "tabDetached",
// This is to make browser_dbg_navigation.js to work as it expect to
// see a packet object when listening for tabDetached
from: Option(0, "string"),
},
workerListChanged: {
type: "workerListChanged",
},
// The thread actor is no longer emitting newSource event in the name of the target
// actor (bug 1269919), but as we may still connect to older servers which still do,
// we have to keep it being mentioned here. Otherwise the event is considered as a
// response to a request and confuses the packet ordering.
// We can remove that once FF66 is no longer supported.
newSource: {
type: "newSource",
},
"resource-available-form": {
type: "resource-available-form",
resources: Arg(0, "array:json"),
},
"resource-destroyed-form": {
type: "resource-destroyed-form",
resources: Arg(0, "array:json"),
},
},
};
const browsingContextTargetSpec = generateActorSpec(
browsingContextTargetSpecPrototype
);
exports.browsingContextTargetSpecPrototype = browsingContextTargetSpecPrototype;
exports.browsingContextTargetSpec = browsingContextTargetSpec;