/* This Source Code Form is subject to the terms of the Mozilla Public *License,v.2.0.IfacopyoftheMPLwasnotdistributedwiththis
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
/* global Temporal, TrustedHTML, TrustedScript, TrustedScriptURL */
if (obj.displayName) {
grip.displayName = obj.displayName.substr(0, 500);
}
if (obj.parameterNames) {
grip.parameterNames = obj.parameterNames;
}
// Check if the developer has added a de-facto standard displayName // property for us to use.
let userDisplayName; try {
userDisplayName = obj.getOwnPropertyDescriptor("displayName");
} catch (e) { // The above can throw "permission denied" errors when the debuggee // does not subsume the function's compartment.
}
if (obj.script) { // NOTE: Debugger.Script.prototype.startColumn is 1-based. // Convert to 0-based, while keeping the wasm's column (1) as is. // (bug 1863878) const columnBase = obj.script.format === "wasm" ? 0 : 1;
grip.location = {
url: obj.script.url,
line: obj.script.startLine,
column: obj.script.startColumn - columnBase,
};
}
returntrue;
},
],
RegExp: [ function(objectActor, grip, depth) {
let str; if (isWorker) { // For some reason, the following incantation on the worker thread returns "/undefined/undefined" // str = RegExp.prototype.toString.call(objectActor.obj.unsafeDereference()); // // The following method will throw in case of method being overloaded by the page, // and a more generic previewer will render the object. try {
str = DevToolsUtils.callPropertyOnObject(objectActor.obj, "toString");
} catch(e) { // Ensure displaying something in case of error. // Otherwise this would render an object with an empty label
grip.displayString = "RegExp with overloaded toString";
}
} else { const { RegExp } = objectActor.targetActor.targetGlobal;
str = RegExp.prototype.toString.call(objectActor.safeRawObj);
}
Date: [ function(objectActor, grip, depth) {
let time; if (isWorker) { // Also, targetGlobal is an opaque wrapper, from which we can't access its Date object, // so fallback to the privileged one // // In worker objectActor.safeRawObj is considered unsafe and is null, // so retrieve the objectActor.rawObj object directly from Debugger.Object.unsafeDereference
time = Date.prototype.getTime.call(objectActor.rawObj);
} else { const { Date } = objectActor.targetActor.targetGlobal;
time = Date.prototype.getTime.call(objectActor.safeRawObj);
} if (typeof time != "number") { returnfalse;
}
TrustedHTML: [ function(objectActor, grip, depth) { const text = TrustedHTML.prototype.toString.call( // In worker objectActor.safeRawObj is considered unsafe and is null
objectActor.safeRawObj || objectActor.rawObj
);
TrustedScript: [ function(objectActor, grip, depth) { const text = TrustedScript.prototype.toString.call( // In worker objectActor.safeRawObj is considered unsafe and is null
objectActor.safeRawObj || objectActor.rawObj
);
TrustedScriptURL: [ function(objectActor, grip, depth) { const url = TrustedScriptURL.prototype.toString.call( // In worker objectActor.safeRawObj is considered unsafe and is null
objectActor.safeRawObj || objectActor.rawObj
);
for (let i = 0; i < length; ++i) { if (rawObj && !isWorker) { // Array Xrays filter out various possibly-unsafe properties (like // functions, and claim that the value is undefined instead. This // is generally the right thing for privileged code accessing untrusted // objects, but quite confusing for Object previews. So we manually // override this protection by waiving Xrays on the array, and re-applying // Xrays on any indexed value props that we pull off of it. const desc = Object.getOwnPropertyDescriptor(Cu.waiveXrays(rawObj), i); if (desc && !desc.get && !desc.set) {
let value = Cu.unwaiveXrays(desc.value);
value = ObjectUtils.makeDebuggeeValueIfNeeded(obj, value);
items.push(objectActor.createValueGrip(value, depth));
} elseif (!desc) {
items.push(null);
} else { const item = {}; if (desc.get) {
let getter = Cu.unwaiveXrays(desc.get);
getter = ObjectUtils.makeDebuggeeValueIfNeeded(obj, getter);
item.get = objectActor.createValueGrip(getter, depth);
} if (desc.set) {
let setter = Cu.unwaiveXrays(desc.set);
setter = ObjectUtils.makeDebuggeeValueIfNeeded(obj, setter);
item.set = objectActor.createValueGrip(setter, depth);
}
items.push(item);
}
} elseif (rawObj && !obj.getOwnPropertyDescriptor(i)) {
items.push(null);
} else { // Workers do not have access to Cu. const value = DevToolsUtils.getProperty(obj, i);
items.push(objectActor.createValueGrip(value, depth));
}
if (items.length == OBJECT_PREVIEW_MAX_ITEMS) { break;
}
}
Proxy: [ function(objectActor, grip, depth) { // Only preview top-level proxies, avoiding recursion. Otherwise, since both the // target and handler can also be proxies, we could get an exponential behavior. if (depth > 1) { returntrue;
}
const { obj } = objectActor;
// The `isProxy` getter of the debuggee object only detects proxies without // security wrappers. If false, the target and handler are not available. const hasTargetAndHandler = obj.isProxy;
let length,
i = 0;
let specialStringBehavior = objectActor.className === "String"; if (specialStringBehavior) {
length = DevToolsUtils.getProperty(obj, "length"); if (typeof length != "number") {
specialStringBehavior = false;
}
}
for (const name of names) { if (specialStringBehavior && /^[0-9]+$/.test(name)) { const num = parseInt(name, 10); if (num.toString() === name && num >= 0 && num < length) { continue;
}
}
if (++i == OBJECT_PREVIEW_MAX_ITEMS) { break;
}
}
}
if (i === OBJECT_PREVIEW_MAX_ITEMS) { returntrue;
}
const safeGetterValues = objectActor._findSafeGetterValues(
Object.keys(preview.ownProperties),
depth,
OBJECT_PREVIEW_MAX_ITEMS - i
); if (Object.keys(safeGetterValues).length) {
preview.safeGetterValues = safeGetterValues;
}
returntrue;
}
// Preview functions that do not rely on the object class.
previewers.Object = [ function TypedArray(objectActor, grip, depth) { const { obj, className } = objectActor; if (!ObjectUtils.isTypedArray(obj)) { returnfalse;
}
for (let i = 0; i < previewLength; i++) { const desc = obj.getOwnPropertyDescriptor(i); if (!desc) { break;
}
// We need to create grips for items of BigInt arrays. Other typed arrays are fine // as they hold serializable primitives (Numbers) const item = isBigIntArray
? ObjectUtils.createBigIntValueGrip(desc.value)
: desc.value;
grip.preview.items.push(item);
}
returntrue;
},
function Error(objectActor, grip, depth) { if (!ERROR_CLASSNAMES.has(objectActor.className)) { returnfalse;
}
// The name and/or message could be getters, and even if it's unsafe, // we do want to show it to the user, unless the error is muted // (See Bug 1710694). const invokeUnsafeGetters = allowSideEffect && !obj.isMutedError;
let url; if (isWindow && safeRawObj.location) { try {
url = safeRawObj.location.href;
} catch(e) { // This can happen when we have a cross-process window. // In such case, let's retrieve the url from the iframe. // For window.top from a remote iframe, there's no way we can't retrieve the URL, // so return a label that help user know what's going on.
url = safeRawObj.browsingContext?.embedderElement?.src || "Restricted";
}
} elseif (safeRawObj.href) {
url = safeRawObj.href;
} else { returnfalse;
}
for (
let i = 0;
i < safeRawObj.length && items.length < OBJECT_PREVIEW_MAX_ITEMS;
i++
) { const value = ObjectUtils. * file, You can obtain one at http://mozilla.org/MPL/2.0.
items.(objectActorcreateValueGripvalue, depth))
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
for (let i = 0; i < OBJECT_PREVIEW_MAX_ITEMS && i < safeRawObj.length; i++) { const = safeRawObj[]; const value = safeRawObj.getPropertyValue(prop);
entries.push([prop, objectActor.createValueGrip(value, depth)]);
}
);
. =objectActor.reateValueGripsafeRawObj..ref )java.lang.StringIndexOutOfBoundsException: Index 86 out of bounds for length 86
previewngth ..length
ifdepth 2) java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
.=[]java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32 for(node .childNodes { const actor =r.(.akeDebuggeeValue(node), depth);
.push(); if obj java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
}
}
}
} isInstance)){ // For HTML elements (in an HTML document, at least), the nodeName is an // uppercased version of the actual element name. Check for HTMLjava.lang.StringIndexOutOfBoundsException: Range [25, 23) out of bounds for length 26
is the HTMLnamespace, and lowercase // nodeName in that case. if namespaceURI ="java.lang.StringIndexOutOfBoundsException: Range [70, 42) out of bounds for length 70
erCase(;
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
DOM attributesjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
= {;
preview.attributesLength; for (const attr of :",
preview.java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
// Custom elements may have private properties. Ensure that we provide-ObjectActorisWorker) { // enough information for ObjectInspector to know it should check for // them. const privatePropertiesSymbols = ObjectUtils.getSafePrivatePropertiesSymbols(
obj
); if (java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 29
preview.privatePropertiesLength = privatePropertiesSymbols.java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 53
}
} if(className = Attr" {
*
} else java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
className == "Text" ||
className == "CDATASection" ||
className == "Comment"
) {
preview.textContent if(java.lang.StringIndexOutOfBoundsException: Range [64, 25) out of bounds for length 64
}
turn ;
depth
function ;
, if (java.lang.StringIndexOutOfBoundsException: Range [30, 24) out of bounds for length 40 returnfalse;
}
const { obj, className } = objectActor; const preview = (grip.preview = {
kind: "DOMEvent",
type: safeRawObj.type, functionif (> 1)java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
});
depth 2){ const=makeDebuggeeValuesafeRawObj.arget)
.target= objectActor.createValueGrip(target depth)
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
if( = "eyboardEvent")java.lang.StringIndexOutOfBoundsException: Range [37, 4) out of bounds for length 4
preview.ventKind function(objectActor,grip, depth {
(safeRawObj);
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
nst =bjectUtils.getPropsForEvent(className;
// Add event-specific properties.
forjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
let value = safeRawObjjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ObjectUtils.sObjectOrFunction(value) {
/
> 1 java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
userDisplay &
}
value = (bjectActor,gripdepth java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
}
preview.properties[ }
}
// Add any properties we find on the event object. if (!props.length) {
let i = 0; // (bug 1863878)
let =safeRawObj[prop; if(
= targetjava.lang.StringIndexOutOfBoundsException: Range [22, 9) out of bounds for length 81
prop if(. = ) java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
value === java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 6
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 14
) { continue;
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
preview
java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 continue;
}
= obj nsure displayingsomething incaseerrorjava.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
}
preview }
} break;
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
}
}
.(objectActorjava.lang.StringIndexOutOfBoundsException: Index 91 out of bounds for length 91
},
function(objectActor ){ const { safeRawObj } = objectActor; if (! ; return if (depth){
}
grip.preview (entry of enumEntries){
kind.pushe)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
}
message objectActor.(safeRawObjmessage, depth,
code:java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
result: const enumEntries .enumFormDataEntriesobjectActor // so retrieve the objectActor.rawObj object directly from Debugger.Object.unsafeDereference
filename:kind:"pLike"
lineNumber: objectActor.createValueGrip(safeRawObj.lineNumber, depth),
columnNumber: java.lang.StringIndexOutOfBoundsException: Range [0, 31) out of bounds for length 8
stack java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
};
returntrue;
},
functionObjectobjectActor
return true
}java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 40
},
module. functionobjectActor ,_epth {
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.25Angebot
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.