| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Test MediaKeySession.update() fails after close()</title> |
| <script src="encrypted-media-utils.js"></script> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <script> |
| // This test verifies that calls on MediaKeySession fail after |
| // close() has been called. For simplicity we'll just call update() |
| // after close(), and expect it to fail. |
| |
| promise_test(() => { |
| var initDataType; |
| var initData; |
| var mediaKeySession; |
| |
| return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then((access) => { |
| initDataType = access.getConfiguration().initDataTypes[0]; |
| initData = getInitData(initDataType); |
| return access.createMediaKeys(); |
| }).then((mediaKeys) => { |
| mediaKeySession = mediaKeys.createSession(); |
| return mediaKeySession.generateRequest(initDataType, initData); |
| }).then(() => { |
| var p1 = mediaKeySession.close(); |
| // Update() first checks for closing or closed and returns |
| // InvalidStateError if true. Later it checks for empty |
| // array and returns TypeError if true. So pass empty array |
| // to verify that closing is checked first. |
| var p2 = mediaKeySession.update(new Uint8Array([])).then( |
| () => { assert_unreached('Update() resolved unexpectedly'); }, |
| (error) => { assert_equals(error.name, 'InvalidStateError'); } ); |
| return Promise.all([p1, p2]); |
| }); |
| }, 'Test calls fail after MediaKeySession.close().'); |
| </script> |
| </body> |
| </html> |