| Index: test/inspector/debugger/object-preview-internal-properties.js
|
| diff --git a/test/inspector/debugger/object-preview-internal-properties.js b/test/inspector/debugger/object-preview-internal-properties.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..00b1d5bf45a3ff310d3cb6bb13d79a406dd2903c
|
| --- /dev/null
|
| +++ b/test/inspector/debugger/object-preview-internal-properties.js
|
| @@ -0,0 +1,107 @@
|
| +// Copyright 2016 the V8 project authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +print("Check internal properties reported in object preview.");
|
| +
|
| +Protocol.Debugger.enable();
|
| +Protocol.Runtime.enable();
|
| +Protocol.Runtime.onConsoleAPICalled(dumpInternalPropertiesAndEntries);
|
| +
|
| +InspectorTest.runTestSuite([
|
| + function boxedObjects(next)
|
| + {
|
| + checkExpression("new Number(239)")
|
| + .then(() => checkExpression("new Boolean(false)"))
|
| + .then(() => checkExpression("new String(\"abc\")"))
|
| + .then(() => checkExpression("Object(Symbol(42))"))
|
| + .then(next);
|
| + },
|
| +
|
| + function promise(next)
|
| + {
|
| + checkExpression("Promise.resolve(42)")
|
| + .then(() => checkExpression("new Promise(() => undefined)"))
|
| + .then(next);
|
| + },
|
| +
|
| + function generatorObject(next)
|
| + {
|
| + checkExpression("(function* foo() { yield 1 })()")
|
| + .then(next);
|
| + },
|
| +
|
| + function entriesInMapAndSet(next)
|
| + {
|
| + checkExpression("new Map([[1,2]])")
|
| + .then(() => checkExpression("new Set([1])"))
|
| + .then(() => checkExpression("new WeakMap([[{}, 42]])"))
|
| + .then(() => checkExpression("new WeakSet([{}])"))
|
| + .then(next);
|
| + },
|
| +
|
| + function iteratorObject(next)
|
| + {
|
| + checkExpression("(new Map([[1,2]])).entries()")
|
| + .then(() => checkExpression("(new Set([[1,2]])).entries()"))
|
| + .then(next);
|
| + },
|
| +
|
| + function noPreviewForFunctionObject(next)
|
| + {
|
| + var expression = "(function foo(){})";
|
| + InspectorTest.log(expression);
|
| + Protocol.Runtime.evaluate({ expression: expression, generatePreview: true})
|
| + .then(message => InspectorTest.logMessage(message))
|
| + .then(next);
|
| + },
|
| +
|
| + function otherObjects(next)
|
| + {
|
| + checkExpression("[1,2,3]")
|
| + .then(() => checkExpression("/123/"))
|
| + .then(() => checkExpression("({})"))
|
| + .then(next);
|
| + },
|
| +
|
| + function overridenArrayGetter(next)
|
| + {
|
| + Protocol.Runtime.evaluate({ expression: "Array.prototype.__defineGetter__(\"0\",() => { throw new Error() }) "})
|
| + .then(() => checkExpression("Promise.resolve(42)"))
|
| + .then(next);
|
| + }
|
| +]);
|
| +
|
| +function checkExpression(expression)
|
| +{
|
| + InspectorTest.log(`expression: ${expression}`);
|
| + // console.table has higher limits for internal properties amount in preview.
|
| + return Protocol.Runtime.evaluate({ expression: `console.table(${expression})`, generatePreview: true });
|
| +}
|
| +
|
| +function dumpInternalPropertiesAndEntries(message)
|
| +{
|
| + var properties;
|
| + var entries;
|
| + try {
|
| + var preview = message.params.args[0].preview;
|
| + properties = preview.properties;
|
| + entries = preview.entries;
|
| + } catch (e) {
|
| + InspectorTest.logMessage(message);
|
| + return;
|
| + }
|
| + if (!properties) {
|
| + InspectorTest.logMessage(message);
|
| + return;
|
| + }
|
| + for (var property of properties) {
|
| + if (property.name.startsWith("[["))
|
| + InspectorTest.logMessage(property);
|
| + }
|
| + if (entries) {
|
| + InspectorTest.log("[[Entries]]:");
|
| + InspectorTest.logMessage(entries);
|
| + }
|
| + InspectorTest.log("");
|
| +}
|
|
|