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 | 
| 23 async_test(function(test) | 25 async_test(function(test) | 
| 24 { | 26 { | 
| 25 function processMessage(event) | 27 function processMessage(event) | 
| 26 { | 28 { | 
| 27 // No keys added yet. | 29 // No keys added yet. | 
| 28 assert_equals(mediaKeySession.keyStatuses.size, 0); | 30 assert_equals(mediaKeySession.keyStatuses.size, 0); | 
| 29 | 31 | 
| 30 waitForEventAndRunStep('keystatuseschange', mediaKeySession, processKeyStatusesChange, test); | 32 waitForEventAndRunStep('keystatuseschange', mediaKeySession, processKeyStatusesChange, test); | 
| 31 | 33 | 
| 32 var jwkSet = stringToUint8Array(createJWKSet(createJWK(key1, rawKey1), createJWK(key2, rawKey2))); | 34 var jwkSet = stringToUint8Array(createJWKSet(createJWK(key1, rawKey1), createJWK(key2, rawKey2))); | 
| 33 mediaKeySession.update(jwkSet).catch(function(error) { | 35 mediaKeySession.update(jwkSet).catch(function(error) { | 
| 34 forceTestFailureFromPromise(test, error); | 36 forceTestFailureFromPromise(test, error); | 
| 35 }); | 37 }); | 
| 36 } | 38 } | 
| 37 | 39 | 
| 38 function processKeyStatusesChange(event) | 40 function processKeyStatusesChange(event) | 
| 39 { | 41 { | 
| 42 // Two keys added, so both should show up in |keyStatuses|. | |
| 40 assert_equals(mediaKeySession.keyStatuses.size, 2); | 43 assert_equals(mediaKeySession.keyStatuses.size, 2); | 
| 41 consoleWrite("for (var entry of keyStatuses)"); | 44 dumpKeyStatuses(mediaKeySession.keyStatuses); | 
| 45 | |
| 46 // Check |keyStatuses| for 2 entries. | |
| 47 var result = []; | |
| 42 for (var entry of mediaKeySession.keyStatuses) { | 48 for (var entry of mediaKeySession.keyStatuses) { | 
| 43 consoleWrite(arrayBufferAsString(entry[0]) + ", " + entr y[1]); | 49 result.push({ key: arrayBufferAsString(entry[0]), value: entry[1] }); | 
| 
 
sandersd (OOO until July 31)
2015/01/30 23:22:46
I think 'result[arrayBufferAsString(entry[0])] = e
 
 | |
| 44 } | 50 } | 
| 45 consoleWrite("for (var key of keyStatuses.keys())"); | 51 assert_object_equals(result, | 
| 52 [{ key: key1String, value: 'usable'}, { key: key2String, value: 'usable'}], | |
| 53 'keyStatuses fails'); | |
| 54 | |
| 55 // |keyStatuses| must contain both keys. | |
| 56 result = []; | |
| 46 for (var key of mediaKeySession.keyStatuses.keys()) { | 57 for (var key of mediaKeySession.keyStatuses.keys()) { | 
| 47 consoleWrite(arrayBufferAsString(key)); | 58 result.push(arrayBufferAsString(key)); | 
| 48 } | 59 } | 
| 49 consoleWrite("for (var value of keyStatuses.values())"); | 60 assert_array_equals(result, | 
| 61 [key1String, key2String], | |
| 62 'keyStatuses.keys() fails'); | |
| 63 | |
| 64 // Both values in |mediaKeySession| should be 'usable'. | |
| 65 result = []; | |
| 50 for (var value of mediaKeySession.keyStatuses.values()) { | 66 for (var value of mediaKeySession.keyStatuses.values()) { | 
| 51 consoleWrite(value); | 67 result.push(value); | 
| 52 } | 68 } | 
| 53 consoleWrite("for (var entry of keyStatuses.entries())"); | 69 assert_array_equals(result, | 
| 70 ['usable', 'usable'], | |
| 71 'keyStatuses.values() fails'); | |
| 72 | |
| 73 // Check |keyStatuses.entries()|. | |
| 74 result = []; | |
| 54 for (var entry of mediaKeySession.keyStatuses.entries()) { | 75 for (var entry of mediaKeySession.keyStatuses.entries()) { | 
| 55 consoleWrite(arrayBufferAsString(entry[0]) + ", " + entr y[1]); | 76 result.push({ key: arrayBufferAsString(entry[0]), value: entry[1] }); | 
| 56 } | 77 } | 
| 78 assert_object_equals(result, | |
| 79 [{ key: key1String, value: 'usable'}, { key: key2String, value: 'usable'}], | |
| 80 'keyStatuses.entries() fails'); | |
| 81 | |
| 82 // forEach() should return both entries. | |
| 83 result = []; | |
| 84 mediaKeySession.keyStatuses.forEach(function(value, key, map ) { | |
| 85 result.push({ key: arrayBufferAsString(key), value: valu e }); | |
| 86 }); | |
| 87 assert_object_equals(result, | |
| 88 [{ key: key1String, value: 'usable'}, { key: key2String, value: 'usable'}], | |
| 89 'keyStatuses.forEach() fails'); | |
| 90 | |
| 57 assert_true(mediaKeySession.keyStatuses.has(key1)); | 91 assert_true(mediaKeySession.keyStatuses.has(key1)); | 
| 58 assert_true(mediaKeySession.keyStatuses.has(key2)); | 92 assert_true(mediaKeySession.keyStatuses.has(key2)); | 
| 59 assert_false(mediaKeySession.keyStatuses.has(stringToUint8Ar ray('123456'))); | 93 assert_false(mediaKeySession.keyStatuses.has(stringToUint8Ar ray('123456'))); | 
| 60 assert_equals(mediaKeySession.keyStatuses.get(key1), 'usable '); | 94 assert_equals(mediaKeySession.keyStatuses.get(key1), 'usable '); | 
| 61 assert_equals(mediaKeySession.keyStatuses.get(key2), 'usable '); | 95 assert_equals(mediaKeySession.keyStatuses.get(key2), 'usable '); | 
| 62 assert_equals(mediaKeySession.keyStatuses.get(stringToUint8A rray('123456')), undefined); | 96 assert_equals(mediaKeySession.keyStatuses.get(stringToUint8A rray('123456')), undefined); | 
| 97 | |
| 63 test.done(); | 98 test.done(); | 
| 64 } | 99 } | 
| 65 | 100 | 
| 66 navigator.requestMediaKeySystemAccess('org.w3.clearkey').then(fu nction(access) { | 101 navigator.requestMediaKeySystemAccess('org.w3.clearkey').then(fu nction(access) { | 
| 67 return access.createMediaKeys(); | 102 return access.createMediaKeys(); | 
| 68 }).then(function(mediaKeys) { | 103 }).then(function(mediaKeys) { | 
| 69 var initDataType = getInitDataType(); | 104 var initDataType = getInitDataType(); | 
| 70 mediaKeySession = mediaKeys.createSession(); | 105 mediaKeySession = mediaKeys.createSession(); | 
| 71 | 106 | 
| 72 // There should be no keys defined yet. | 107 // There should be no keys defined yet. | 
| 73 assert_equals(mediaKeySession.keyStatuses.size, 0); | 108 assert_equals(mediaKeySession.keyStatuses.size, 0); | 
| 74 | 109 | 
| 75 waitForEventAndRunStep('message', mediaKeySession, processMe ssage, test); | 110 waitForEventAndRunStep('message', mediaKeySession, processMe ssage, test); | 
| 76 return mediaKeySession.generateRequest(initDataType, getInit Data(initDataType)); | 111 return mediaKeySession.generateRequest(initDataType, getInit Data(initDataType)); | 
| 77 }).catch(function(error) { | 112 }).catch(function(error) { | 
| 78 forceTestFailureFromPromise(test, error); | 113 forceTestFailureFromPromise(test, error); | 
| 79 }); | 114 }); | 
| 80 }, 'Verify MediaKeySession.keyStatuses.'); | 115 }, 'Verify MediaKeySession.keyStatuses.'); | 
| 81 </script> | 116 </script> | 
| 82 </body> | 117 </body> | 
| 83 </html> | 118 </html> | 
| OLD | NEW |