blob: 3910f4b8a22132a8e56eb6d3e42f805888a000d9 [file] [log] [blame]
// Copyright 2018 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(`The test verifies that DevTools events work.\n`);
var object = new Common.Object();
var eventSymbol = Symbol('Event');
addListener('original listener');
dispatch('first event');
addListener('second listener');
dispatch('second event');
removeListener('second listener');
dispatch('third event');
TestRunner.addResult('Adding a listener that removes a later listener')
object.addEventListener(eventSymbol, event => {
TestRunner.addResult(`removing the listener during the event: ${event.data} `);
removeListener('later listener to be removed');
});
addListener('later listener to be removed')
dispatch('fourth event');
TestRunner.completeTest();
function eventListener(event) {
TestRunner.addResult(`Heard event with the data '${event.data}' and this '${this}'`);
}
function dispatch(data) {
TestRunner.addResult(`Dispatching event with the data '${data}'`);
object.dispatchEventToListeners(eventSymbol, data);
TestRunner.addResult('');
}
function addListener(thisValue) {
TestRunner.addResult(`Adding a listener with this '${thisValue}'`);
object.addEventListener(eventSymbol, eventListener, thisValue);
}
function removeListener(thisValue) {
TestRunner.addResult(`Removing a listener with this '${thisValue}'`);
object.removeEventListener(eventSymbol, eventListener, thisValue);
}
})();