| // 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(); |
| } |
| })(); |