blob: 1c02f8cd4102a59324cf603ae72a322e49ea27bb [file] [log] [blame]
<!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>