Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// allocation event is lost. This number must fit in a 32 bit signed integer.
maxLogLength: "number"
});
/**
* An actor that returns memory usage data for its parent actor's window.
* A tab-scoped instance of this actor will measure the memory footprint of its
* parent tab. A global-scoped instance however, will measure the memory
* footprint of the chrome window referenced by the root actor.
*
* This actor wraps the Memory module at devtools/server/performance/memory.js
* and provides RDP definitions.
*
* @see devtools/server/performance/memory.js for documentation.
*/
var MemoryActor = exports.MemoryActor = protocol.ActorClass({
typeName: "memory",
/**
* The set of unsolicited events the MemoryActor emits that will be sent over
* the RDP (by protocol.js).
*/
events: {
// Same format as the data passed to the
// `Debugger.Memory.prototype.onGarbageCollection` hook. See
// `js/src/doc/Debugger/Debugger.Memory.md` for documentation.
"garbage-collection": {
type: "garbage-collection",
data: Arg(0, "json"),
},
});
var HighlighterFront = protocol.FrontClass(HighlighterActor, {
// Update the object given a form representation off the wire.
form: function(json) {
this.actorID = json.actor;
// FF42+ HighlighterActors starts exposing custom form, with traits object
this.traits = json.traits || {};
}
});
/**
* A generic highlighter actor class that instantiate a highlighter given its
* type name and allows to show/hide it.
*/
var CustomHighlighterActor = exports.CustomHighlighterActor = protocol.ActorClass({
typeName: "customhighlighter",
/**
* Create a highlighter instance given its typename
* The typename must be one of HIGHLIGHTER_CLASSES and the class must
* implement constructor(tabActor), show(node), hide(), destroy()
*/
initialize: function(inspector, typeName) {
protocol.Actor.prototype.initialize.call(this, null);
this._inspector = inspector;
let constructor = highlighterTypes.get(typeName);
if (!constructor) {
let list = [...highlighterTypes.keys()];
const values = require("./value");
const preview = require("./preview");
const {JSTermHelpers, JSPropertyProvider} = require("./console-utils");
types.addDictType("chromium_consolemsg", {
"arguments": "array:chromium_grip",
"stacktrace": "array:json",
"styles": "array:chromium_grip"
});
types.addDictType("chromium_pageerror", {
// XXX: should be longstring, but it doesn't get properly marshalled on reload
"errorMessage": "string",
});
var ChromiumConsoleActor = protocol.ActorClass({
typeName: "chromium_console",
toString: function() { return "[ConsoleActor:" + this.actorID + "]" },
events: {
"ConsoleAPI": {
type: "consoleAPICall",
message: Arg(0, "chromium_consolemsg")
},
"PageError": {
type: "pageError",
pageError: Arg(0, "chromium_pageerror")
}
},
initialize: function(tab) {
if (!foundProp || !foundProp.range) {
return;
}
yield this.pageStyle.setPropertyText(this, foundProp);
}
}),
modifySelector: todoMethod({
request: { selector: Arg(0, "string") },
response: { isModified: RetVal("boolean") },
}, "modifySelector"),
});
// XXX: Don't do the media change actor yet.
var ChromiumStyleSheetsActor = protocol.ActorClass({
typeName: "chromium_stylesheets",
initialize: function(tab) {
Actor.prototype.initialize.call(this);
this.tab = tab;
this.refMap = new Map();
},
get conn() { return this.tab.conn },
get rpc() { return this.tab.rpc },
get sheets() { return this.tab.sheets },
sheetRef: function(header) {
if (this.refMap.has(header.styleSheetId)) {
return this.refMap.get(header.styleSheetId);
}
name: "string",
CSSFamilyName: "string",
rule: "nullable:domstylerule",
srcIndex: "number",
URI: "string",
format: "string",
preview: "nullable:fontpreview",
localName: "string",
metadata: "string"
});
/**
* The PageStyle actor lets the client look at the styles on a page, as
* they are applied to a given node.
*/
var PageStyleActor = protocol.ActorClass({
typeName: "pagestyle",
events: {
"stylesheet-updated": {
type: "styleSheetUpdated",
styleSheet: Arg(0, "stylesheet")
}
},
/**
* Create a PageStyleActor.
*
* @param inspector
* The InspectorActor that owns this PageStyleActor.
*
* @constructor
/**
* The corresponding Front object for the ProgramActor.
*/
var ProgramFront = protocol.FrontClass(ProgramActor, {
initialize: function(client, form) {
protocol.Front.prototype.initialize.call(this, client, form);
}
});
/**
* The WebGL Actor handles simple interaction with a WebGL context via a few
* high-level methods. After instantiating this actor, you'll need to set it
* up by calling setup().
*/
var WebGLActor = exports.WebGLActor = protocol.ActorClass({
typeName: "webgl",
initialize: function(conn, tabActor) {
protocol.Actor.prototype.initialize.call(this, conn);
this.tabActor = tabActor;
this._onGlobalCreated = this._onGlobalCreated.bind(this);
this._onGlobalDestroyed = this._onGlobalDestroyed.bind(this);
this._onProgramLinked = this._onProgramLinked.bind(this);
},
destroy: function(conn) {
protocol.Actor.prototype.destroy.call(this, conn);
this.finalize();
},
/**
* Starts waiting for the current tab actor's document global to be
* created, in order to instrument the Canvas context and become
* These dedicated classes are used by the LayoutChangesObserver.
*/
const {Ci, Cu} = require("devtools/sham/chrome");
const { XPCOMUtils } = require("devtools/sham/xpcomutils");
const protocol = require("devtools/server/protocol");
const {method, Arg, RetVal, types} = protocol;
const events = require("sdk/event/core");
const Heritage = require("sdk/core/heritage");
/*const {setTimeout, clearTimeout} = require("sdk/timers");*/
const EventEmitter = require("devtools/shared/event-emitter");
/**
* The reflow actor tracks reflows and emits events about them.
*/
var ReflowActor = exports.ReflowActor = protocol.ActorClass({
typeName: "reflow",
events: {
/**
* The reflows event is emitted when reflows have been detected. The event
* is sent with an array of reflows that occured. Each item has the
* following properties:
* - start {Number}
* - end {Number}
* - isInterruptible {Boolean}
*/
"reflows" : {
type: "reflows",
reflows: Arg(0, "array:json")
}
},
form: function(form) {
this.actorID = form.actor;
this.type = form.type;
this.name = form.name;
this.file = form.file;
this.line = form.line;
this.timestamp = form.timestamp;
this.callerPreview = form.callerPreview;
this.argsPreview = form.argsPreview;
}
});
/**
* This actor observes function calls on certain objects or globals.
*/
var CallWatcherActor = exports.CallWatcherActor = protocol.ActorClass({
typeName: "call-watcher",
initialize: function(conn, tabActor) {
protocol.Actor.prototype.initialize.call(this, conn);
this.tabActor = tabActor;
this._onGlobalCreated = this._onGlobalCreated.bind(this);
this._onGlobalDestroyed = this._onGlobalDestroyed.bind(this);
this._onContentFunctionCall = this._onContentFunctionCall.bind(this);
},
destroy: function(conn) {
protocol.Actor.prototype.destroy.call(this, conn);
this.finalize();
},
/**
* Starts waiting for the current tab actor's document global to be
* created, in order to instrument the specified objects and become
return ret.entries[0];
});
}, {
impl: "_addNewRule"
})
});
/**
* An actor that represents a CSS style object on the protocol.
*
* We slightly flatten the CSSOM for this actor, it represents
* both the CSSRule and CSSStyle objects in one actor. For nodes
* (which have a CSSStyle but no CSSRule) we create a StyleRuleActor
* with a special rule type (100).
*/
var StyleRuleActor = protocol.ActorClass({
typeName: "domstylerule",
events: {
"location-changed": {
type: "locationChanged",
line: Arg(0, "number"),
column: Arg(1, "number")
},
},
initialize: function(pageStyle, item) {
protocol.Actor.prototype.initialize.call(this, null);
this.pageStyle = pageStyle;
this.rawStyle = item.style;
this._parentSheet = null;
this._onStyleApplied = this._onStyleApplied.bind(this);
});
/**
* Type describing an overview of a function call.
*/
protocol.types.addDictType("call-details", {
type: "number",
name: "string",
stack: "array:call-stack-item"
});
/**
* This actor contains information about a function call, like the function
* type, name, stack, arguments, returned value etc.
*/
var FunctionCallActor = protocol.ActorClass({
typeName: "function-call",
/**
* Creates the function call actor.
*
* @param DebuggerServerConnection conn
* The server connection.
* @param DOMWindow window
* The content window.
* @param string global
* The name of the global object owning this function, like
* "CanvasRenderingContext2D" or "WebGLRenderingContext".
* @param object caller
* The object owning the function when it was called.
* For example, in `foo.bar()`, the caller is `foo`.
* @param number type