aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/wpt/web-platform-tests/resources/chromium/webxr-test.js')
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/webxr-test.js52
1 files changed, 49 insertions, 3 deletions
diff --git a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
index 19b207ff428..bb6b0c1be55 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js
@@ -116,7 +116,6 @@ class MockVRService {
if (index >= 0) {
this.runtimes_.splice(index, 1);
if (this.client_) {
- console.error("Notifying client");
this.client_.onDeviceChanged();
}
}
@@ -153,7 +152,7 @@ class MockVRService {
// If there were no successful results, returns a null session.
return {
result: {
- failureReason : device.mojom.RequestSessionResult.NO_RUNTIME_FOUND,
+ failureReason : device.mojom.RequestSessionError.NO_RUNTIME_FOUND,
$tag : 1
}
};
@@ -224,6 +223,9 @@ class MockRuntime {
this.setBoundsGeometry(fakeDeviceInit.boundsCoordinates);
this.setViews(fakeDeviceInit.views);
+
+ // Need to support webVR which doesn't have a notion of features
+ this.setFeatures(fakeDeviceInit.supportedFeatures || []);
}
// Test API methods.
@@ -421,6 +423,34 @@ class MockRuntime {
};
}
+ setFeatures(supportedFeatures) {
+ function convertFeatureToMojom(feature) {
+ switch (feature) {
+ case "viewer":
+ return device.mojom.XRSessionFeature.REF_SPACE_VIEWER;
+ case "local":
+ return device.mojom.XRSessionFeature.REF_SPACE_LOCAL;
+ case "local-floor":
+ return device.mojom.XRSessionFeature.REF_SPACE_LOCAL_FLOOR;
+ case "bounded-floor":
+ return device.mojom.XRSessionFeature.REF_SPACE_BOUNDED_FLOOR;
+ case "unbounded":
+ return device.mojom.XRSessionFeature.REF_SPACE_UNBOUNDED;
+ default:
+ return device.mojom.XRSessionFeature.INVALID;
+ }
+ }
+
+ this.supportedFeatures_ = [];
+
+ for (let i = 0; i < supportedFeatures.length; i++) {
+ let feature = convertFeatureToMojom(supportedFeatures[i]);
+ if (feature !== device.mojom.XRSessionFeature.INVALID) {
+ this.supportedFeatures_.push(feature);
+ }
+ }
+ }
+
// These methods are intended to be used by MockXRInputSource only.
addInputSource(source) {
let index = this.input_sources_.indexOf(source);
@@ -525,12 +555,28 @@ class MockRuntime {
let clientRequest = mojo.makeRequest(this.sessionClient_);
+ let enabled_features = [];
+ for(let i = 0; i < sessionOptions.requiredFeatures.length; i++) {
+ if (this.supportedFeatures_.indexOf(sessionOptions.requiredFeatures[i]) !== -1) {
+ enabled_features.push(sessionOptions.requiredFeatures[i]);
+ } else {
+ return Promise.resolve({session: null});
+ }
+ }
+
+ for (let i =0; i < sessionOptions.optionalFeatures.length; i++) {
+ if (this.supportedFeatures_.indexOf(sessionOptions.optionalFeatures[i]) !== -1) {
+ enabled_features.push(sessionOptions.optionalFeatures[i]);
+ }
+ }
+
return Promise.resolve({
session: {
submitFrameSink: submit_frame_sink,
dataProvider: dataProviderPtr,
clientRequest: clientRequest,
- displayInfo: this.displayInfo_
+ displayInfo: this.displayInfo_,
+ enabledFeatures: enabled_features,
}
});
} else {