OLD | NEW |
1 <!DOCTYPE HTML> | 1 <!DOCTYPE HTML> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script src="../../resources/testharness.js"></script> | 4 <script src="../../resources/testharness.js"></script> |
5 <script src="../../resources/testharnessreport.js"></script> | 5 <script src="../../resources/testharnessreport.js"></script> |
6 </head> | 6 </head> |
7 <body> | 7 <body> |
8 <script> | 8 <script> |
9 | 9 |
10 // Formatting of promises is done according to | 10 // Formatting of promises is done according to |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 assert_unreached('getUserMedia should have failed'); | 49 assert_unreached('getUserMedia should have failed'); |
50 }) | 50 }) |
51 .catch(function(e) { | 51 .catch(function(e) { |
52 assert_equals(e.name, 'Error'); | 52 assert_equals(e.name, 'Error'); |
53 }); | 53 }); |
54 }, 'getUserMedia() with empty constraints (neither mandatory nor optional) shoul
d fail with Error'); | 54 }, 'getUserMedia() with empty constraints (neither mandatory nor optional) shoul
d fail with Error'); |
55 | 55 |
56 // The following set of tests verify behavior when trying to use the | 56 // The following set of tests verify behavior when trying to use the |
57 // dictionary form of constraints. The behaviors currently expected are: | 57 // dictionary form of constraints. The behaviors currently expected are: |
58 // - Unknown names in dictionary: ignored - which means Error | 58 // - Unknown names in dictionary: ignored - which means Error |
59 // - Known names but illegal syntax for value: TypeError | 59 // - Known names and legal syntax for value: Error |
60 // - Known names and legal syntax for value: Error (no handler yet). | 60 // All constraints allow a primitive value (boolean, string or number), |
| 61 // and Javascript is capable of coercing just about anything into those values, |
| 62 // so we never get TypeError thrown here. |
| 63 // |
| 64 // Tests that the values are parsed and returned correctly are in |
| 65 // MediaStreamTrack-getConstraints.html. |
61 | 66 |
62 function check_constraints(name, constraints, expected_error) { | 67 function check_constraints(name, constraints, expected_error) { |
63 promise_test(function() { | 68 promise_test(function() { |
64 return navigator.mediaDevices.getUserMedia({'video': constraints}) | 69 return navigator.mediaDevices.getUserMedia({'video': constraints}) |
65 .then(function(s) { | 70 .then(function(s) { |
66 assert_unreached('getUserMedia should have failed'); | 71 assert_unreached('getUserMedia should have failed'); |
67 }) | 72 }) |
68 .catch(function(e) { | 73 .catch(function(e) { |
69 assert_equals(e.name, expected_error); | 74 assert_equals(e.name, expected_error); |
70 }); | 75 }); |
71 }, name); | 76 }, name); |
72 } | 77 } |
73 | 78 |
74 check_constraints( | 79 check_constraints( |
75 'Constraint with unsupported name gets ignored', | 80 'Constraint with unsupported name gets ignored', |
76 {'unsupported_name': 47}, 'Error'); | 81 {'unsupported_name': 47}, 'Error'); |
77 | 82 |
78 check_constraints( | 83 check_constraints( |
79 'Constraint with exact Long value should be parsed', | 84 'Constraint with exact Long value should be parsed', |
80 {'height': {exact: 47}}, 'Error'); | 85 {'height': {exact: 47}}, 'Error'); |
81 check_constraints( | 86 check_constraints( |
82 'Constraint with naked value should fail with TypeError (until supported)', | 87 'Constraint with Long naked value should be parsed', |
83 {height: 47}, 'TypeError'); | 88 {height: 47}, 'Error'); |
84 | 89 |
85 check_constraints( | 90 check_constraints( |
86 'Constraint with boolean value should be parsed', | 91 'Constraint with boolean value should be parsed', |
87 {'echoCancellation': {exact: true}}, 'Error'); | 92 {'echoCancellation': {exact: true}}, 'Error'); |
88 check_constraints( | 93 check_constraints( |
89 'Constraint with boolean value should fail on naked value (until supported)', | 94 'Constraint with boolean naked value should be parsed', |
90 {'echoCancellation': true}, 'TypeError'); | 95 {'echoCancellation': true}, 'Error'); |
91 | 96 |
92 check_constraints( | 97 check_constraints( |
93 'Constraint with string value should work on exact with array', | 98 'Constraint with string value should work on exact with array', |
94 {'facingMode': {exact: ['user']}}, 'Error'); | 99 {'facingMode': {exact: ['user']}}, 'Error'); |
| 100 |
95 check_constraints( | 101 check_constraints( |
96 'Constraint with exact string value should fail (until supported)', | 102 'Constraint with exact string value should work', |
97 {'facingMode': {exact: 'user'}}, 'TypeError'); | 103 {'facingMode': {exact: 'user'}}, 'Error'); |
| 104 |
98 check_constraints( | 105 check_constraints( |
99 'Constraint with naked string value should fail (until supported)', | 106 'Constraint with naked string value should be parsed', |
100 {'facingMode': 'user'}, 'TypeError'); | 107 {'facingMode': 'user'}, 'Error'); |
| 108 |
101 check_constraints( | 109 check_constraints( |
102 'Using both mandatory and height should give TypeError', | 110 'Using both mandatory and height should give TypeError', |
103 {'mandatory': {'height': '270'}, 'height': '270'}, 'TypeError'); | 111 {'mandatory': {'height': '270'}, 'height': '270'}, 'TypeError'); |
104 | 112 |
105 // Shows that the advanced element is not ignored. | |
106 check_constraints( | |
107 'Advanced constraints with illegal content gives TypeError', | |
108 {'advanced': [{'height': 270}]}, 'TypeError'); | |
109 | |
110 </script> | 113 </script> |
111 </body> | 114 </body> |
112 </html> | 115 </html> |
OLD | NEW |