Chromium Code Reviews| Index: chrome/test/data/media/encrypted_media_utils.js |
| diff --git a/chrome/test/data/media/encrypted_media_utils.js b/chrome/test/data/media/encrypted_media_utils.js |
| index b7fece4ca49e119f726f0d0156020b32b1beb9e3..35f7e7a63aed1cac02b3453c27d4c243d90cfac7 100644 |
| --- a/chrome/test/data/media/encrypted_media_utils.js |
| +++ b/chrome/test/data/media/encrypted_media_utils.js |
| @@ -14,21 +14,30 @@ var KEY = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, |
| var KEY_ID = getInitDataFromKeyId("0123456789012345"); |
| // Heart beat message header. |
| var HEART_BEAT_HEADER = 'HEARTBEAT'; |
| +var CDM_FILE_IO_TEST_RESULT_HEADER = 'CDMFILEIOTESTRESULT'; |
| var EXTERNAL_CLEAR_KEY_KEY_SYSTEM = "org.chromium.externalclearkey"; |
| // Note that his URL has been normalized from the one in clear_key_cdm.cc. |
| var EXTERNAL_CLEAR_KEY_HEARTBEAT_URL = |
| 'http://test.externalclearkey.chromium.org/'; |
| -function isHeartbeatMessage(msg) { |
| - if (msg.length < HEART_BEAT_HEADER.length) |
| +function hasPrefix(msg, prefix) { |
| + if (msg.length < prefix.length) |
| return false; |
| - for (var i = 0; i < HEART_BEAT_HEADER.length; ++i) { |
| - if (String.fromCharCode(msg[i]) != HEART_BEAT_HEADER[i]) |
| + for (var i = 0; i < prefix.length; ++i) { |
|
ddorwin
2013/12/04 05:27:08
is there a reason we can't use substr?
xhwang
2013/12/10 01:24:25
msg is an uint8 array, not a string :(
|
| + if (String.fromCharCode(msg[i]) != prefix[i]) |
| return false; |
| } |
| return true; |
| } |
| +function isHeartbeatMessage(msg) { |
| + return hasPrefix(msg, HEART_BEAT_HEADER); |
| +} |
| + |
| +function isCdmFileIOTestMessage(msg) { |
| + return hasPrefix(msg, CDM_FILE_IO_TEST_RESULT_HEADER); |
| +} |
| + |
| function loadEncryptedMediaFromURL(video) { |
| return loadEncryptedMedia(video, mediaFile, keySystem, KEY, useMSE); |
| } |
| @@ -40,7 +49,9 @@ function loadEncryptedMedia(video, mediaFile, keySystem, key, useMSE, |
| // Add properties to enable verification that events occurred. |
| video.receivedKeyAdded = false; |
| video.receivedHeartbeat = false; |
| + video.cdmFileIOTestPassed = false; |
| video.isHeartbeatExpected = keySystem === EXTERNAL_CLEAR_KEY_KEY_SYSTEM; |
| + video.isCdmFileIOTestExpected = keySystem === EXTERNAL_CLEAR_KEY_KEY_SYSTEM; |
| video.receivedKeyMessage = false; |
| if (!(video && mediaFile && keySystem && key)) { |
| @@ -89,6 +100,14 @@ function loadEncryptedMedia(video, mediaFile, keySystem, key, useMSE, |
| return; |
| } |
| + if (isCdmFileIOTestMessage(e.message)) { |
| + var success = getCdmFileIOTestResult(e); |
| + console.log('onKeyMessage - CDM file IO test: ' + |
| + (success ? 'Success' : 'Fail')); |
| + e.target.cdmFileIOTestPassed = success; |
| + return; |
| + } |
| + |
| // No tested key system returns defaultURL in for key request messages. |
| if (e.defaultURL) { |
| failTest('keymessage unexpectedly has defaultURL: ' + e.defaultURL); |
| @@ -116,6 +135,20 @@ function loadEncryptedMedia(video, mediaFile, keySystem, key, useMSE, |
| } |
| } |
| + function getCdmFileIOTestResult(e) { |
| + // Only External Clear Key sends a HEARTBEAT message. |
|
ddorwin
2013/12/04 05:27:08
update comment
xhwang
2013/12/10 01:24:25
Done.
|
| + if (e.keySystem != EXTERNAL_CLEAR_KEY_KEY_SYSTEM) { |
| + failTest('Unexpected CDM file IO test result from ' + e.keySystem); |
| + return false; |
| + } |
| + |
| + if (e.message.length != CDM_FILE_IO_TEST_RESULT_HEADER.length + 1) |
|
ddorwin
2013/12/04 05:27:08
Explain that the result is appended and one charac
xhwang
2013/12/10 01:24:25
Done.
|
| + return false; |
| + |
| + var result_index = CDM_FILE_IO_TEST_RESULT_HEADER.length; |
| + return String.fromCharCode(e.message[result_index]) == 1; |
|
ddorwin
2013/12/04 05:27:08
'1' for clarity?
xhwang
2013/12/10 01:24:25
Well, e.message[result_index] == '1' doesn't work.
ddorwin
2013/12/11 21:16:16
but can we s/1/'1'/? There's an implicit conversio
|
| + } |
| + |
| video.addEventListener('webkitneedkey', onNeedKey); |
| video.addEventListener('webkitkeymessage', onKeyMessage); |
| video.addEventListener('webkitkeyerror', function() { |