blob: 1d4ef52bbbdd676e1f0d4a05cf5e6b31c4fa7051 [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>
`);
await TestRunner.addScriptTag('resources/jquery-2.1.4.min.js');
await TestRunner.evaluateInPagePromise(`
function setupEventListeners()
{
var node = $("#node")[0];
$("#node").click(function(){ console.log("first jquery"); });
$("#node").click(function(){ console.log("second jquery"); });
node.addEventListener("click", function() { console.log("addEventListener"); });
node.onclick = function() { console.log("onclick"); }
}
setupEventListeners();
`);
Common.settingForTest('showEventListenersForAncestors').set(true);
ElementsTestRunner.selectNodeWithId('node', step1);
function step1() {
ElementsTestRunner.showEventListenersWidget();
ElementsTestRunner.expandAndDumpSelectedElementEventListeners(step2);
}
function step2() {
TestRunner.addResult('Remove listeners..');
var eventListenersWidget = ElementsTestRunner.eventListenersWidget();
var listenerTypes = eventListenersWidget._eventListenersView._treeOutline.rootElement().children();
var promises = [];
for (var i in listenerTypes) {
var listenersItems = listenerTypes[i].children();
for (var j in listenersItems)
promises.push(listenersItems[j].eventListener().remove());
}
ElementsTestRunner.expandAndDumpSelectedElementEventListeners(TestRunner.completeTest.bind(this));
Promise.all(promises).then(() => eventListenersWidget.doUpdate());
}
})();