michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: MARIONETTE_TIMEOUT = 10000; michael@0: michael@0: let receivedEvent = false; michael@0: let expectedEvent; michael@0: michael@0: function enableProximityListener() { michael@0: // Setup device proximity event listener, expect defaults michael@0: log("Enabling 'deviceproximity' event listener."); michael@0: michael@0: // Bug 814043: Device proximity event 'min' and 'max' attributes incorrect michael@0: // Until that is fixed, expect 1:0:1 instead of 1:0:0 michael@0: // expectedEvent = new DeviceProximityEvent("deviceproximity", michael@0: // {value:1, min:0, max:0}); michael@0: expectedEvent = new DeviceProximityEvent("deviceproximity", michael@0: {value:1, min:0, max:1}); michael@0: michael@0: window.addEventListener('deviceproximity', listener); michael@0: log("Waiting for device proximity event."); michael@0: waitFor(changeProximity, function() { michael@0: return(receivedEvent); michael@0: }); michael@0: } michael@0: michael@0: function listener(event) { michael@0: // Received proximity update michael@0: log("Received 'deviceproximity' event via listener (value:" michael@0: + event.value + " min:" + event.min + " max:" + event.max + ")."); michael@0: // Verify event values are as expected michael@0: is(event.value, expectedEvent.value, "value"); michael@0: is(event.min, expectedEvent.min, "min"); michael@0: is(event.max, expectedEvent.max, "max"); michael@0: receivedEvent = true; michael@0: } michael@0: michael@0: function changeProximity() { michael@0: // Change emulator's proximity and verify event attributes michael@0: let newValue = "7:3:15"; michael@0: michael@0: // Bug 814043: Device proximity event 'min' and 'max' attributes won't change michael@0: // Until fixed, expect proximity event min to be '0' and max to be '1' always michael@0: // expectedEvent = new DeviceProximityEvent("deviceproximity", michael@0: // {value: 7, min: 3, max: 15}); michael@0: expectedEvent = new DeviceProximityEvent("deviceproximity", michael@0: {value:7, min:0, max:1}); michael@0: michael@0: // Setup handler and verify 'ondeviceproximity' event michael@0: window.ondeviceproximity = function(event) { michael@0: log("Received 'ondeviceproximity' event via handler (value:" michael@0: + event.value + " min:" + event.min + " max:" michael@0: + event.max + ")."); michael@0: is(event.value, expectedEvent.value, "value"); michael@0: is(event.min, expectedEvent.min, "min"); michael@0: is(event.max, expectedEvent.max, "max"); michael@0: // Turn off event handler and listener michael@0: window.ondeviceproximity = null; michael@0: window.removeEventListener('deviceproximity', listener); michael@0: restoreProximity(); michael@0: }; michael@0: michael@0: log("Sending emulator command to fake proximity change (" + newValue + ")."); michael@0: runEmulatorCmd("sensor set proximity " + newValue, function(result) { michael@0: log("Emulator callback."); michael@0: }); michael@0: } michael@0: michael@0: function restoreProximity() { michael@0: // Set the emulator's proximity value back to original michael@0: newValue = "1:0:0"; michael@0: log("Sending emulator command to restore proximity (" + newValue + ")."); michael@0: runEmulatorCmd("sensor set proximity " + newValue, function(result) { michael@0: cleanUp(); michael@0: }); michael@0: } michael@0: michael@0: function cleanUp() { michael@0: finish(); michael@0: } michael@0: michael@0: // Start the test michael@0: enableProximityListener();