Chromium Code Reviews| OLD | NEW |
|---|---|
| 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> |
| OLD | NEW |