| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>Media Capture Depth Dictionary Test</title> |
| <link rel="author" title="Intel" href="http://www.intel.com"> |
| <link rel="help" href="https://w3c.github.io/mediacapture-depth/#extensions"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="dictionary-helper.js"></script> |
| <meta name="flags" content="interact"> |
| |
| <h2>Preconditions</h2> |
| <ol> |
| <li> |
| Use a test device with depth camera(embedded or external). |
| </li> |
| <li> |
| When prompted, accept to share your depth/color(RGB) stream. |
| </li> |
| </ol> |
| |
| <div id="log"></div> |
| |
| <script> |
| |
| let advanced_constraints_depth = [{ |
| videoKind: "depth", |
| }]; |
| |
| let advanced_constraints_color = [{ |
| videoKind: "color", |
| }]; |
| |
| function validateMediaTrackCapabilities(capabilities, type) { |
| assert_string_field(capabilities, 'videoKind'); |
| } |
| |
| |
| function validateMediaTrackConstraintSet(constraints, type) { |
| assert_constrain_string_field(constraints, 'videoKind'); |
| } |
| |
| function validateMediaTrackSettings(settings, type) { |
| assert_string_field(settings, 'videoKind'); |
| assert_enum_field(settings, 'videoKind', ['color', 'depth']) |
| } |
| |
| function validateMediaTrackSupportedConstraints(supports) { |
| assert_boolean_field(supports, 'videoKind', true); |
| } |
| |
| function runDictionaryTests(type, constraints) { |
| promise_test(t => { |
| return navigator.mediaDevices.getUserMedia({video: {advanced: constraints}}) |
| .then(stream => { |
| let capabilities = stream.getTracks()[0].getCapabilities(); |
| validateMediaTrackCapabilities(capabilities, type); |
| }); |
| }, `MediaTrackCapabilities dictionary of ${type} include attributes are correct`); |
| |
| promise_test(t => { |
| return navigator.mediaDevices.getUserMedia({video: {advanced: constraints}}) |
| .then(stream => { |
| let constraints = stream.getTracks()[0].getConstraints()["advanced"][0]; |
| validateMediaTrackConstraintSet(constraints); |
| }); |
| }, `MediaTrackConstraintSet dictionary of ${type} include attributes are correct`); |
| |
| promise_test(t => { |
| return navigator.mediaDevices.getUserMedia({video: {advanced: constraints}}) |
| .then(stream => { |
| let settings = stream.getTracks()[0].getSettings(); |
| validateMediaTrackSettings(settings, type); |
| }); |
| }, `MediaTrackSettings dictionary of ${type} include attributes are correct`); |
| } |
| |
| test(() => { |
| let supports = navigator.mediaDevices.getSupportedConstraints(); |
| validateMediaTrackSupportedConstraints(supports); |
| }, "MediaTrackSupportedConstraints dictionary include attributes are correct"); |
| |
| runDictionaryTests("depth", advanced_constraints_depth); |
| runDictionaryTests("color", advanced_constraints_color); |
| |
| </script> |