Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(485)

Unified Diff: third_party/WebKit/LayoutTests/external/wpt/media-capabilities/query.html

Issue 2706093002: Media Capabilities: update Blink implementation and WPT to match latest spec changes. (Closed)
Patch Set: update MANIFEST.json Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698