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

Unified Diff: chrome/test/data/media/encrypted_media_utils.js

Issue 93243003: Add CDM FileIO tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
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() {

Powered by Google App Engine
This is Rietveld 408576698