<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=402089 --> <head> <title>Test for Bug 742376</title> <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=742376">Mozilla Bug 742376</a> <script class="testbody" type="text/javascript"> /** Test for Bug 742376 **/ function hasListeners() { var Cc = SpecialPowers.Cc; var Ci = SpecialPowers.Ci; var dss = Cc["@mozilla.org/devicesensors;1"].getService(Ci.nsIDeviceSensors); return dss.hasWindowListener(Ci.nsIDeviceSensorData.TYPE_ORIENTATION, window) || dss.hasWindowListener(Ci.nsIDeviceSensorData.TYPE_ROTATION_VECTOR, window) || dss.hasWindowListener(Ci.nsIDeviceSensorData.TYPE_GAME_ROTATION_VECTOR, window); } is(hasListeners(), false, "Must not have listeners before tests start"); function dumbListener(event) {} function dumbListener2(event) {} function dumbListener3(event) {} window.addEventListener("deviceorientation", dumbListener, false); window.addEventListener("random_event_name", function() {}, false); window.addEventListener("deviceorientation", dumbListener2, false); is(hasListeners(), true, "Listeners should have been added"); window.setTimeout(function() { window.removeEventListener("deviceorientation", dumbListener, false); is(hasListeners(), true, "Only some listeners should have been removed"); window.setTimeout(function() { window.removeEventListener("deviceorientation", dumbListener2, false); window.setTimeout(function() { is(hasListeners(), false, "Listeners should have been removed"); testEventHandler(); }, 0); }, 0); }, 0); function testEventHandler() { window.ondeviceorientation = function() {} window.setTimeout(function() { is(hasListeners(), true, "Handler should have been added"); window.ondeviceorientation = null; window.setTimeout(function() { is(hasListeners(), false, "Handler should have been removed"); SimpleTest.finish(); }, 0); }, 0) } SimpleTest.waitForExplicitFinish(); </script> </pre> </body> </html>