blob: bea5d230f557298806705e8fe8fcce904f2298ca [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(
`Tests that stepping into dispatchEvent() method will lead to a pause in the first event listener.\n`);
await TestRunner.loadModule('sources_test_runner');
await TestRunner.showPanel('sources');
await TestRunner.loadHTML(`
<div id="myDiv"></div>
`);
await TestRunner.evaluateInPagePromise(`
function testFunction()
{
var div = document.getElementById("myDiv");
function fooEventHandler1()
{
div.textContent += "Recieved foo event(1)!\\n";
}
div.addEventListener("foo", fooEventHandler1);
function fooEventHandler2()
{
div.textContent += "Recieved foo event(2)!\\n";
}
div.addEventListener("foo", fooEventHandler2);
var e = new CustomEvent("foo");
debugger;
div.dispatchEvent(e);
}
`);
SourcesTestRunner.startDebuggerTest(step1, true);
function step1() {
SourcesTestRunner.runTestFunctionAndWaitUntilPaused(step2);
}
function checkTopFrameFunction(callFrames, expectedName, reason) {
var topFunctionName = callFrames[0].functionName;
if (expectedName === topFunctionName)
TestRunner.addResult(
'SUCCESS: Did step into event listener(' + expectedName + ').');
else
TestRunner.addResult(
'FAIL: Unexpected top function: expected ' + expectedName +
', found ' + topFunctionName);
TestRunner.assertEquals(
SDK.DebuggerModel.BreakReason.Other, reason,
'FAIL: wrong pause reason: ' + reason);
}
var stepCount = 0;
function step2(callFrames, reason) {
if (stepCount === 2)
checkTopFrameFunction(callFrames, 'fooEventHandler1', reason);
else if (stepCount === 5)
checkTopFrameFunction(callFrames, 'fooEventHandler2', reason);
if (stepCount < 5) {
TestRunner.addResult('Stepping into...');
SourcesTestRunner.stepInto();
SourcesTestRunner.waitUntilResumed(
SourcesTestRunner.waitUntilPaused.bind(SourcesTestRunner, step2));
} else {
SourcesTestRunner.completeDebuggerTest();
}
stepCount++;
}
})();