Index: LayoutTests/media/encrypted-media/encrypted-media-v2-syntax.html |
diff --git a/LayoutTests/media/encrypted-media/encrypted-media-v2-syntax.html b/LayoutTests/media/encrypted-media/encrypted-media-v2-syntax.html |
index dd2085ffd5143b2e86b5ca4e3ff56ce8b36dda3d..ec4ac878d6da4b46886a4a906a914156f2fb841b 100644 |
--- a/LayoutTests/media/encrypted-media/encrypted-media-v2-syntax.html |
+++ b/LayoutTests/media/encrypted-media/encrypted-media-v2-syntax.html |
@@ -589,6 +589,78 @@ |
}); |
}, 'Test MediaKeySession release().'); |
+ var kSetServerCertificateExceptionsTestCases = [ |
+ // Too few parameters. |
+ { |
+ exception: 'TypeError', |
+ func: function(mk) { return mk.setServerCertificate(); } |
+ }, |
+ // Invalid parameters. |
+ { |
+ exception: 'TypeError', |
+ func: function(mk) { return mk.setServerCertificate(''); } |
+ }, |
+ { |
+ exception: 'TypeError', |
+ func: function(mk) { return mk.setServerCertificate(null); } |
+ }, |
+ { |
+ exception: 'TypeError', |
+ func: function(mk) { return mk.setServerCertificate(undefined); } |
+ }, |
+ { |
+ exception: 'TypeError', |
+ func: function(mk) { return mk.setServerCertificate(1); } |
+ }, |
+ // Empty array. |
+ { |
+ exception: 'InvalidAccessError', |
+ func: function(mk) { return mk.setServerCertificate(new Uint8Array(0)); } |
+ } |
+ ]; |
+ |
+ async_test(function(test) |
+ { |
+ MediaKeys.create('org.w3.clearkey').then(function(mediaKeys) { |
+ var promises = kSetServerCertificateExceptionsTestCases.map(function(testCase) { |
+ return test_exception(testCase, mediaKeys); |
+ }); |
+ |
+ assert_not_equals(promises.length, 0); |
+ return Promise.all(promises); |
+ }).then(function(result) { |
+ test.done(); |
+ }).catch(function(error) { |
+ forceTestFailureFromPromise(test, error, 'setServerCertificate() exception tests failed'); |
+ }); |
+ }, 'Test MediaKeys setServerCertificate() exceptions.'); |
+ |
+ async_test(function(test) |
+ { |
+ var mediaKeys; |
+ var certificate1 = new Uint8Array(200); |
+ MediaKeys.create('org.w3.clearkey').then(function(result) { |
+ mediaKeys = result; |
+ // TypedArrays are ArrayBufferViews. |
+ assert_true(ArrayBuffer.isView(certificate1)); |
+ return mediaKeys.setServerCertificate(certificate1); |
+ }).then(function() { |
+ // Create a subarray (which is also a ArrayBufferView). |
+ var certificate2 = certificate1.subarray(10, 190); |
+ assert_true(ArrayBuffer.isView(certificate2)); |
+ return mediaKeys.setServerCertificate(certificate2); |
+ }).then(function() { |
+ // Access the actual ArrayBuffer. |
+ var certificate3 = certificate1.buffer; |
+ assert_false(ArrayBuffer.isView(certificate3)); |
+ return mediaKeys.setServerCertificate(certificate3); |
+ }).then(function() { |
+ test.done(); |
+ }).catch(function(error) { |
+ forceTestFailureFromPromise(test, error, 'setServerCertificate() tests failed'); |
+ }); |
+ }, 'Test MediaKeys setServerCertificate().'); |
+ |
// FIXME: Add syntax checks for MediaKeys.IsTypeSupported(). |
// FIXME: Add syntax checks for MediaKeyError and MediaKeySession events. |
// FIXME: Add HTMLMediaElement syntax checks, e.g. setMediaKeys, mediakeys, onneedkey. |