diff options
Diffstat (limited to 'testing/web-platform/tests/generic-sensor/resources/iframe_sensor_handler.html')
-rw-r--r-- | testing/web-platform/tests/generic-sensor/resources/iframe_sensor_handler.html | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/testing/web-platform/tests/generic-sensor/resources/iframe_sensor_handler.html b/testing/web-platform/tests/generic-sensor/resources/iframe_sensor_handler.html new file mode 100644 index 0000000000..4528c57a6b --- /dev/null +++ b/testing/web-platform/tests/generic-sensor/resources/iframe_sensor_handler.html @@ -0,0 +1,63 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>iframe sensor tester</title> +<script src="/generic-sensor/resources/generic-sensor-helpers.js"></script> +<script> + let mockBackend = null; + let sensor = null; + let sensorType = null; + + async function messageHandler(e) { + if (e.data.command === 'create_sensor') { + if (!sensor) { + mockBackend = await initialize_generic_sensor_tests(); + sensor = new self[e.data.type](); + sensorType = e.data.type; + } + + return Promise.resolve('success'); + } else if (e.data.command === 'start_sensor') { + if (!sensor) { + return Promise.reject('"create_sensor" must be called first'); + } + + return new Promise((resolve, reject) => { + sensor.addEventListener('reading', () => { + resolve('success'); + }, { once: true }); + sensor.addEventListener('error', e => { + reject(`${e.error.name}: ${e.error.message}`); + }, { once: true }); + sensor.start(); + }); + } else if (e.data.command === 'is_sensor_suspended') { + if (!mockBackend) { + return Promise.reject('"create_sensor" must be called first'); + } + + const mockPlatformSensor = await mockBackend.getSensorProvider().getCreatedSensor(sensorType); + return Promise.resolve(!mockPlatformSensor.isReadingData()); + } else if (e.data.command === 'reset_sensor_backend') { + if (sensor) { + sensor.stop(); + await mockBackend.reset(); + + sensor = null; + mockBackend = null; + } + return Promise.resolve('success'); + } else { + return Promise.reject(`unknown command "${e.data.command}"`); + } + } + + window.onmessage = async (e) => { + let reply; + try { + reply = await messageHandler(e); + } catch (error) { + reply = error; + } + e.source.postMessage({ command: e.data.command, result: reply }, '*'); + } +</script> |