blob: 80b9dce042ca41885cbe0623a0bb7cf0d65c7f2b [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 listeners output in the Elements sidebar panel.\n`);
await TestRunner.loadModule('elements_test_runner');
await TestRunner.showPanel('elements');
await TestRunner.loadHTML(`
<button id="node">Inspect Me</button>
<div id="node-without-listeners"></div>
`);
await TestRunner.evaluateInPagePromise(`
function documentClickHandler(event) { console.log("click - document - attribute"); }
function setupEventListeners()
{
function f() {}
var button = document.getElementById("node");
function clickHandler(event) { console.log("click - button - bubbling (registered before attribute)"); }
button.addEventListener("click", clickHandler, false);
button.addEventListener("hover", function hoverHandler(event) { console.log("hover - button - bubbling"); }, false);
button.addEventListener("click", function(event) { console.log("click - button - capturing"); }, true);
button.onclick = function(event) { console.log("click - button - attribute"); }
button.addEventListener("click", function(event) { console.log("click - button - bubbling (registered after attribute)"); }, false);
document.onclick = documentClickHandler;
document.addEventListener("click", function(event) { console.log("click - document - capturing"); }, true);
document.addEventListener("mousedown", f, false);
document.removeEventListener("mousedown", f, false);
document.body.addEventListener("custom event", f, {capture: true, once: true});
function ObjectHandler() { document.addEventListener("click", this, true); }
ObjectHandler.prototype.toString = function() { return "ObjectHandler"; }
new ObjectHandler();
function EventListenerImpl() { document.addEventListener("click", this, true); }
EventListenerImpl.prototype.toString = function() { return "EventListenerImpl"; }
EventListenerImpl.prototype.handleEvent = function() { console.log("click - document - handleEvent"); }
new EventListenerImpl();
document.body.addEventListener("wheel", f, {"passive": true});
document.body.addEventListener("wheel", f, {"passive": true, "capture": true});
document.body.removeEventListener("wheel", f, {"passive": true, "capture": true});
}
setupEventListeners();
`);
Common.settingForTest('showEventListenersForAncestors').set(true);
ElementsTestRunner.selectNodeWithId('node', step1);
function step1() {
ElementsTestRunner.expandAndDumpSelectedElementEventListeners(step2);
}
function step2() {
ElementsTestRunner.selectNodeWithId('node-without-listeners', step3);
}
function step3() {
Common.settingForTest('showEventListenersForAncestors').set(false);
TestRunner.addResult('Listeners for selected node only(should be no listeners):');
ElementsTestRunner.expandAndDumpSelectedElementEventListeners(step4);
}
function step4() {
TestRunner.completeTest();
}
})();