Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(258)

Side by Side Diff: LayoutTests/media/encrypted-media/encrypted-media-set-mediakeys-at-same-time.html

Issue 1256023004: Add EME test to attempt multiple calls to setMediaKeys() (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: first required Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>Set MediaKeys multiple times in parallel</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="video"></video>
11 <div id="log"></div>
12 <script>
13 // Wait for an 'encrypted' event as a promise.
14 function wait_for_encrypted_event(video)
15 {
16 return new Promise(function(resolve) {
17 video.addEventListener('encrypted', function listener(e) {
18 video.removeEventListener(listener);
19 resolve();
20 });
21 });
22 };
23
24 // Return a promise that calls setMediaKeys() and returns 1 if
25 // resolved, 0 if rejected. If |must_succeed| is true, then
26 // setMediaKeys() should not fail.
27 function setMediaKeys_as_count(video, mediaKeys, must_succeed)
28 {
29 return video.setMediaKeys(mediaKeys).then(function() {
30 return 1;
31 }, function() {
32 assert_false(must_succeed);
33 return 0;
34 });
35 };
36
37 // Return the sum of the results from |promises|. Each promise
38 // must return a number.
39 function count_promise_results(promises)
40 {
41 var count = 0;
42 var result = Promise.resolve(null);
43
44 promises.forEach(function(promise) {
45 result = result.then(function() {
46 return promise;
47 }).then(function(i) {
48 count += i;
49 });
50 });
51
52 return result.then(function() { return count; });
53 };
54
55 promise_test(function(test)
56 {
57 var video = document.getElementById('video');
58 var access;
59 var mediaKeys1;
60 var mediaKeys2;
61 var mediaKeys3;
62 var mediaKeys4;
63 var mediaKeys5;
64
65 // Start a video now so that it is waiting for MediaKeys
66 // in order to continue.
67 video.src = '../content/test-encrypted.webm';
68 video.play();
69 return wait_for_encrypted_event(video).then(function() {
70 return navigator.requestMediaKeySystemAccess('org.w3.clearke y', [{}]);
71 }).then(function(result) {
72 access = result;
73 return access.createMediaKeys();
74 }).then(function(result) {
75 mediaKeys1 = result;
76 return access.createMediaKeys();
77 }).then(function(result) {
78 mediaKeys2 = result;
79 return access.createMediaKeys();
80 }).then(function(result) {
81 mediaKeys3 = result;
82 return access.createMediaKeys();
83 }).then(function(result) {
84 mediaKeys4 = result;
85 return access.createMediaKeys();
86 }).then(function(result) {
87 mediaKeys5 = result;
88 // Create 5 calls to setMediaKeys(). The first one must
89 // succeed, the others are optional.
90 var p1 = setMediaKeys_as_count(video, mediaKeys1, true);
91 var p2 = setMediaKeys_as_count(video, mediaKeys2, false);
92 var p3 = setMediaKeys_as_count(video, mediaKeys3, false);
93 var p4 = setMediaKeys_as_count(video, mediaKeys4, false);
94 var p5 = setMediaKeys_as_count(video, mediaKeys5, false);
95 return count_promise_results([p1, p2, p3, p4, p5]);
96 }).then(function(count) {
97 // At least one of the setMediaKeys() calls should have
98 // succeeded.
99 assert_greater_than(count, 0);
100 });
101 }, 'Set MediaKeys multiple times in parallel.');
102 </script>
103 </body>
104 </html>
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698