| <html> |
| <head> |
| <script src="../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| description('Tests that adding a new event listener from a callback works as expected.'); |
| |
| var firedEvent = {value: 2.2, min: 1.1, max: 3.3}; |
| |
| var deviceProximityEvent; |
| function checkProximity(event) { |
| deviceProximityEvent = event; |
| shouldBe('deviceProximityEvent.value', 'firedEvent.value'); |
| shouldBe('deviceProximityEvent.min', 'firedEvent.min'); |
| shouldBe('deviceProximityEvent.max', 'firedEvent.max'); |
| } |
| |
| var firstListenerEvents = 0; |
| function firstListener(event) { |
| checkProximity(event); |
| if (++firstListenerEvents == 1) { |
| window.addEventListener('webkitdeviceproximity', secondListener); |
| internals.setDeviceProximity('webkitdeviceproximity', firedEvent.value, firedEvent.min, firedEvent.max); |
| } |
| else if (firstListenerEvents > 2) |
| testFailed('Too many events for first listener.'); |
| maybeFinishTest(); |
| } |
| |
| var secondListenerEvents = 0; |
| function secondListener(event) { |
| checkProximity(event); |
| if (++secondListenerEvents > 1) |
| testFailed('Too many events for second listener.'); |
| maybeFinishTest(); |
| } |
| |
| function maybeFinishTest() { |
| if (firstListenerEvents == 2 && secondListenerEvents == 1) |
| finishJSTest(); |
| } |
| |
| window.addEventListener('webkitdeviceproximity', firstListener); |
| internals.setDeviceProximity('webkitdeviceproximity', firedEvent.value, firedEvent.min, firedEvent.max); |
| window.jsTestIsAsync = true; |
| </script> |
| <script src="../resources/js-test-post.js"></script> |
| </body> |
| </html> |