blob: e7c3e42b7a13ed5a834ac0382e50e3f47b0fbb84 [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 event listener breakpoints.\n`);
await TestRunner.loadModule('sources_test_runner');
await TestRunner.showPanel('sources');
await TestRunner.loadHTML(`
<input type="button" id="test">
`);
await TestRunner.evaluateInPagePromise(`
function testElementClicked()
{
return 0;
}
function addListenerAndClick()
{
var element = document.getElementById("test");
element.addEventListener("click", testElementClicked, true);
element.click();
}
`);
SourcesTestRunner.startDebuggerTest(start);
function start() {
SourcesTestRunner.setEventListenerBreakpoint('listener:click', true);
SourcesTestRunner.waitUntilPaused(paused);
TestRunner.evaluateInPageWithTimeout('addListenerAndClick()');
}
function paused(callFrames, reason, breakpointIds, asyncStackTrace, auxData) {
printEventTargetName(auxData);
SourcesTestRunner.resumeExecution(suspendAll);
}
function suspendAll() {
TestRunner.addResult('Suspend all targets');
SDK.targetManager.suspendAllTargets();
TestRunner.deprecatedRunAfterPendingDispatches(resumeAll);
}
function resumeAll() {
TestRunner.addResult('Resume all targets');
SDK.targetManager.resumeAllTargets();
SourcesTestRunner.waitUntilPaused(finish);
TestRunner.evaluateInPageWithTimeout('addListenerAndClick()');
}
function finish() {
TestRunner.addResult('Successfully paused after suspension and resuming all targets');
SourcesTestRunner.completeDebuggerTest();
}
function printEventTargetName(auxData) {
var targetName = auxData && auxData.targetName;
if (targetName)
TestRunner.addResult('Event target: ' + targetName);
else
TestRunner.addResult('FAIL: No event target name received!');
}
})();