Bug 1631648 [wpt PR 23126] - WebXR - AR - adjust XRRay to match the spec, a=testonly
authorPiotr Bialecki <bialpio@chromium.org>
Tue, 28 Apr 2020 11:39:06 +0000
changeset 527592 32e3888c79b097fdd320539a1b9b1895f9cd03ff
parent 527591 ce9b1e876bbd4136f65d4ca89ee5586792dd2024
child 527593 caae255c9a1e5290d84d4d3eaebf2272200407fb
push id37368
push userbtara@mozilla.com
push dateFri, 01 May 2020 21:45:51 +0000
treeherdermozilla-central@0f9c5a59e45d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstestonly
bugs1631648, 23126
milestone77.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1631648 [wpt PR 23126] - WebXR - AR - adjust XRRay to match the spec, a=testonly Automatic update from web-platform-tests WebXR - AR - adjust XRRay to match the spec Bring XRRay up to spec, adjusting the behavior with changes introduced by PR: https://github.com/immersive-web/hit-test/pull/85 Additionally, fix Chrome's Web IDL to not rely on overloads. Change-Id: I98af1a4ed90dbeb8e311795e818efb64bb15034d -- wpt-commits: fd045759df43fa155b34a5e4fe4187610ad1bb24 wpt-pr: 23126
testing/web-platform/tests/webxr/hit-test/xrRay_constructor.https.html
--- a/testing/web-platform/tests/webxr/hit-test/xrRay_constructor.https.html
+++ b/testing/web-platform/tests/webxr/hit-test/xrRay_constructor.https.html
@@ -13,48 +13,56 @@ let constructor_tests = function() {
 
   //
   // Constructor 1 - from origin and direction
   //
 
   {
     // Check defaults - should be 0,0,0,1 for origin and 0,0,-1,0 for direction,
     // identity matrix for the transform:
-    let xrRay = new XRRay();
+    let xrRay1 = new XRRay();
+    let xrRay2 = new XRRay({});
+    let xrRay3 = new XRRay({}, {});
+
     assert_point_approx_equals(
-      xrRay.origin, {x : 0.0, y : 0.0, z : 0.0, w : 1.0},
+      xrRay1.origin, {x : 0.0, y : 0.0, z : 0.0, w : 1.0},
       FLOAT_EPSILON, "origin-default:");
     assert_point_approx_equals(
-      xrRay.direction, {x : 0.0, y : 0.0, z : -1.0, w : 0.0},
+      xrRay1.direction, {x : 0.0, y : 0.0, z : -1.0, w : 0.0},
       FLOAT_EPSILON, "direction-default:");
     assert_matrix_approx_equals(
-      xrRay.matrix, IDENTITY_MATRIX,
+      xrRay1.matrix, IDENTITY_MATRIX,
       FLOAT_EPSILON, "matrix-default:");
+
+    assert_ray_approx_equals(xrRay1, xrRay2, FLOAT_EPSILON, "ray1-ray2-default:");
+    assert_ray_approx_equals(xrRay2, xrRay3, FLOAT_EPSILON, "ray2-ray3-default:");
   }
 
   {
     // Check custom value for origin, default for direction:
     let originDict = {x : 11.0, y : 12.0, z : 13.0, w : 1.0};
+    let xrRay1 = new XRRay(originDict);
     let xrRay2 = new XRRay(DOMPoint.fromPoint(originDict));
     let xrRay3 = new XRRay(DOMPointReadOnly.fromPoint(originDict));
     let matrix1 = [ 1,  0,  0, 0,
                     0,  1,  0, 0,
                     0,  0,  1, 0,
                    11, 12, 13, 1];
 
     assert_point_approx_equals(
-      xrRay2.origin, originDict,
+      xrRay1.origin, originDict,
       FLOAT_EPSILON, "origin-custom-direction-default:");
     assert_point_approx_equals(
-      xrRay2.direction, {x : 0.0, y : 0.0, z : -1.0, w : 0.0},
+      xrRay1.direction, {x : 0.0, y : 0.0, z : -1.0, w : 0.0},
       FLOAT_EPSILON, "direction-custom-direction-default:");
     assert_matrix_approx_equals(
-      xrRay2.matrix, matrix1,
+      xrRay1.matrix, matrix1,
       FLOAT_EPSILON, "matrix-custom-direction-default:");
 
+    assert_ray_approx_equals(xrRay1, xrRay2, FLOAT_EPSILON, "ray1-ray2-direction-default:");
     assert_ray_approx_equals(xrRay2, xrRay3, FLOAT_EPSILON, "ray2-ray3-direction-default:");
   }
 
   {
     // Check custom values - ray rotated from -Z onto +X,
     // not placed at origin:
     // - from DOMPoint
     // - from DOMPointReadOnly
@@ -62,34 +70,39 @@ let constructor_tests = function() {
     let directionDict = {x : 10.0, y : 0.0, z : 0.0, w : 0.0};
     let directionNorm = {x :  1.0, y : 0.0, z : 0.0, w : 0.0};
     // column-major
     let matrix1 = [ 0,  0,  1,  0,
                     0,  1,  0,  0,
                    -1,  0,  0,  0,
                    10, 10, 10,  1];
 
+    let xrRay1 = new XRRay(
+      originDict,
+      directionDict);
+
     let xrRay2 = new XRRay(
       DOMPoint.fromPoint(originDict),
       DOMPoint.fromPoint(directionDict));
 
     let xrRay3 = new XRRay(
       DOMPointReadOnly.fromPoint(originDict),
       DOMPointReadOnly.fromPoint(directionDict));
 
     assert_point_approx_equals(
-      xrRay2.origin, originDict,
+      xrRay1.origin, originDict,
       FLOAT_EPSILON, "origin-custom:");
     assert_point_approx_equals(
-      xrRay2.direction, directionNorm,
+      xrRay1.direction, directionNorm,
       FLOAT_EPSILON, "direction-custom:");
     assert_matrix_approx_equals(
-      xrRay2.matrix, matrix1,
+      xrRay1.matrix, matrix1,
       FLOAT_EPSILON, "matrix-custom:");
 
+    assert_ray_approx_equals(xrRay1, xrRay2, FLOAT_EPSILON, "ray1-ray2:");
     assert_ray_approx_equals(xrRay2, xrRay3, FLOAT_EPSILON, "ray2-ray3:");
   }
 
   {
     // Check that we throw exception on direction too close to 0,0,0:
     let originDict = {x : 10.0, y : 10.0, z : 10.0, w : 1.0};
     let directionDict = {x : 1.0, y : 0.0, z : 0.0, w : 0.0};
 
@@ -103,43 +116,44 @@ let constructor_tests = function() {
         DOMPoint.fromPoint({x : 1.0, y : 0.0, z : 0.0, w : 0.5})
     ), "Constructor should throw for nonzero direction w coordinate");
 
     assert_throws_js(TypeError, () => new XRRay(
         DOMPoint.fromPoint({x : 10.0, y : 10.0, z : 10.0, w : 0.5}),
         DOMPoint.fromPoint(directionDict)
     ), "Constructor should throw for non-1 origin w coordinate");
   }
+
   //
   // Constructor 2 - from rigid transform.
   //
 
   {
     // Not placed at origin, ray rotated by 135 degrees around Y:
     let originDict = {x : 10.0, y : 10.0, z : 10.0, w : 1.0};
     let directionQuaternionDict = { x : 0, y : 0.9239, z : 0, w : 0.3827 };
     let directionNorm2 = { x : -0.707, y : 0.0, z : 0.707, w : 0.0 };
     let matrix2 = [-0.707,  0,  -0.707,   0,
                     0.,     1,   0,       0,
                     0.707,  0,  -0.707,   0,
                    10.,    10,  10.,      1];
 
-    let xrRay4 = new XRRay(
+    let xrRay = new XRRay(
       new XRRigidTransform(
         DOMPoint.fromPoint(originDict),
         DOMPoint.fromPoint(directionQuaternionDict)));
 
     assert_point_approx_equals(
-      xrRay4.origin, originDict,
+      xrRay.origin, originDict,
       FLOAT_EPSILON, "origin-custom-rigid:");
     assert_point_approx_equals(
-      xrRay4.direction, directionNorm2,
+      xrRay.direction, directionNorm2,
       FLOAT_EPSILON, "direction-custom-rigid:");
 
     assert_matrix_approx_equals(
-      xrRay4.matrix, matrix2,
+      xrRay.matrix, matrix2,
       FLOAT_EPSILON, "matrix-custom-rigid:");
   }
 };
 
 test(constructor_tests, constructor_test_name);
 
 </script>