blob: e5b0d9c8b718e1b256eaef678226b6270e71b319 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script src="resources/log-pause-location.js"></script>
<script>
let internalObject = { test: function() {} };
if (window.internals) {
internalObject = window.internals.evaluateInWorldIgnoringException("testPauseForInternalScripts", `
//# sourceURL=__InjectedScript_TestPauseForInternalScripts.js
let InternalObject = class InternalObject {
test(invocationNumber) {
let a = 6;
let b = 7;
let answer = a * b;
}
};
new InternalObject;
`);
}
function entryInternalObject() {
debugger;
internalObject.test(1);
internalObject.test(2);
internalObject.test(3);
}
// ---------
function test()
{
let suite = InspectorTest.createAsyncSuite("Debugger.setPauseForInternalScripts");
window.initializeSteppingTestSuite(suite);
addSteppingTestCase({
name: "Debugger.setPauseForInternalScripts.Disabled",
description: "Should not be able to step into statements which use internal injected scripts.",
expression: "setTimeout(entryInternalObject)",
// Call out directly to the backend since there is no other way to wait on the command result if changing via the setting.
setup: async () => { return DebuggerAgent.setPauseForInternalScripts(false); },
steps: [
"over",
"in", // internalObject.test(1)
"in", // internalObject.test(2)
"in", // internalObject.test(3)
"resume",
]
});
addSteppingTestCase({
name: "Debugger.setPauseForInternalScripts.Enabled",
description: "Should be able to step into statements which use internal injected scripts.",
expression: "setTimeout(entryInternalObject)",
// Call out directly to the backend since there is no other way to wait on the command result if changing via the setting.
setup: async () => { return DebuggerAgent.setPauseForInternalScripts(true); },
teardown: async () => { return DebuggerAgent.setPauseForInternalScripts(false); },
steps: [
"over",
"in", // internalObject.test(1)
"in", // [Somewhere inside internalObject.test(1)]
"in", // [Somewhere inside internalObject.test(1)]
"resume",
]
});
loadMainPageContent().then(() => {
suite.runTestCasesAndFinish();
});
}
</script>
</head>
<body onload="runTest()">
<p>Checking whether injected (internal) scripts can be stepped into or not, depending on the value of WI.settings.pauseForInternalScripts.</p>
</body>
</html>