| <!doctype html> |
| <html> |
| <head> |
| <script type="text/javascript" src="../http/tests/inspector/inspector-test.js"></script> |
| <script> |
| function test() |
| { |
| const KaboomEvent = "kaboom"; |
| var emitter = new WebInspector.Object(); |
| var context = new WebInspector.Object(); |
| var data = [1, 2, 3]; |
| |
| function kaboomCallback(event) { |
| InspectorTest.assert(this === context, "Callback invoked with wrong |this| binding."); |
| InspectorTest.assert(event.target === emitter, "Callback invoked with wrong event emitter."); |
| InspectorTest.assert(event.data === data, "Callback invoked with wrong event data."); |
| |
| InspectorTest.log("Invoked callback for kaboom event."); |
| } |
| |
| // Test for multiple firings of the listener. |
| |
| var listener = new WebInspector.EventListener(context); |
| InspectorTest.assert(!emitter.hasEventListeners(KaboomEvent), "Emitter should not have any listeners."); |
| emitter.dispatchEventToListeners(KaboomEvent, data); // Should not fire anything. |
| |
| InspectorTest.log("Connecting the listener."); |
| listener.connect(emitter, KaboomEvent, kaboomCallback); |
| InspectorTest.assert(emitter.hasEventListeners(KaboomEvent), "Emitter should have a listener."); |
| emitter.dispatchEventToListeners(KaboomEvent, data); // Should fire. |
| emitter.dispatchEventToListeners(KaboomEvent, data); // Should fire. |
| InspectorTest.log("Disconnecting the listener."); |
| listener.disconnect(); |
| |
| emitter.dispatchEventToListeners(KaboomEvent, data); // Should not fire anything. |
| InspectorTest.assert(!emitter.hasEventListeners(KaboomEvent), "Emitter should not have any listeners."); |
| |
| // Test reconnection. |
| |
| InspectorTest.log("Connecting the listener."); |
| listener.connect(emitter, KaboomEvent, kaboomCallback); |
| emitter.dispatchEventToListeners(KaboomEvent, data); // Should fire. |
| InspectorTest.log("Disconnecting the listener."); |
| listener.disconnect(); |
| |
| // Test unused listener. |
| |
| InspectorTest.log("Connecting the listener."); |
| listener.connect(emitter, KaboomEvent, kaboomCallback); |
| InspectorTest.log("Disconnecting the listener."); |
| listener.disconnect(); |
| |
| // Test for single firing of the listener. |
| |
| var singleListener = new WebInspector.EventListener(context, true); |
| InspectorTest.assert(!emitter.hasEventListeners(KaboomEvent), "Emitter should not have any listeners."); |
| emitter.dispatchEventToListeners(KaboomEvent, data); // Should not fire anything. |
| |
| InspectorTest.log("Connecting the single-fire listener."); |
| singleListener.connect(emitter, KaboomEvent, kaboomCallback); |
| InspectorTest.assert(emitter.hasEventListeners(KaboomEvent), "Emitter should have a listener."); |
| emitter.dispatchEventToListeners(KaboomEvent, data); // Should fire. |
| InspectorTest.assert(!emitter.hasEventListeners(KaboomEvent), "Emitter should not have any listeners."); |
| emitter.dispatchEventToListeners(KaboomEvent, data); // Should not fire. |
| InspectorTest.log("Disconnecting the single-fire listener."); |
| singleListener.disconnect(); // Should cause an error. |
| emitter.dispatchEventToListeners(KaboomEvent, data); // Should not fire. |
| |
| // Test for various error cases and abuse. |
| |
| var badListener = new WebInspector.EventListener(context); |
| badListener.connect(data, data, data); // Should complain about non-callable callback. |
| badListener.connect(null, KaboomEvent, kaboomCallback); // Should complain about non-callable callback. |
| badListener.connect(emitter, KaboomEvent, null); // Should complain about non-callable callback. |
| badListener.connect(emitter, null, kaboomCallback); // Should complain about null event. |
| |
| var badListener2 = new WebInspector.EventListener(context); |
| badListener2.disconnect(); // Should complain about already disconnected. |
| badListener2.connect(emitter, KaboomEvent, kaboomCallback); |
| badListener2.connect(emitter, KaboomEvent, kaboomCallback); // Should complain about already connected. |
| emitter.dispatchEventToListeners(KaboomEvent, data); // Should fire. |
| badListener2.connect(emitter, KaboomEvent, kaboomCallback); // Should complain about already connected. |
| badListener2.disconnect(); |
| badListener2.disconnect(); // Should complain about already disconnected. |
| |
| InspectorTest.completeTest(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Testing basic functionality of WebInspector.EventListener.</p> |
| </body> |
| </html> |