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

Side by Side Diff: LayoutTests/media/encrypted-media/encrypted-media-keystatuses.html

Issue 880313003: Add additional layout tests for MediaKeySession.keyStatuses (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: js Created 5 years, 10 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
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <title>Verify MediaKeySession.keyStatuses</title> 4 <title>Verify MediaKeySession.keyStatuses</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 <div id="log"></div> 10 <div id="log"></div>
11 <script> 11 <script>
12 var mediaKeySession; 12 var mediaKeySession;
13 13
14 // Even though key ids are uint8, using printable values so that 14 // Even though key ids are uint8, using printable values so that
15 // they can be verified easily. 15 // they can be verified easily.
16 var key1 = stringToUint8Array('123'); 16 var key1String = '123';
17 var key2 = stringToUint8Array('4567890'); 17 var key2String = '4567890';
18 var key1 = stringToUint8Array(key1String);
19 var key2 = stringToUint8Array(key2String);
18 var rawKey1 = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0x d2, 0x7b, 20 var rawKey1 = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0x d2, 0x7b,
19 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0x ae, 0x3c]); 21 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0x ae, 0x3c]);
20 var rawKey2 = new Uint8Array([0x3c, 0xae, 0xe4, 0xfc, 0x2a, 0x12, 0x ef, 0x68, 22 var rawKey2 = new Uint8Array([0x3c, 0xae, 0xe4, 0xfc, 0x2a, 0x12, 0x ef, 0x68,
21 0x7b, 0xd2, 0x14, 0x68, 0xf1, 0x62, 0x dd, 0xeb]); 23 0x7b, 0xd2, 0x14, 0x68, 0xf1, 0x62, 0x dd, 0xeb]);
22 24
25 // Compares two arrays possibly containing subarrays for equality.
26 // assert_array_equals() expects that each entry matches exactly,
27 // which doesn't work for nested arrays.
28 function compare_array(actual, expected, description)
29 {
30 assert_equals(actual.length, expected.length,
31 description + ': length');
32 for (var i = 0; i < actual.length; i++) {
33 if (Array.isArray(expected[i])) {
34 assert_array_equals(expected[i], actual[i],
35 description + ': entry[' + i + ']');
36 } else {
37 assert_equals(expected[i], actual[i],
38 description + ': entry[' + i + ']');
39 }
40 }
41 }
42
23 async_test(function(test) 43 async_test(function(test)
24 { 44 {
25 function processMessage(event) 45 function processMessage(event)
26 { 46 {
27 // No keys added yet. 47 // No keys added yet.
28 assert_equals(mediaKeySession.keyStatuses.size, 0); 48 assert_equals(mediaKeySession.keyStatuses.size, 0);
29 49
30 waitForEventAndRunStep('keystatuseschange', mediaKeySession, processKeyStatusesChange, test); 50 waitForEventAndRunStep('keystatuseschange', mediaKeySession, processKeyStatusesChange, test);
31 51
32 var jwkSet = stringToUint8Array(createJWKSet(createJWK(key1, rawKey1), createJWK(key2, rawKey2))); 52 var jwkSet = stringToUint8Array(createJWKSet(createJWK(key1, rawKey1), createJWK(key2, rawKey2)));
33 mediaKeySession.update(jwkSet).catch(function(error) { 53 mediaKeySession.update(jwkSet).catch(function(error) {
34 forceTestFailureFromPromise(test, error); 54 forceTestFailureFromPromise(test, error);
35 }); 55 });
36 } 56 }
37 57
38 function processKeyStatusesChange(event) 58 function processKeyStatusesChange(event)
39 { 59 {
60 // Two keys added, so both should show up in |keyStatuses|.
40 assert_equals(mediaKeySession.keyStatuses.size, 2); 61 assert_equals(mediaKeySession.keyStatuses.size, 2);
41 consoleWrite("for (var entry of keyStatuses)"); 62 dumpKeyStatuses(mediaKeySession.keyStatuses);
63
64 // Check |keyStatuses| for 2 entries.
65 var result = [];
42 for (var entry of mediaKeySession.keyStatuses) { 66 for (var entry of mediaKeySession.keyStatuses) {
43 consoleWrite(arrayBufferAsString(entry[0]) + ", " + entr y[1]); 67 result.push([arrayBufferAsString(entry[0]), entry[1]]);
44 } 68 }
45 consoleWrite("for (var key of keyStatuses.keys())"); 69 compare_array(result,
sandersd (OOO until July 31) 2015/01/30 22:51:38 If we are comparing both the key and the value, th
jrummell 2015/01/30 23:18:25 assert_object_equals() works.
70 [[key1String, 'usable'], [key2String, 'usable' ]],
71 'keyStatuses fails');
72
73 // |keyStatuses| must contain both keys.
74 result = [];
46 for (var key of mediaKeySession.keyStatuses.keys()) { 75 for (var key of mediaKeySession.keyStatuses.keys()) {
47 consoleWrite(arrayBufferAsString(key)); 76 result.push(arrayBufferAsString(key));
48 } 77 }
49 consoleWrite("for (var value of keyStatuses.values())"); 78 compare_array(result,
79 [key1String, key2String],
80 'keyStatuses.keys() fails');
81
82 // Both values in |mediaKeySession| should be 'usable'.
83 result = [];
50 for (var value of mediaKeySession.keyStatuses.values()) { 84 for (var value of mediaKeySession.keyStatuses.values()) {
51 consoleWrite(value); 85 result.push(value);
52 } 86 }
53 consoleWrite("for (var entry of keyStatuses.entries())"); 87 compare_array(result,
88 ['usable', 'usable'],
89 'keyStatuses.values() fails');
90
91 // Check |keyStatuses.entries()|.
92 result = [];
54 for (var entry of mediaKeySession.keyStatuses.entries()) { 93 for (var entry of mediaKeySession.keyStatuses.entries()) {
55 consoleWrite(arrayBufferAsString(entry[0]) + ", " + entr y[1]); 94 result.push([arrayBufferAsString(entry[0]), entry[1]]);
56 } 95 }
96 compare_array(result,
97 [[key1String, 'usable'], [key2String, 'usable' ]],
98 'keyStatuses.entries() fails');
99
100 // forEach() should return both entries.
101 result = [];
102 mediaKeySession.keyStatuses.forEach(function(value, key, map ) {
103 result.push([arrayBufferAsString(key), value]);
104 });
105 compare_array(result,
106 [[key1String, 'usable'], [key2String, 'usable' ]],
107 'keyStatuses.forEach() fails');
108
57 assert_true(mediaKeySession.keyStatuses.has(key1)); 109 assert_true(mediaKeySession.keyStatuses.has(key1));
58 assert_true(mediaKeySession.keyStatuses.has(key2)); 110 assert_true(mediaKeySession.keyStatuses.has(key2));
59 assert_false(mediaKeySession.keyStatuses.has(stringToUint8Ar ray('123456'))); 111 assert_false(mediaKeySession.keyStatuses.has(stringToUint8Ar ray('123456')));
60 assert_equals(mediaKeySession.keyStatuses.get(key1), 'usable '); 112 assert_equals(mediaKeySession.keyStatuses.get(key1), 'usable ');
61 assert_equals(mediaKeySession.keyStatuses.get(key2), 'usable '); 113 assert_equals(mediaKeySession.keyStatuses.get(key2), 'usable ');
62 assert_equals(mediaKeySession.keyStatuses.get(stringToUint8A rray('123456')), undefined); 114 assert_equals(mediaKeySession.keyStatuses.get(stringToUint8A rray('123456')), undefined);
115
63 test.done(); 116 test.done();
64 } 117 }
65 118
66 navigator.requestMediaKeySystemAccess('org.w3.clearkey').then(fu nction(access) { 119 navigator.requestMediaKeySystemAccess('org.w3.clearkey').then(fu nction(access) {
67 return access.createMediaKeys(); 120 return access.createMediaKeys();
68 }).then(function(mediaKeys) { 121 }).then(function(mediaKeys) {
69 var initDataType = getInitDataType(); 122 var initDataType = getInitDataType();
70 mediaKeySession = mediaKeys.createSession(); 123 mediaKeySession = mediaKeys.createSession();
71 124
72 // There should be no keys defined yet. 125 // There should be no keys defined yet.
73 assert_equals(mediaKeySession.keyStatuses.size, 0); 126 assert_equals(mediaKeySession.keyStatuses.size, 0);
74 127
75 waitForEventAndRunStep('message', mediaKeySession, processMe ssage, test); 128 waitForEventAndRunStep('message', mediaKeySession, processMe ssage, test);
76 return mediaKeySession.generateRequest(initDataType, getInit Data(initDataType)); 129 return mediaKeySession.generateRequest(initDataType, getInit Data(initDataType));
77 }).catch(function(error) { 130 }).catch(function(error) {
78 forceTestFailureFromPromise(test, error); 131 forceTestFailureFromPromise(test, error);
79 }); 132 });
80 }, 'Verify MediaKeySession.keyStatuses.'); 133 }, 'Verify MediaKeySession.keyStatuses.');
81 </script> 134 </script>
82 </body> 135 </body>
83 </html> 136 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698