xrSession_enabledFeatures.https.html (2693B)
1 <!DOCTYPE html> 2 <body> 3 <script src=/resources/testharness.js></script> 4 <script src=/resources/testharnessreport.js></script> 5 <script src="resources/webxr_util.js"></script> 6 <script src="resources/webxr_test_constants.js"></script> 7 <canvas></canvas> 8 <script> 9 10 const testName = "Validate enabledFeatures on XRSession"; 11 12 const supportedFeatureList = [ 13 'viewer', 14 'local', 15 'local-floor', 16 'anchors', 17 'hit-test', 18 'dom-overlay' 19 ]; 20 21 const fakeDeviceInitParams = { 22 supportsImmersive: true, 23 supportedModes: ["inline", "immersive-vr"], 24 views: VALID_VIEWS, 25 viewerOrigin: IDENTITY_TRANSFORM, 26 supportedFeatures: supportedFeatureList 27 }; 28 29 // NOTE: We explicit don't ask for the 'default' features of viewer/local to 30 // verify that they are being added here. 31 const requestFeatures = [ 32 'local-floor', 33 'anchors', 34 'secondary-views', 35 'camera-access', 36 ]; 37 38 const testFunction = function(session, fakeDeviceController, t) { 39 return new Promise((resolve,reject) => { 40 const unsupportedRequestedFeatures = []; 41 42 for (const feature of requestFeatures) { 43 if (!supportedFeatureList.includes(feature)) 44 unsupportedRequestedFeatures.push(feature); 45 } 46 47 const enabledFeatures = session.enabledFeatures; 48 const modeDefaultFeatures = DEFAULT_FEATURES[session.mode]; 49 50 t.step(() => { 51 // Whether they were requested or not, all Default features should be 52 // enabled. 53 for (const feature of modeDefaultFeatures) { 54 assert_true(enabledFeatures.includes(feature), 55 "Did not support default feature: " + feature); 56 } 57 58 // Assert that we asked for everything that was included apart from the 59 // default features 60 for (const feature of enabledFeatures) { 61 assert_true(requestFeatures.includes(feature) || 62 modeDefaultFeatures.includes(feature), 63 "Enabled unrequested feature: " + feature); 64 } 65 66 // Assert that all of the features we asked are either excluded because 67 // they were unsupported, or included because they were supported. 68 for (const feature of requestFeatures) { 69 if (unsupportedRequestedFeatures.includes(feature)) { 70 assert_false(enabledFeatures.includes(feature), 71 "Enabled supposedly unsupported feature: " + feature); 72 } else { 73 assert_true(enabledFeatures.includes(feature), 74 "Did not enable supposedly supported feature: " + feature); 75 } 76 } 77 }); 78 79 resolve(); 80 }); 81 }; 82 83 xr_session_promise_test(testName, testFunction, 84 fakeDeviceInitParams, 'immersive-vr', { optionalFeatures: requestFeatures }); 85 86 </script> 87 </body>