Index: third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-session-remove-temporary.html |
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-session-remove-temporary.html b/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-session-remove-temporary.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3ea6e78b7feb63daedda7a29ccbd6616e11ea5ba |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-session-remove-temporary.html |
@@ -0,0 +1,57 @@ |
+<!DOCTYPE html> |
+<html> |
+ <head> |
+ <title>Test MediaKeySession remove() function on temporary sessions</title> |
+ <script src="encrypted-media-utils.js"></script> |
+ <script src="../../resources/testharness.js"></script> |
+ <script src="../../resources/testharnessreport.js"></script> |
+ </head> |
+ <body> |
+ <script> |
+ promise_test(function(test) |
+ { |
+ var keyId = stringToUint8Array('0123456789012345'); |
+ var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, |
+ 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); |
+ |
+ var mediaKeySession; |
+ var waitForMessagePromise; |
+ |
+ return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfigurationForInitDataType('keyids')).then(function(access) { |
+ return access.createMediaKeys(); |
+ }).then(function(mediaKeys) { |
+ mediaKeySession = mediaKeys.createSession(); |
+ waitForMessagePromise = waitForSingleEvent(mediaKeySession, 'message', function(e, resolve, reject) { |
+ resolve(); |
+ }); |
+ const request = stringToUint8Array(createKeyIDs(keyId)); |
+ return mediaKeySession.generateRequest('keyids', request); |
+ }).then(function() { |
+ return waitForMessagePromise; |
+ }).then(function() { |
+ const jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, rawKey))); |
+ return mediaKeySession.update(jwkSet); |
+ }).then(function() { |
+ // After update() the session should have 1 usable key. |
+ verifyKeyStatuses(mediaKeySession.keyStatuses, |
+ { expected: [keyId], unexpected: [] }, 'usable'); |
+ return mediaKeySession.remove(); |
+ }).then(function() { |
+ // After remove() all keys should be 'released'. |
+ verifyKeyStatuses(mediaKeySession.keyStatuses, |
+ { expected: [keyId], unexpected: [] }, 'released'); |
+ // After remove() the session expiry should be NaN. |
+ // ClearKey doesn't change set expiry times, but check |
+ // anyway. |
+ assert_true(isNaN(mediaKeySession.expiration)); |
+ return mediaKeySession.close(); |
+ }).then(function() { |
+ // After close() there should be no keys. |
+ verifyKeyStatuses(mediaKeySession.keyStatuses, |
+ { expected: [], unexpected: [keyId] }); |
+ }); |
+ |
+ }, 'Test MediaKeySession remove() function on temporary sessions'); |
+ </script> |
+ </body> |
+</html> |