101 lines
3.2 KiB
HTML
101 lines
3.2 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script src="../../http/tests/inspector/debugger/debugger-test.js"></script>
|
|
<script src="./resources/scope.js"></script>
|
|
<script>
|
|
|
|
function test()
|
|
{
|
|
var testInfoList = [
|
|
{ line : 4, column : 8, startFunc : "testNativeScope()" }
|
|
];
|
|
|
|
var currentTestIndex = 0;
|
|
var scriptObject;
|
|
|
|
function startTest() {
|
|
InspectorTest.log("Starting Test");
|
|
runNextTest();
|
|
}
|
|
|
|
function runNextTest() {
|
|
if (currentTestIndex >= testInfoList.length) {
|
|
InspectorTest.log("Tests done");
|
|
InspectorTest.completeTest();
|
|
return;
|
|
}
|
|
|
|
var testInfo = testInfoList[currentTestIndex];
|
|
var location = scriptObject.createSourceCodeLocation(testInfo.line, testInfo.column);
|
|
var breakpoint = new WI.JavaScriptBreakpoint(location);
|
|
|
|
WI.debuggerManager.addBreakpoint(breakpoint);
|
|
InspectorTest.evaluateInPage(testInfo.startFunc);
|
|
|
|
currentTestIndex++;
|
|
}
|
|
|
|
WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.CallFramesDidChange, function(event) {
|
|
var activeCallFrame = WI.debuggerManager.activeCallFrame;
|
|
|
|
if (!activeCallFrame)
|
|
return;
|
|
|
|
var stopLocation = "line: " + activeCallFrame.sourceCodeLocation.lineNumber + ", column: " + activeCallFrame.sourceCodeLocation.columnNumber;
|
|
|
|
InspectorTest.log("Hit breakpoint at " + stopLocation);
|
|
InspectorTest.evaluateInPage("console.log('Paused at " + stopLocation + "')");
|
|
|
|
var activeCallFrame = WI.debuggerManager.activeCallFrame;
|
|
var scopeChain = activeCallFrame.scopeChain;
|
|
var scopeTypes = [];
|
|
var scopeTypeIndex = 0;
|
|
var globalScopeCount = 0;
|
|
|
|
for (var scope of scopeChain) {
|
|
scopeTypes.push(scope.type);
|
|
if (scope.type !== WI.ScopeChainNode.Type.Global) {
|
|
scope.objects[0].getPropertyDescriptors(function(properties) {
|
|
InspectorTest.log(scopeTypes[scopeTypeIndex++] + " properties:");
|
|
for (var propertyDescriptor of properties)
|
|
InspectorTest.log(" " + propertyDescriptor.name);
|
|
|
|
if (scopeTypeIndex == scopeTypes.length - 1)
|
|
InspectorTest.log(scopeTypes[scopeTypeIndex] + " (properties not listed)");
|
|
});
|
|
} else
|
|
globalScopeCount++;
|
|
}
|
|
|
|
if (globalScopeCount != 1)
|
|
InspectorTest.log("Error: too many " + WI.ScopeChainNode.Type.Global + " scopes");
|
|
|
|
WI.debuggerManager.resume();
|
|
});
|
|
|
|
WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.Resumed, function(event) {
|
|
runNextTest();
|
|
});
|
|
|
|
WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.ScriptAdded, function(event) {
|
|
eventScriptObject = event.data.script;
|
|
|
|
if (/scope\.js$/.test(eventScriptObject.url)) {
|
|
scriptObject = eventScriptObject;
|
|
startTest();
|
|
return;
|
|
}
|
|
|
|
});
|
|
|
|
InspectorTest.reloadPage();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Testing that we can access scope in various functions.</p>
|
|
</body>
|
|
</html>
|