4 <title>MediaKeys</title>
5 <script src="encrypted-media-utils.js"></script>
6 <script src="../../resources/testharness.js"></script>
7 <script src="../../resources/testharnessreport.js"></script>
10 <video id="testVideo"></video>
12 <p>This tests setting MediaKeys on a video object.</p>
14 async_test(function(test)
18 var video = document.getElementById('testVideo');
19 assert_not_equals(video, null);
21 // Test MediaKeys assignment.
22 assert_equals(video.mediaKeys, null);
23 assert_equals(typeof video.setMediaKeys, 'function');
25 // Try setting mediaKeys to null.
26 video.setMediaKeys(null);
27 assert_equals(video.mediaKeys, null);
29 // Try setting mediaKeys to the wrong type of object.
30 assert_throws(new TypeError(),
31 function () { video.setMediaKeys(new Date()) });
33 // Create a MediaKeys object and assign it to video.
34 MediaKeys.create('org.w3.clearkey').then(function(result) {
36 assert_not_equals(mediaKeys, null);
37 assert_equals(mediaKeys.keySystem, 'org.w3.clearkey');
38 video.setMediaKeys(mediaKeys);
39 assert_not_equals(video.mediaKeys, null);
40 assert_true(video.mediaKeys === mediaKeys);
42 // Set it a second time.
43 video.setMediaKeys(mediaKeys);
44 assert_not_equals(video.mediaKeys, null);
45 assert_true(video.mediaKeys === mediaKeys);
47 // Create a second MediaKeys.
48 return MediaKeys.create('org.w3.clearkey');
49 }).then(function(result) {
51 assert_not_equals(mediaKeys, null);
52 assert_not_equals(mediaKeys2, null);
53 assert_not_equals(mediaKeys, mediaKeys2);
54 assert_equals(mediaKeys.keySystem, 'org.w3.clearkey');
55 assert_equals(mediaKeys2.keySystem, 'org.w3.clearkey');
57 // Assign the second MediaKeys to video.
58 video.setMediaKeys(mediaKeys2);
59 assert_not_equals(video.mediaKeys, null);
60 assert_not_equals(video.mediaKeys, mediaKeys);
61 assert_true(video.mediaKeys === mediaKeys2);
63 // Set it back to first MediaKeys.
64 video.setMediaKeys(mediaKeys);
65 assert_true(video.mediaKeys === mediaKeys);
66 assert_not_equals(video.mediaKeys, mediaKeys2);
68 // Set mediaKeys to null.
69 video.setMediaKeys(null);
70 assert_equals(video.mediaKeys, null);
72 // Set it to null a second time.
73 video.setMediaKeys(null);
74 assert_equals(video.mediaKeys, null);
76 // Set it back to first MediaKeys again.
77 video.setMediaKeys(mediaKeys);
78 assert_true(video.mediaKeys === mediaKeys);
79 assert_not_equals(video.mediaKeys, mediaKeys2);
81 }).catch(function(error) {
82 forceTestFailureFromPromise(test, error);
84 }, 'Setting MediaKeys on a video object.');