Commit 5df885c4 authored by Brandon Jones's avatar Brandon Jones Committed by Commit Bot

Changed XRHandedness enum to 'none' from empty string (reland)

Previous CL got reverted after a separate commit moved a script that the new
test was relying on.

Bug: 933411
Change-Id: I6ba8bce0ef72da44480bfc7b8464720e616a2111
TBR: klausw@chromium.org, bsheedy@chromium.org
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1506816Reviewed-by: default avatarBrandon Jones <bajones@chromium.org>
Commit-Queue: Brandon Jones <bajones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#638344}
parent cf22b4b5
...@@ -42,7 +42,7 @@ void XRInputSource::SetHandedness(Handedness handedness) { ...@@ -42,7 +42,7 @@ void XRInputSource::SetHandedness(Handedness handedness) {
switch (handedness_) { switch (handedness_) {
case kHandNone: case kHandNone:
handedness_string_ = ""; handedness_string_ = "none";
return; return;
case kHandLeft: case kHandLeft:
handedness_string_ = "left"; handedness_string_ = "left";
...@@ -50,6 +50,9 @@ void XRInputSource::SetHandedness(Handedness handedness) { ...@@ -50,6 +50,9 @@ void XRInputSource::SetHandedness(Handedness handedness) {
case kHandRight: case kHandRight:
handedness_string_ = "right"; handedness_string_ = "right";
return; return;
case kHandUninitialized:
NOTREACHED() << "Cannot set handedness to uninitialized";
return;
} }
NOTREACHED() << "Unknown handedness: " << handedness_; NOTREACHED() << "Unknown handedness: " << handedness_;
......
...@@ -19,7 +19,12 @@ class XRInputSource : public ScriptWrappable { ...@@ -19,7 +19,12 @@ class XRInputSource : public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO(); DEFINE_WRAPPERTYPEINFO();
public: public:
enum Handedness { kHandNone = 0, kHandLeft = 1, kHandRight = 2 }; enum Handedness {
kHandUninitialized = -1,
kHandNone = 0,
kHandLeft = 1,
kHandRight = 2
};
enum TargetRayMode { kGaze = 1, kTrackedPointer = 2, kScreen = 3 }; enum TargetRayMode { kGaze = 1, kTrackedPointer = 2, kScreen = 3 };
XRInputSource(XRSession*, uint32_t source_id); XRInputSource(XRSession*, uint32_t source_id);
...@@ -51,7 +56,7 @@ class XRInputSource : public ScriptWrappable { ...@@ -51,7 +56,7 @@ class XRInputSource : public ScriptWrappable {
const Member<XRSession> session_; const Member<XRSession> session_;
const uint32_t source_id_; const uint32_t source_id_;
Handedness handedness_; Handedness handedness_ = kHandUninitialized;
String handedness_string_; String handedness_string_;
TargetRayMode target_ray_mode_; TargetRayMode target_ray_mode_;
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
// found in the LICENSE file. // found in the LICENSE file.
enum XRHandedness { enum XRHandedness {
"none",
"left", "left",
"right" "right"
}; };
......
<!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/device/vr/public/mojom/vr_service.mojom.js"></script>
<script src="../external/wpt/resources/chromium/webxr-test.js"></script>
<script src="../external/wpt/webxr/resources/webxr_test_constants.js"></script>
<script src="../xr/resources/xr-internal-device-mocking.js"></script>
<script src="../xr/resources/xr-test-utils.js"></script>
<canvas id="webgl-canvas"></canvas>
<script>
let testName = "XRInputSources properly communicate their handedness";
let fakeDeviceInitParams = { supportsImmersive: true };
let requestSessionOptions = [{ mode: 'immersive-vr' }];
let testFunction =
(session, t, fakeDeviceController) => new Promise((resolve) => {
// Session must have a baseLayer or frame requests will be ignored.
session.updateRenderState({ baseLayer: new XRWebGLLayer(session, gl) });
// Need to have a valid pose or input events don't process.
fakeDeviceController.setXRPresentationFrameData(VALID_POSE_MATRIX, [{
eye:"left",
projectionMatrix: VALID_PROJECTION_MATRIX,
viewMatrix: VALID_VIEW_MATRIX
}, {
eye:"right",
projectionMatrix: VALID_PROJECTION_MATRIX,
viewMatrix: VALID_VIEW_MATRIX
}]);
let input_source = new MockXRInputSource();
input_source.targetRayMode = "tracked-pointer";
fakeDeviceController.addInputSource(input_source);
function CheckNone(time, xrFrame) {
let source = session.getInputSources()[0];
t.step( () => {
assert_not_equals(source, null);
// Handedness should be "none" by default.
assert_equals(source.handedness, "none");
});
input_source.handedness = "right"
session.requestAnimationFrame(CheckRight);
}
function CheckRight(time, xrFrame) {
let source = session.getInputSources()[0];
t.step( () => {
assert_not_equals(source, null);
// Handedness was set to "right", make sure it propegates.
assert_equals(source.handedness, "right");
});
input_source.handedness = "left";
session.requestAnimationFrame(CheckLeft);
}
function CheckLeft(time, xrFrame) {
let source = session.getInputSources()[0];
t.step( () => {
assert_not_equals(source, null);
// Handedness was set to "left", make sure it propegates.
assert_equals(source.handedness, "left");
});
input_source.handedness = "none";
session.requestAnimationFrame(CheckNoneAgain);
}
function CheckNoneAgain(time, xrFrame) {
let source = session.getInputSources()[0];
t.step( () => {
assert_not_equals(source, null);
// Handedness was set to "none" again, make sure it propegates.
assert_equals(source.handedness, "none");
});
resolve();
}
// Handedness only updates during an XR frame.
session.requestAnimationFrame(CheckNone);
});
xr_session_promise_test(
testFunction, fakeDeviceInitParams, requestSessionOptions, testName);
</script>
...@@ -65,7 +65,7 @@ let testFunction = (session, t, fakeDeviceController) => new Promise((resolve) = ...@@ -65,7 +65,7 @@ let testFunction = (session, t, fakeDeviceController) => new Promise((resolve) =
t.step( () => { t.step( () => {
assert_equals(input_sources.length, 2); assert_equals(input_sources.length, 2);
assert_equals(input_sources[1].targetRayMode, "gaze"); assert_equals(input_sources[1].targetRayMode, "gaze");
assert_equals(input_sources[1].handedness, ""); assert_equals(input_sources[1].handedness, "none");
}); });
fakeDeviceController.removeInputSource(input_source_1); fakeDeviceController.removeInputSource(input_source_1);
...@@ -76,7 +76,7 @@ let testFunction = (session, t, fakeDeviceController) => new Promise((resolve) = ...@@ -76,7 +76,7 @@ let testFunction = (session, t, fakeDeviceController) => new Promise((resolve) =
t.step( () => { t.step( () => {
assert_equals(input_sources.length, 1); assert_equals(input_sources.length, 1);
assert_equals(input_sources[0].targetRayMode, "gaze"); assert_equals(input_sources[0].targetRayMode, "gaze");
assert_equals(input_sources[0].handedness, ""); assert_equals(input_sources[0].handedness, "none");
}); });
resolve(); resolve();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment