blob: db567bb6b4d0a98ba268e31fbfa2d3aef1690272 [file] [log] [blame]
<!doctype html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script>
function test()
{
const FooEvent = "foo";
const BarEvent = "bar";
const BazEvent = "baz";
var emitter1 = new WI.Object();
var emitter2 = new WI.Object();
var context1 = new WI.Object();
var context2 = new WI.Object();
var data1 = [1, 2, 3];
var data2 = [4, 6, 8];
function fooCallback(event)
{
InspectorTest.assert(this === context1, "Callback invoked with wrong |this| binding.");
InspectorTest.assert(event.target === emitter1, "Callback invoked with wrong event emitter.");
InspectorTest.assert(event.data === data1, "Callback invoked with wrong event data.");
InspectorTest.log("Invoked callback for foo event.");
}
function barCallback(event)
{
InspectorTest.assert(this === context1, "Callback invoked with wrong |this| binding.");
InspectorTest.assert(event.target === emitter1, "Callback invoked with wrong event emitter.");
InspectorTest.assert(event.data === data2, "Callback invoked with wrong event data.");
InspectorTest.log("Invoked callback for bar event.");
}
function bazCallback(event)
{
InspectorTest.assert(this === context2, "Callback invoked with wrong |this| binding.");
InspectorTest.assert(event.target === emitter2, "Callback invoked with wrong event emitter.");
InspectorTest.assert(event.data === data2, "Callback invoked with wrong event data.");
InspectorTest.log("Invoked callback for baz event.");
}
// Test for multiple firings of listeners in the set.
var listenerSet = new WI.EventListenerSet(context1);
InspectorTest.assert(!emitter1.hasEventListeners(FooEvent), "Emitter should not have any listeners.");
emitter1.dispatchEventToListeners(FooEvent, data1); // Should not fire anything.
InspectorTest.log("Registering listeners.");
listenerSet.register(emitter1, FooEvent, fooCallback);
listenerSet.register(emitter1, BarEvent, barCallback);
listenerSet.register(emitter2, BazEvent, bazCallback, context2);
InspectorTest.assert(!emitter1.hasEventListeners(FooEvent), "Emitter should not have a listener.");
InspectorTest.assert(!emitter1.hasEventListeners(BarEvent), "Emitter should not have a listener.");
InspectorTest.assert(!emitter2.hasEventListeners(BazEvent), "Emitter should not have a listener.");
InspectorTest.log("Installing listeners.");
listenerSet.install();
InspectorTest.assert(emitter1.hasEventListeners(FooEvent), "Emitter should have a listener.");
InspectorTest.assert(emitter1.hasEventListeners(BarEvent), "Emitter should have a listener.");
InspectorTest.assert(emitter2.hasEventListeners(BazEvent), "Emitter should have a listener.");
InspectorTest.log("Dispatching events.");
emitter1.dispatchEventToListeners(FooEvent, data1); // Should fire.
emitter1.dispatchEventToListeners(BarEvent, data2); // Should fire.
emitter2.dispatchEventToListeners(BazEvent, data2); // Should fire.
InspectorTest.log("Uninstalling and disconnecting listeners.");
listenerSet.uninstall(true);
InspectorTest.log("Registering listeners.");
listenerSet.register(emitter1, FooEvent, fooCallback);
listenerSet.register(emitter1, BarEvent, barCallback);
listenerSet.register(emitter2, BazEvent, bazCallback, context2);
listenerSet.install();
InspectorTest.log("Dispatching events.");
emitter1.dispatchEventToListeners(FooEvent, data1); // Should fire.
emitter1.dispatchEventToListeners(BarEvent, data2); // Should fire.
emitter2.dispatchEventToListeners(BazEvent, data2); // Should fire.
InspectorTest.log("Uninstalling listeners.");
listenerSet.uninstall();
InspectorTest.log("Installing listeners.");
listenerSet.install();
InspectorTest.log("Dispatching events.");
emitter1.dispatchEventToListeners(FooEvent, data1); // Should fire.
emitter1.dispatchEventToListeners(BarEvent, data2); // Should fire.
emitter2.dispatchEventToListeners(BazEvent, data2); // Should fire.
InspectorTest.log("Unregistering everything.");
listenerSet.unregister();
InspectorTest.log("Dispatching events.");
emitter1.dispatchEventToListeners(FooEvent, data1); // Should not fire.
emitter1.dispatchEventToListeners(BarEvent, data2); // Should not fire.
emitter2.dispatchEventToListeners(BazEvent, data2); // Should not fire.
InspectorTest.log("Uninstalling and disconnecting listeners.");
listenerSet.uninstall(true);
InspectorTest.log("Dispatching events.");
emitter1.dispatchEventToListeners(FooEvent, data1); // Should not fire.
emitter1.dispatchEventToListeners(BarEvent, data2); // Should not fire.
emitter2.dispatchEventToListeners(BazEvent, data2); // Should not fire.
InspectorTest.assert(!emitter1.hasEventListeners(FooEvent), "Emitter should not have a listener.");
InspectorTest.assert(!emitter1.hasEventListeners(BarEvent), "Emitter should not have a listener.");
InspectorTest.assert(!emitter2.hasEventListeners(BazEvent), "Emitter should not have a listener.");
InspectorTest.completeTest();
}
</script>
</head>
<body onload="runTest()">
<p>Testing basic functionality of WI.EventListenerSet.</p>
</body>
</html>