| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> |
| <script src="file:///gen/services/device/public/interfaces/sensor_provider.mojom.js"></script> |
| <script src="resources/sensor-helpers.js"></script> |
| <script src="resources/generic-sensor-tests.js"></script> |
| <script> |
| |
| 'use strict'; |
| |
| if (!window.testRunner) |
| debug('This test cannot be run without the TestRunner'); |
| |
| const kDefaultReading = [1.12345, 2.12345, 3.12345]; |
| const kMappedReading = [-2.12345, 1.12345, 3.12345]; |
| |
| function update_sensor_reading(buffer) { |
| buffer.set(kDefaultReading, 2); |
| } |
| |
| function verify_sensor_reading(buffer, {x, y, z, timestamp}, is_null) { |
| if (is_null) |
| return [x, y, z, timestamp].every(r => r === null); |
| return [x, y, z].every((r, i) => r === buffer[i]) && timestamp !== null; |
| } |
| |
| const verify_device_reading = verify_sensor_reading.bind(null, kDefaultReading); |
| const verify_screen_reading = verify_sensor_reading.bind(null, kMappedReading); |
| |
| async function checkReadingMappedToScreen(sensor, sensorType) { |
| let sensor1 = new sensorType(); |
| sensor1.start(); |
| |
| let sensor2 = new sensorType({referenceFrame: "screen"}); |
| sensor2.start(); |
| |
| let mockSensor = await sensor.mockSensorProvider.getCreatedSensor(); |
| await mockSensor.setUpdateSensorReadingFunction(update_sensor_reading); |
| await new Promise((resolve, reject) => { |
| let wrapper = new CallbackWrapper(() => { |
| assert_true(verify_device_reading(sensor1)); |
| assert_true(verify_screen_reading(sensor2)); |
| |
| sensor1.stop(); |
| assert_true(verify_device_reading(sensor1, true /*should be null*/)); |
| assert_true(verify_screen_reading(sensor2)); |
| |
| sensor2.stop(); |
| assert_true(verify_screen_reading(sensor2, true /*should be null*/)); |
| |
| resolve(mockSensor); |
| }, reject); |
| |
| sensor1.onreading = wrapper.callback; |
| sensor1.onerror = reject; |
| sensor2.onerror = reject; |
| }); |
| return mockSensor.removeConfigurationCalled(); |
| } |
| |
| runGenericSensorTests(Accelerometer, |
| update_sensor_reading, |
| verify_device_reading, |
| ['accelerometer']); |
| |
| sensor_test(sensor => { |
| return checkReadingMappedToScreen(sensor, Accelerometer); |
| }, `Accelerometer: Test reading mapped to the screen coordinates.`); |
| |
| runGenericSensorTests(LinearAccelerationSensor, |
| update_sensor_reading, |
| verify_device_reading, |
| ['accelerometer']); |
| |
| sensor_test(sensor => { |
| return checkReadingMappedToScreen(sensor, LinearAccelerationSensor); |
| }, `LinearAccelerationSensor: Test reading mapped to the screen coordinates.`); |
| |
| </script> |