/* 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 {
generateActorSpec,
Arg,
RetVal,
types,
} = require(
"resource://devtools/shared/protocol.js");
types.addDictType(
"object.descriptor" , {
configurable:
"boolean" ,
enumerable:
"boolean" ,
// Can be null if there is a getter for the property.
value:
"nullable:json" ,
// Only set `value` exists.
writable:
"nullable:boolean" ,
// Only set when `value` does not exist and there is a getter for the property.
get:
"nullable:json" ,
// Only set when `value` does not exist and there is a setter for the property.
set:
"nullable:json" ,
});
types.addDictType(
"object.completion" , {
return :
"nullable:json" ,
throw :
"nullable:json" ,
});
types.addDictType(
"object.prototypeproperties" , {
prototype:
"object.descriptor" ,
ownProperties:
"nullable:json" ,
ownSymbols:
"nullable:array:object.descriptor" ,
safeGetterValues:
"nullable:json" ,
});
types.addDictType(
"object.prototype" , {
prototype:
"object.descriptor" ,
});
types.addDictType(
"object.property" , {
descriptor:
"nullable:object.descriptor" ,
});
types.addDictType(
"object.propertyValue" , {
value:
"nullable:object.completion" ,
});
types.addDictType(
"object.apply" , {
value:
"nullable:object.completion" ,
});
types.addDictType(
"object.bindings" , {
arguments:
"array:json" ,
variables:
"json" ,
});
types.addDictType(
"object.enumProperties.Options" , {
enumEntries:
"nullable:boolean" ,
ignoreNonIndexedProperties:
"nullable:boolean" ,
ignoreIndexedProperties:
"nullable:boolean" ,
query:
"nullable:string" ,
sort:
"nullable:boolean" ,
});
types.addDictType(
"object.dependentPromises" , {
promises:
"array:object.descriptor" ,
});
types.addDictType(
"object.originalSourceLocation" , {
source:
"source" ,
line:
"number" ,
column:
"number" ,
functionDisplayName:
"string" ,
});
types.addDictType(
"object.promiseState" , {
state:
"string" ,
value:
"nullable:object.descriptor" ,
reason:
"nullable:object.descriptor" ,
creationTimestamp:
"number" ,
timeToSettle:
"nullable:number" ,
});
types.addDictType(
"object.proxySlots" , {
proxyTarget:
"object.descriptor" ,
proxyHandler:
"object.descriptor" ,
});
types.addDictType(
"object.customFormatterBody" , {
customFormatterBody:
"json" ,
});
const objectSpec = generateActorSpec({
typeName:
"obj" ,
methods: {
allocationStack: {
request: {},
response: {
allocationStack: RetVal(
"array:object.originalSourceLocation" ),
},
},
dependentPromises: {
request: {},
response: RetVal(
"object.dependentPromises" ),
},
enumEntries: {
request: {},
response: {
iterator: RetVal(
"propertyIterator" ),
},
},
enumProperties: {
request: {
options: Arg(0,
"nullable:object.enumProperties.Options" ),
},
response: {
iterator: RetVal(
"propertyIterator" ),
},
},
enumPrivateProperties: {
request: {},
response: {
iterator: RetVal(
"privatePropertiesIterator" ),
},
},
enumSymbols: {
request: {},
response: {
iterator: RetVal(
"symbolIterator" ),
},
},
fulfillmentStack: {
request: {},
response: {
fulfillmentStack: RetVal(
"array:object.originalSourceLocation" ),
},
},
prototypeAndProperties: {
request: {},
response: RetVal(
"object.prototypeproperties" ),
},
prototype: {
request: {},
response: RetVal(
"object.prototype" ),
},
property: {
request: {
name: Arg(0,
"string" ),
},
response: RetVal(
"object.property" ),
},
propertyValue: {
request: {
name: Arg(0,
"string" ),
receiverId: Arg(1,
"nullable:string" ),
},
response: RetVal(
"object.propertyValue" ),
},
apply: {
request: {
context: Arg(0,
"nullable:json" ),
arguments: Arg(1,
"nullable:array:json" ),
},
response: RetVal(
"object.apply" ),
},
rejectionStack: {
request: {},
response: {
rejectionStack: RetVal(
"array:object.originalSourceLocation" ),
},
},
promiseState: {
request: {},
response: RetVal(
"object.promiseState" ),
},
proxySlots: {
request: {},
response: RetVal(
"object.proxySlots" ),
},
customFormatterBody: {
request: {},
response: RetVal(
"object.customFormatterBody" ),
},
addWatchpoint: {
request: {
property: Arg(0,
"string" ),
label: Arg(1,
"string" ),
watchpointType: Arg(2,
"string" ),
},
oneway:
true ,
},
removeWatchpoint: {
request: {
property: Arg(0,
"string" ),
},
oneway:
true ,
},
removeWatchpoints: {
request: {},
oneway:
true ,
},
release: { release:
true },
// Needed for the PauseScopedObjectActor which extends the ObjectActor.
threadGrip: {
request: {},
response: {},
},
},
});
exports.objectSpec = objectSpec;
Messung V0.5 C=92 H=100 G=95
¤ Dauer der Verarbeitung: 0.2 Sekunden
¤
*© Formatika GbR, Deutschland