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

Unified Diff: LayoutTests/media/encrypted-media/encrypted-media-v2-syntax.html

Issue 568033003: Implement MediaKeySession close() and remove() (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: rebase Created 6 years, 2 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: 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 bfd68685e6bd458883505cd0d270946d5406c2da..50e06dc56b841301a78e9c59a7b56608730dfc45 100644
--- a/LayoutTests/media/encrypted-media/encrypted-media-v2-syntax.html
+++ b/LayoutTests/media/encrypted-media/encrypted-media-v2-syntax.html
@@ -378,7 +378,8 @@
assert_equals(typeof mediaKeySession.addEventListener, 'function');
assert_equals(typeof mediaKeySession.generateRequest, 'function');
assert_equals(typeof mediaKeySession.update, 'function');
- assert_equals(typeof mediaKeySession.release, 'function');
+ assert_equals(typeof mediaKeySession.close, 'function');
+ assert_equals(typeof mediaKeySession.remove, 'function');
assert_equals(mediaKeySession.error, null);
assert_equals(mediaKeySession.sessionId, '');
assert_equals(typeof mediaKeySession.sessionId, 'string');
@@ -553,16 +554,50 @@
});
}, 'Test MediaKeySession update().');
- function create_release_test(mediaKeys, type, initData)
+ function create_close_exception_test(mediaKeys, type, initData)
+ {
+ var mediaKeySession = mediaKeys.createSession();
+ return mediaKeySession.close().then(function(result) {
+ assert_unreached('close() should not succeed if session uninitialized');
+ }).catch(function(error) {
+ assert_equals(error.name, 'InvalidStateError');
+ // Return something so the promise resolves.
+ return Promise.resolve();
+ });
+ }
+
+ async_test(function(test)
+ {
+ MediaKeys.create('org.w3.clearkey').then(function(mediaKeys) {
+ var promises = [];
+
+ if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/webm')) {
+ promises.push(create_close_exception_test(mediaKeys, 'webm', getInitData('webm')));
+ }
+
+ if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/mp4')) {
+ promises.push(create_close_exception_test(mediaKeys, 'cenc', getInitData('cenc')));
+ }
+
+ assert_not_equals(promises.length, 0);
+ return Promise.all(promises);
+ }).then(function(result) {
+ test.done();
+ }).catch(function(error) {
+ forceTestFailureFromPromise(test, error, 'close() exception tests failed');
+ });
+ }, 'Test MediaKeySession close() exceptions.');
+
+
+ function create_close_test(mediaKeys, type, initData)
{
var mediaKeySession = mediaKeys.createSession();
var promise = mediaKeySession.generateRequest(type, initData).then(function(result) {
- return mediaKeySession.release();
- // FIXME: Uncomment once the code supports multiple release() calls.
-// }).then(function(result) {
-// // Call release() again with an extra parameter. The extra
-// // parameter is ignored.
-// return mediaKeySession.release('extra');
+ return mediaKeySession.close();
+ }).then(function(result) {
+ // Call close() again with an extra parameter. The extra
+ // parameter is ignored.
+ return mediaKeySession.close('extra');
});
return promise;
}
@@ -573,11 +608,106 @@
var promises = [];
if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/webm')) {
- promises.push(create_release_test(mediaKeys, 'webm', getInitData('webm')));
+ promises.push(create_close_test(mediaKeys, 'webm', getInitData('webm')));
+ }
+
+ if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/mp4')) {
+ promises.push(create_close_test(mediaKeys, 'cenc', getInitData('cenc')));
+ }
+
+ assert_not_equals(promises.length, 0);
+ return Promise.all(promises);
+ }).then(function(result) {
+ test.done();
+ }).catch(function(error) {
+ forceTestFailureFromPromise(test, error, 'close() tests failed');
+ });
+ }, 'Test MediaKeySession close().');
+
+ function create_remove_exception_test(mediaKeys, type, initData)
+ {
+ // remove() on an uninitialized session should fail.
+ var mediaKeySession = mediaKeys.createSession('temporary');
+ return mediaKeySession.remove().then(function(result) {
+ assert_unreached('remove() should not succeed if session uninitialized');
+ }).catch(function(error) {
+ assert_equals(error.name, 'InvalidStateError');
+
+ // remove() on a temporary session should fail.
+ return mediaKeySession.generateRequest(type, initData);
+ }).then(function(result) {
+ return mediaKeySession.remove();
+ }).then(function(result) {
+ assert_unreached('remove() should not succeed for temporary sessions');
+ }).catch(function(error) {
+ assert_equals(error.name, 'InvalidAccessError');
+
+ // remove() on a closed persistent session should also fail.
+ mediaKeySession = mediaKeys.createSession('persistent');
+ return mediaKeySession.generateRequest(type, initData);
+ }).then(function(result) {
+ return mediaKeySession.close();
+ }).then(function(result) {
+ return mediaKeySession.remove();
+ }).then(function(result) {
+ assert_unreached('remove() should not succeed for closed persistent sessions');
+ }).catch(function(error) {
+ assert_equals(error.name, 'InvalidStateError');
+
+ // Return something so the promise resolves.
+ return Promise.resolve();
+ });
+ }
+
+ async_test(function(test)
+ {
+ MediaKeys.create('org.w3.clearkey').then(function(mediaKeys) {
+ var promises = [];
+
+ if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/webm')) {
+ promises.push(create_remove_exception_test(mediaKeys, 'webm', getInitData('webm')));
+ }
+
+ if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/mp4')) {
+ promises.push(create_remove_exception_test(mediaKeys, 'cenc', getInitData('cenc')));
+ }
+
+ assert_not_equals(promises.length, 0);
+ return Promise.all(promises);
+ }).then(function(result) {
+ test.done();
+ }).catch(function(error) {
+ forceTestFailureFromPromise(test, error, 'remove() exception tests failed');
+ });
+ }, 'Test MediaKeySession remove() exceptions.');
+
+ function create_remove_test(mediaKeys, type, initData)
+ {
+ // ClearKey may not support persistent sessions.
+ var mediaKeySession;
+ try {
+ mediaKeySession = mediaKeys.createSession('persistent');
+ } catch (error) {
+ // Not supported, so return a resolved promise.
+ assert_equals(error.name, 'NotSupportedError');
+ return Promise.resolve();
+ }
+ return mediaKeySession.generateRequest(type, initData).then(function(result) {
+ return mediaKeySession.remove();
+ });
+ }
+
+ async_test(function(test)
+ {
+ MediaKeys.create('org.w3.clearkey').then(function(mediaKeys) {
+ var promises = [];
+
+ if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/webm')) {
+ promises.push(create_remove_test(mediaKeys, 'webm', getInitData('webm')));
}
if (MediaKeys.isTypeSupported('org.w3.clearkey', 'video/mp4')) {
- promises.push(create_release_test(mediaKeys, 'cenc', getInitData('cenc')));
+ promises.push(create_remove_test(mediaKeys, 'cenc', getInitData('cenc')));
}
assert_not_equals(promises.length, 0);
@@ -585,9 +715,9 @@
}).then(function(result) {
test.done();
}).catch(function(error) {
- forceTestFailureFromPromise(test, error, 'release() tests failed');
+ forceTestFailureFromPromise(test, error, 'remove() tests failed');
});
- }, 'Test MediaKeySession release().');
+ }, 'Test MediaKeySession remove().');
// FIXME: Add syntax checks for MediaKeys.IsTypeSupported().
// FIXME: Add syntax checks for MediaKeyError and MediaKeySession events.

Powered by Google App Engine
This is Rietveld 408576698