mirror of
https://github.com/servo/servo
synced 2026-05-03 12:52:25 +02:00
81 lines
3.9 KiB
HTML
81 lines
3.9 KiB
HTML
<!DOCTYPE html>
|
|
<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
|
|
<html>
|
|
<head>
|
|
<title>setMediaKeys() multiple times with different MediaKeys.</title>
|
|
<script src="encrypted-media-utils.js"></script>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
</head>
|
|
<body>
|
|
<video id="video"></video>
|
|
<div id="log"></div>
|
|
<script>
|
|
promise_test(function(test)
|
|
{
|
|
var video = document.getElementById('video');
|
|
var content = 'webm/test-encrypted.webm';
|
|
var keySystemAccess;
|
|
var mediaKeys1;
|
|
var mediaKeys2;
|
|
|
|
assert_equals(video.mediaKeys, null);
|
|
|
|
return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) {
|
|
keySystemAccess = access;
|
|
// Create a mediaKeys.
|
|
return keySystemAccess.createMediaKeys();
|
|
}).then(function(result) {
|
|
mediaKeys1 = result;
|
|
assert_not_equals(mediaKeys1, null);
|
|
// Create a second mediaKeys.
|
|
return keySystemAccess.createMediaKeys();
|
|
}).then(function(result) {
|
|
mediaKeys2 = result;
|
|
assert_not_equals(mediaKeys2, null);
|
|
// Set mediaKeys1 on video.
|
|
return video.setMediaKeys(mediaKeys1);
|
|
}).then(function() {
|
|
assert_true(video.mediaKeys === mediaKeys1);
|
|
// Set mediaKeys2 on video (switching MediaKeys).
|
|
return video.setMediaKeys(mediaKeys2);
|
|
}).then(function() {
|
|
assert_true(video.mediaKeys === mediaKeys2);
|
|
// Clear mediaKeys from video.
|
|
return video.setMediaKeys(null);
|
|
}).then(function() {
|
|
assert_equals(video.mediaKeys, null);
|
|
// Set mediaKeys1 on video again.
|
|
return video.setMediaKeys(mediaKeys1);
|
|
}).then(function() {
|
|
assert_true(video.mediaKeys === mediaKeys1);
|
|
// Load the media element to create the WebMediaPlayer.
|
|
video.src = content;
|
|
// Set mediaKeys2 on video (switching MediaKeys) not
|
|
// supported after WebMediaPlayer is created.
|
|
return video.setMediaKeys(mediaKeys2);
|
|
}).then(function() {
|
|
assert_unreached('Switching mediaKeys after setting src should have failed.');
|
|
}, function(error) {
|
|
assert_true(video.mediaKeys === mediaKeys1);
|
|
assert_equals(error.name, 'InvalidStateError');
|
|
assert_not_equals(error.message, '');
|
|
// Return something so the promise resolves properly.
|
|
return Promise.resolve();
|
|
}).then(function() {
|
|
// Set null mediaKeys on video (clearing MediaKeys) not
|
|
// supported after WebMediaPlayer is created.
|
|
return video.setMediaKeys(null);
|
|
}).then(function() {
|
|
assert_unreached('Clearing mediaKeys after setting src should have failed.');
|
|
}, function(error) {
|
|
assert_true(video.mediaKeys === mediaKeys1);
|
|
assert_equals(error.name, 'InvalidStateError');
|
|
assert_not_equals(error.message, '');
|
|
return Promise.resolve();
|
|
});
|
|
}, 'setMediaKeys() multiple times with different MediaKeys.');
|
|
</script>
|
|
</body>
|
|
</html>
|