| <!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, |
| [ { keyId: keyId, status: 'usable' } ]); |
| return mediaKeySession.remove(); |
| }).then(function() { |
| // After remove() all keys should be 'released'. |
| verifyKeyStatuses(mediaKeySession.keyStatuses, |
| [ { keyId: keyId, status: '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, []); |
| }); |
| |
| }, 'Test MediaKeySession remove() function on temporary sessions'); |
| </script> |
| </body> |
| </html> |