| Index: third_party/WebKit/LayoutTests/external/wpt/media-capabilities/query.html
|
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/media-capabilities/query.html b/third_party/WebKit/LayoutTests/external/wpt/media-capabilities/query.html
|
| index 809fbc66ec5c46b69d6bd656c6860a6dcc0de99d..f1bd22ba1ae3f7c97e205a60a2d76dcdc08d3b32 100644
|
| --- a/third_party/WebKit/LayoutTests/external/wpt/media-capabilities/query.html
|
| +++ b/third_party/WebKit/LayoutTests/external/wpt/media-capabilities/query.html
|
| @@ -4,6 +4,22 @@
|
| <script src="/resources/testharnessreport.js"></script>
|
| <script>
|
|
|
| +// Minimal VideoConfiguration that will be allowed per spec. All optional
|
| +// properties are missing.
|
| +var minimalVideoConfiguration = {
|
| + contentType: 'video/webm; codecs="vp9"',
|
| + width: 800,
|
| + height: 600,
|
| + bitrate: 3000,
|
| + framerate: 24,
|
| +};
|
| +
|
| +// Minimal AudioConfiguration that will be allowed per spec. All optional
|
| +// properties are missing.
|
| +var minimalAudioConfiguration = {
|
| + contentType: 'audio/webm; codecs="opus"',
|
| +};
|
| +
|
| promise_test(t => {
|
| return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.query());
|
| }, "Test that query rejects if it doesn't get a configuration");
|
| @@ -13,18 +29,17 @@ promise_test(t => {
|
| }, "Test that query rejects if the MediaConfiguration isn't valid");
|
|
|
| promise_test(t => {
|
| + return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.query({
|
| + video: minimalVideoConfiguration,
|
| + audio: minimalAudioConfiguration,
|
| + }));
|
| +}, "Test that query rejects if the MediaConfiguration does not have a type");
|
| +
|
| +promise_test(t => {
|
| return navigator.mediaCapabilities.query({
|
| type: 'file',
|
| - video: {
|
| - type: 'video/webm',
|
| - width: 800,
|
| - height: 600,
|
| - bitrate: 3000,
|
| - framerate: 24,
|
| - },
|
| - audio: {
|
| - type: 'audio/webm',
|
| - },
|
| + video: minimalVideoConfiguration,
|
| + audio: minimalAudioConfiguration,
|
| }).then(ability => {
|
| assert_idl_attribute(ability, 'supported');
|
| assert_idl_attribute(ability, 'smooth');
|
| @@ -32,4 +47,39 @@ promise_test(t => {
|
| });
|
| }, "Test that query returns a valid MediaDecodingAbility objects");
|
|
|
| +async_test(t => {
|
| + var validTypes = [ 'file', 'media-source' ];
|
| + var invalidTypes = [ undefined, null, '', 'foobar', 'mse', 'MediaSource' ];
|
| +
|
| + var validPromises = [];
|
| + var invalidCaught = 0;
|
| +
|
| + validTypes.forEach(type => {
|
| + validPromises.push(navigator.mediaCapabilities.query({
|
| + type: type,
|
| + video: minimalVideoConfiguration,
|
| + audio: minimalAudioConfiguration,
|
| + }));
|
| + });
|
| +
|
| + // validTypes are tested via Promise.all(validPromises) because if one of the
|
| + // promises fail, Promise.all() will reject. This mechanism can't be used for
|
| + // invalid types which will be tested individually and increment invalidCaught
|
| + // when rejected until the amount of rejection matches the expectation.
|
| + Promise.all(validPromises).then(t.step_func(() => {
|
| + for (var i = 0; i < invalidTypes.length; ++i) {
|
| + navigator.mediaCapabilities.query({
|
| + type: invalidTypes[i],
|
| + video: minimalVideoConfiguration,
|
| + audio: minimalAudioConfiguration,
|
| + }).then(t.unreached_func(), t.step_func(e => {
|
| + assert_equals(e.name, 'TypeError');
|
| + ++invalidCaught;
|
| + if (invalidCaught == invalidTypes.length)
|
| + t.done();
|
| + }));
|
| + }
|
| + }), t.unreached_func('Promise.all should not reject for valid types'));
|
| +}, "Test that query rejects if the MediaConfiguration does not have a valid type");
|
| +
|
| </script>
|
|
|