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

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: comments addressed Created 7 years 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 3486197c594b3a8a819b1df6a23442ee0a3e5e84..be906a1981a0575b027e8e21a6d2c43b82dea1f4 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 FILE_IO_TEST_RESULT_HEADER = 'FILEIOTESTRESULT';
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) {
+ if (String.fromCharCode(msg[i]) != prefix[i])
return false;
}
return true;
}
+function isHeartbeatMessage(msg) {
+ return hasPrefix(msg, HEART_BEAT_HEADER);
+}
+
+function isFileIOTestMessage(msg) {
+ return hasPrefix(msg, 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.fileIOTestPassed = false;
video.isHeartbeatExpected = keySystem === EXTERNAL_CLEAR_KEY_KEY_SYSTEM;
+ video.isFileIOTestExpected = 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 (isFileIOTestMessage(e.message)) {
+ var success = getFileIOTestResult(e);
+ console.log('onKeyMessage - CDM file IO test: ' +
+ (success ? 'Success' : 'Fail'));
+ e.target.fileIOTestPassed = success;
+ return;
+ }
+
// No tested key system returns defaultURL in for key request messages.
if (e.defaultURL) {
failTest('keymessage unexpectedly has defaultURL: ' + e.defaultURL);
@@ -125,6 +144,21 @@ function loadEncryptedMedia(video, mediaFile, keySystem, key, useMSE,
}
}
+ function getFileIOTestResult(e) {
+ // Only External Clear Key sends a FILEIOTESTRESULT message.
+ if (e.keySystem != EXTERNAL_CLEAR_KEY_KEY_SYSTEM) {
+ failTest('Unexpected CDM file IO test result from ' + e.keySystem);
+ return false;
+ }
+
+ // The test result is either '0' or '1' appended to the header.
+ if (e.message.length != FILE_IO_TEST_RESULT_HEADER.length + 1)
+ return false;
+
+ var result_index = FILE_IO_TEST_RESULT_HEADER.length;
+ return String.fromCharCode(e.message[result_index]) == 1;
+ }
+
video.addEventListener('webkitneedkey', onNeedKey);
video.addEventListener('webkitkeymessage', onKeyMessage);
video.addEventListener('webkitkeyerror', function() {

Powered by Google App Engine
This is Rietveld 408576698