OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <title>setMediaKeys() multiple times with different MediaKeys.</title> | 4 <title>setMediaKeys() multiple times with different MediaKeys.</title> |
5 <script src="encrypted-media-utils.js"></script> | 5 <script src="encrypted-media-utils.js"></script> |
6 <script src="../../resources/testharness.js"></script> | 6 <script src="../../resources/testharness.js"></script> |
7 <script src="../../resources/testharnessreport.js"></script> | 7 <script src="../../resources/testharnessreport.js"></script> |
8 </head> | 8 </head> |
9 <body> | 9 <body> |
10 <video id="video"></video> | 10 <video id="video"></video> |
11 <div id="log"></div> | 11 <div id="log"></div> |
12 <script> | 12 <script> |
13 promise_test(function(test) | 13 promise_test(function(test) |
14 { | 14 { |
15 var video = document.getElementById('video'); | 15 var video = document.getElementById('video'); |
| 16 var content = '../content/test-encrypted.webm'; |
16 var keySystemAccess; | 17 var keySystemAccess; |
17 var mediaKeys1; | 18 var mediaKeys1; |
18 var mediaKeys2; | 19 var mediaKeys2; |
19 | 20 |
20 assert_equals(video.mediaKeys, null); | 21 assert_equals(video.mediaKeys, null); |
21 | 22 |
22 return navigator.requestMediaKeySystemAccess('org.w3.clearkey',
[{}]).then(function(access) { | 23 return navigator.requestMediaKeySystemAccess('org.w3.clearkey',
getConfigurationForFile(content)).then(function(access) { |
23 keySystemAccess = access; | 24 keySystemAccess = access; |
24 // Create a mediaKeys. | 25 // Create a mediaKeys. |
25 return keySystemAccess.createMediaKeys(); | 26 return keySystemAccess.createMediaKeys(); |
26 }).then(function(result) { | 27 }).then(function(result) { |
27 mediaKeys1 = result; | 28 mediaKeys1 = result; |
28 assert_not_equals(mediaKeys1, null); | 29 assert_not_equals(mediaKeys1, null); |
29 // Create a second mediaKeys. | 30 // Create a second mediaKeys. |
30 return keySystemAccess.createMediaKeys(); | 31 return keySystemAccess.createMediaKeys(); |
31 }).then(function(result) { | 32 }).then(function(result) { |
32 mediaKeys2 = result; | 33 mediaKeys2 = result; |
33 assert_not_equals(mediaKeys2, null); | 34 assert_not_equals(mediaKeys2, null); |
34 // Set mediaKeys1 on video. | 35 // Set mediaKeys1 on video. |
35 return video.setMediaKeys(mediaKeys1); | 36 return video.setMediaKeys(mediaKeys1); |
36 }).then(function() { | 37 }).then(function() { |
37 assert_true(video.mediaKeys === mediaKeys1); | 38 assert_true(video.mediaKeys === mediaKeys1); |
38 // Set mediaKeys2 on video (switching MediaKeys). | 39 // Set mediaKeys2 on video (switching MediaKeys). |
39 return video.setMediaKeys(mediaKeys2); | 40 return video.setMediaKeys(mediaKeys2); |
40 }).then(function() { | 41 }).then(function() { |
41 assert_true(video.mediaKeys === mediaKeys2); | 42 assert_true(video.mediaKeys === mediaKeys2); |
42 // Clear mediaKeys from video. | 43 // Clear mediaKeys from video. |
43 return video.setMediaKeys(null); | 44 return video.setMediaKeys(null); |
44 }).then(function() { | 45 }).then(function() { |
45 assert_equals(video.mediaKeys, null); | 46 assert_equals(video.mediaKeys, null); |
46 // Set mediaKeys1 on video again. | 47 // Set mediaKeys1 on video again. |
47 return video.setMediaKeys(mediaKeys1); | 48 return video.setMediaKeys(mediaKeys1); |
48 }).then(function() { | 49 }).then(function() { |
49 assert_true(video.mediaKeys === mediaKeys1); | 50 assert_true(video.mediaKeys === mediaKeys1); |
50 // Load the media element to create the WebMediaPlayer. | 51 // Load the media element to create the WebMediaPlayer. |
51 video.src = '../content/test-encrypted.webm'; | 52 video.src = content; |
52 // Set mediaKeys2 on video (switching MediaKeys) not | 53 // Set mediaKeys2 on video (switching MediaKeys) not |
53 // supported after WebMediaPlayer is created. | 54 // supported after WebMediaPlayer is created. |
54 return video.setMediaKeys(mediaKeys2); | 55 return video.setMediaKeys(mediaKeys2); |
55 }).then(function() { | 56 }).then(function() { |
56 assert_unreached('Switching mediaKeys after setting src shou
ld have failed.'); | 57 assert_unreached('Switching mediaKeys after setting src shou
ld have failed.'); |
57 }, function(error) { | 58 }, function(error) { |
58 assert_true(video.mediaKeys === mediaKeys1); | 59 assert_true(video.mediaKeys === mediaKeys1); |
59 assert_equals(error.name, 'InvalidStateError'); | 60 assert_equals(error.name, 'InvalidStateError'); |
60 assert_not_equals(error.message, ''); | 61 assert_not_equals(error.message, ''); |
61 // Return something so the promise resolves properly. | 62 // Return something so the promise resolves properly. |
62 return Promise.resolve(); | 63 return Promise.resolve(); |
63 }).then(function() { | 64 }).then(function() { |
64 // Set null mediaKeys on video (clearing MediaKeys) not | 65 // Set null mediaKeys on video (clearing MediaKeys) not |
65 // supported after WebMediaPlayer is created. | 66 // supported after WebMediaPlayer is created. |
66 return video.setMediaKeys(null); | 67 return video.setMediaKeys(null); |
67 }).then(function() { | 68 }).then(function() { |
68 assert_unreached('Clearing mediaKeys after setting src shoul
d have failed.'); | 69 assert_unreached('Clearing mediaKeys after setting src shoul
d have failed.'); |
69 }, function(error) { | 70 }, function(error) { |
70 assert_true(video.mediaKeys === mediaKeys1); | 71 assert_true(video.mediaKeys === mediaKeys1); |
71 assert_equals(error.name, 'InvalidStateError'); | 72 assert_equals(error.name, 'InvalidStateError'); |
72 assert_not_equals(error.message, ''); | 73 assert_not_equals(error.message, ''); |
73 return Promise.resolve(); | 74 return Promise.resolve(); |
74 }); | 75 }); |
75 }, 'setMediaKeys() multiple times with different MediaKeys.'); | 76 }, 'setMediaKeys() multiple times with different MediaKeys.'); |
76 </script> | 77 </script> |
77 </body> | 78 </body> |
78 </html> | 79 </html> |
OLD | NEW |