| <html> |
| <head> |
| <title>DeviceOrientation test</title> |
| <script type="text/javascript"> |
| let eventTimeoutId; // To be set in start(). |
| |
| function checkOrientationEvent(event) { |
| // Return true iff the orientation is close enough to (1, 2, 3). |
| return Math.abs(event.alpha - 1) < 0.01 && |
| Math.abs(event.beta - 2) < 0.01 && |
| Math.abs(event.gamma - 3) < 0.01 && |
| event.absolute == false; |
| } |
| |
| function onOrientation(event) { |
| if (checkOrientationEvent(event)) { |
| window.removeEventListener('deviceorientation', onOrientation); |
| window.clearTimeout(eventTimeoutId); |
| pass(); |
| } else { |
| fail(); |
| } |
| } |
| |
| function pass() { |
| document.getElementById('status').innerHTML = 'PASS'; |
| document.location = '#pass'; |
| } |
| |
| function fail() { |
| document.location = '#fail'; |
| } |
| |
| function failOnTimeoutIfNeeded() { |
| let params = new URLSearchParams(location.search); |
| let timeout = Number(params.get("failure_timeout")); |
| if (timeout > 0) |
| eventTimeoutId = window.setTimeout(fail, timeout); |
| } |
| |
| function start() { |
| window.addEventListener('deviceorientation', onOrientation); |
| failOnTimeoutIfNeeded(); |
| } |
| </script> |
| </head> |
| <body onLoad="start()"> |
| <div id="status">FAIL</div> |
| </body> |
| </html> |