135 lines
4.8 KiB
HTML
135 lines
4.8 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><!-- webkit-test-runner [ jscOptions=--useAtMethod=true ] -->
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
// ------------------------------
|
|
// Setup Test Prototype Chain
|
|
// ------------------------------
|
|
|
|
function SuperBar() { this._bar = 10; }
|
|
SuperBar.prototype = {
|
|
__proto__: Object.prototype,
|
|
constructor: SuperBar,
|
|
BAR_CONSTANT: 99,
|
|
get getterProperty() { return 20; },
|
|
get bar() { return this._bar; },
|
|
set setterOnly(x) {},
|
|
};
|
|
|
|
function SuperFoo() { SuperBar.call(this); this._foo = 5; }
|
|
SuperFoo.prototype = {
|
|
__proto__: SuperBar.prototype,
|
|
constructor: SuperFoo,
|
|
get getterProperty() { return 10; },
|
|
get foo() { return this._foo; }
|
|
};
|
|
|
|
function ClassWithBadGetter() {}
|
|
ClassWithBadGetter.prototype = {
|
|
__proto__: Object.prototype,
|
|
constructor: ClassWithBadGetter,
|
|
get badGetter() { throw "throw in getter"; }
|
|
};
|
|
|
|
|
|
// --------------------
|
|
// Objects to Debug
|
|
// --------------------
|
|
|
|
// window.loadEvent is set inside of <body onload="..."> below.
|
|
var simpleObject = {a:1, b:"string"};
|
|
var simpleArray = [1, "two", /three/];
|
|
var arrayProto = [].__proto__;
|
|
var complexObject = new SuperFoo;
|
|
var badGetterObject = new ClassWithBadGetter;
|
|
var unboundFunction = function() { console.log(arguments); }
|
|
var boundFunction = unboundFunction.bind(document.body, 1, 2, 3);
|
|
var objectWithSymbolProperties = {prop:1, [Symbol()]:2, [Symbol('sym')]:3, [Symbol('sym')]:4, [Symbol()]: Symbol(), [Symbol.toStringTag]: new String("IgnoredTag"), prop2: 5};
|
|
var objectWithSymbolToStringTag = {[Symbol.toStringTag]: "Foo"};
|
|
var objectWithShadowedSymbolToStringTag = new (class Foo extends EventTarget {});
|
|
|
|
// --------
|
|
// test
|
|
// --------
|
|
|
|
function test()
|
|
{
|
|
var currentStepIndex = 0;
|
|
var steps = [
|
|
{expression: "window.simpleObject"},
|
|
{expression: "window.simpleArray"},
|
|
{expression: "window.arrayProto"},
|
|
{expression: "window.loadEvent"},
|
|
{expression: "window.complexObject"},
|
|
{expression: "window.badGetterObject"},
|
|
{expression: "window.unboundFunction"},
|
|
{expression: "window.boundFunction"},
|
|
{expression: "window.objectWithSymbolProperties"},
|
|
{expression: "window.objectWithSymbolToStringTag"},
|
|
{expression: "window.objectWithShadowedSymbolToStringTag"},
|
|
{expression: "document.getElementById('my-select').options"},
|
|
]
|
|
|
|
function runNextStep() {
|
|
if (currentStepIndex >= steps.length) {
|
|
InspectorTest.log("DONE");
|
|
InspectorTest.completeTest();
|
|
return;
|
|
}
|
|
|
|
var step = steps[currentStepIndex++];
|
|
InspectorTest.log("");
|
|
InspectorTest.log("-----------------------------------------------------");
|
|
InspectorTest.log("EXPRESSION: " + step.expression);
|
|
|
|
WI.runtimeManager.evaluateInInspectedWindow(step.expression, {objectGroup: "test", doNotPauseOnExceptionsAndMuteConsole: true}, function(remoteObject, wasThrown) {
|
|
InspectorTest.assert(remoteObject instanceof WI.RemoteObject);
|
|
InspectorTest.log("type: " + remoteObject.type);
|
|
if (remoteObject.subtype)
|
|
InspectorTest.log("subtype: " + remoteObject.subtype);
|
|
InspectorTest.log("description: " + remoteObject.description);
|
|
|
|
const options = {
|
|
ownProperties: true,
|
|
};
|
|
remoteObject.getPropertyDescriptors(function(properties) {
|
|
InspectorTest.log("\nOWN PROPERTIES:");
|
|
for (var property of properties) {
|
|
InspectorTest.assert(property instanceof WI.PropertyDescriptor);
|
|
InspectorTest.log(" " + property.name);
|
|
}
|
|
}, options);
|
|
|
|
remoteObject.getDisplayablePropertyDescriptors(function(properties) {
|
|
InspectorTest.log("\nDISPLAYABLE PROPERTIES:");
|
|
for (var property of properties) {
|
|
InspectorTest.assert(property instanceof WI.PropertyDescriptor);
|
|
InspectorTest.log(" " + property.name);
|
|
}
|
|
});
|
|
|
|
remoteObject.getPropertyDescriptors(function(properties) {
|
|
InspectorTest.log("\nALL PROPERTIES:");
|
|
for (var property of properties) {
|
|
InspectorTest.assert(property instanceof WI.PropertyDescriptor);
|
|
InspectorTest.log(" " + property.name);
|
|
}
|
|
|
|
InspectorTest.log("-----------------------------------------------------");
|
|
runNextStep();
|
|
});
|
|
});
|
|
}
|
|
|
|
runNextStep();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="window.loadEvent = event; runTest()">
|
|
<select id="my-select" style="display: none">
|
|
<option name="1" id="attr_1" value="1"></option>
|
|
</select>
|
|
</body>
|
|
</html>
|