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

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: 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.
26 function setMediaKeys_as_count(video, mediaKeys)
27 {
28 return video.setMediaKeys(mediaKeys).then(function() {
29 return 1;
30 }, function() {
31 return 0;
32 });
33 };
34
35 // Return the sum of the results from |promises|. Each promise
36 // must return a number.
37 function count_promise_results(promises)
38 {
39 var count = 0;
40 var result = Promise.resolve(null);
41
42 promises.forEach(function(promise) {
43 result = result.then(function() {
44 return promise;
45 }).then(function(i) {
46 count += i;
47 });
48 });
49
50 return result.then(function() { return count; });
51 };
52
53 promise_test(function(test)
54 {
55 var video = document.getElementById('video');
56 var access;
57 var mediaKeys1;
58 var mediaKeys2;
59 var mediaKeys3;
60 var mediaKeys4;
61 var mediaKeys5;
62
63 // Start a video now so that it is waiting for MediaKeys
64 // in order to continue.
65 video.src = '../content/test-encrypted.webm';
66 video.play();
67 return wait_for_encrypted_event(video).then(function() {
68 return navigator.requestMediaKeySystemAccess('org.w3.clearke y', [{}]);
69 }).then(function(result) {
70 access = result;
71 return access.createMediaKeys();
72 }).then(function(result) {
73 mediaKeys1 = result;
74 return access.createMediaKeys();
75 }).then(function(result) {
76 mediaKeys2 = result;
77 return access.createMediaKeys();
78 }).then(function(result) {
79 mediaKeys3 = result;
80 return access.createMediaKeys();
81 }).then(function(result) {
82 mediaKeys4 = result;
83 return access.createMediaKeys();
84 }).then(function(result) {
85 mediaKeys5 = result;
86 var p1 = setMediaKeys_as_count(video, mediaKeys1);
87 var p2 = setMediaKeys_as_count(video, mediaKeys2);
88 var p3 = setMediaKeys_as_count(video, mediaKeys3);
89 var p4 = setMediaKeys_as_count(video, mediaKeys4);
90 var p5 = setMediaKeys_as_count(video, mediaKeys5);
91 return count_promise_results([p1, p2, p3, p4, p5]);
92 }).then(function(count) {
93 // At least one of the setMediaKeys() calls should have
94 // succeeded.
xhwang 2015/07/24 20:56:36 can we be a bit more strict that the first call sh
jrummell 2015/07/24 23:11:01 Done.
95 assert_greater_than(count, 0);
96 });
97 }, 'Set MediaKeys multiple times in parallel.');
98 </script>
99 </body>
100 </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