| <!doctype html> |
| <html> |
| <head> |
| <script type="text/javascript" src="../http/tests/inspector/inspector-test.js"></script> |
| <script> |
| function test() |
| { |
| const FooEvent = "foo"; |
| const BarEvent = "bar"; |
| const BazEvent = "baz"; |
| var emitter1 = new WebInspector.Object(); |
| var emitter2 = new WebInspector.Object(); |
| var context1 = new WebInspector.Object(); |
| var context2 = new WebInspector.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 WebInspector.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("Unintalling 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 WebInspector.EventListenerSet.</p> |
| </body> |
| </html> |