Skip to content

Commit

Permalink
sensors: Read Euler angles instead of quaternions from WebDriver
Browse files Browse the repository at this point in the history
As a result of w3c/deviceorientation#124 and
w3c/orientation-sensor#83.

The reading format is alpha-beta-gamma as described in the spec. They
are measured in degrees and must fall within certain ranges. Internally,
however, we always perform the Euler angles to quaternions conversion at
the edges (i.e. in ChromeDriver and the Internals implementation used by
content_shell), so that the the CDP and //services layers remain
unchanged and continue to support only quaternions and the
{ABSOLUTE,RELATIVE}_ORIENTATION_QUATERNION types for simplicity.

The code to convert Euler angles to quaternions was copied from
SensorInspectorAgent in Blink and is available for use by any callers
that need to validate Euler angles and convert them. The original code
remains in place because the entirety of the SensorInspectorAgent will
be removed soon due to the work on bug 1506995.

The test values for the orientation-sensor web tests had to be adapted:
we now provide the inputs as Euler angles. The expected values have
changed slightly as we had to find Euler _and_ quaternion values that
were easy enough to read.

Written in collaboration with Juha Vainio <juha.j.vainio@intel.com>

Bug: 1506995, 1520912, 1520919
Change-Id: I047f41f172f0bbcf30c7462926cec7ae0a66d4e5
  • Loading branch information
rakuco authored and chromium-wpt-export-bot committed Jan 23, 2024
1 parent 75a3cea commit 7a06a42
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions orientation-sensor/resources/sensor-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,13 @@ const kRelativeOrientationSensorData = {
};

const kOrientationReadings = {
readings: [{quaternion: [1, 0, 0, 0]}],
expectedReadings: [{quaternion: [1, 0, 0, 0]}],
expectedRemappedReadings: [{quaternion: [-0.70710678, 0.70710678, 0, 0]}]
// WebDriver input data must be given in Euler angles according to
// https://w3c.github.io/deviceorientation/#parse-orientation-data-reading-algorithm
// and converted to quaternions via
// https://w3c.github.io/orientation-sensor/#create-a-quaternion-from-euler-angles.
readings: [{alpha: 0, beta: -180, gamma: 0}],
expectedReadings: [{quaternion: [-1, 0, 0, 0]}],
expectedRemappedReadings: [{quaternion: [0.70710678, -0.70710678, 0, 0]}]
};

const kRotationMatrix = [1, 0, 0, 0,
Expand Down

0 comments on commit 7a06a42

Please sign in to comment.