Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / media / encrypted-media / encrypted-media-setmediakeys.html
1 <!DOCTYPE html>
2 <html>
3     <head>
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>
8     </head>
9     <body>
10         <video id="testVideo"></video>
11         <div id="log"></div>
12         <p>This tests setting MediaKeys on a video object.</p>
13         <script>
14             async_test(function(test)
15             {
16                 var mediaKeys;
17                 var mediaKeys2;
18                 var video = document.getElementById('testVideo');
19                 assert_not_equals(video, null);
20
21                 // Test MediaKeys assignment.
22                 assert_equals(video.mediaKeys, null);
23                 assert_equals(typeof video.setMediaKeys, 'function');
24
25                 // Try setting mediaKeys to null.
26                 video.setMediaKeys(null);
27                 assert_equals(video.mediaKeys, null);
28
29                 // Try setting mediaKeys to the wrong type of object.
30                 assert_throws(new TypeError(),
31                               function () { video.setMediaKeys(new Date()) });
32
33                 // Create a MediaKeys object and assign it to video.
34                 MediaKeys.create('org.w3.clearkey').then(function(result) {
35                     mediaKeys = 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);
41
42                     // Set it a second time.
43                     video.setMediaKeys(mediaKeys);
44                     assert_not_equals(video.mediaKeys, null);
45                     assert_true(video.mediaKeys === mediaKeys);
46
47                     // Create a second MediaKeys.
48                     return MediaKeys.create('org.w3.clearkey');
49                 }).then(function(result) {
50                     mediaKeys2 = 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');
56
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);
62
63                     // Set it back to first MediaKeys.
64                     video.setMediaKeys(mediaKeys);
65                     assert_true(video.mediaKeys === mediaKeys);
66                     assert_not_equals(video.mediaKeys, mediaKeys2);
67
68                     // Set mediaKeys to null.
69                     video.setMediaKeys(null);
70                     assert_equals(video.mediaKeys, null);
71
72                     // Set it to null a second time.
73                     video.setMediaKeys(null);
74                     assert_equals(video.mediaKeys, null);
75
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);
80                     test.done();
81                 }).catch(function(error) {
82                     forceTestFailureFromPromise(test, error);
83                 });
84             }, 'Setting MediaKeys on a video object.');
85         </script>
86     </body>
87 </html>