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

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

Issue 11469040: EME v0.1: Report defaultURL in KeyMessage. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed c&p error and added new check for defaultURL Created 8 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
« no previous file with comments | « content/test/data/media/encrypted_media_player.html ('k') | webkit/media/crypto/ppapi/clear_key_cdm.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/test/data/media/encrypted_media_utils.js
diff --git a/content/test/data/media/encrypted_media_utils.js b/content/test/data/media/encrypted_media_utils.js
index 16ab4b7ef687b6f9a74a492879936ad5469d6056..9bde89faec130ec30c581845137c7c8bd63a42f8 100644
--- a/content/test/data/media/encrypted_media_utils.js
+++ b/content/test/data/media/encrypted_media_utils.js
@@ -31,12 +31,17 @@ var failMessage = '';
// Heart beat message header.
var HEART_BEAT_HEADER = 'HEARTBEAT';
-function isHeartBeatMessage(msg) {
+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)
return false;
for (var i = 0; i < HEART_BEAT_HEADER.length; ++i) {
- if (HEART_BEAT_HEADER[i] != String.fromCharCode(msg[i]))
+ if (String.fromCharCode(msg[i]) != HEART_BEAT_HEADER[i])
return false;
}
@@ -44,6 +49,7 @@ function isHeartBeatMessage(msg) {
}
function failTest(msg) {
+ console.log("failTest('" + msg + "')");
if (msg instanceof Event)
failMessage = msg.target + '.' + msg.type;
else
@@ -68,8 +74,10 @@ function loadEncryptedMediaFromURL(video) {
function loadEncryptedMedia(video, mediaFile, keySystem, key) {
var keyRequested = false;
var sourceOpened = false;
- // Add a property to video to check key was added.
- video.hasKeyAdded = false;
+ // Add properties to enable verification that events occurred.
+ video.receivedKeyAdded = false;
+ video.receivedHeartbeat = false;
+ video.isHeartbeatExpected = keySystem === EXTERNAL_CLEAR_KEY_KEY_SYSTEM;
if (!(video && mediaFile && keySystem && key))
failTest('Missing parameters in loadEncryptedMedia().');
@@ -104,20 +112,58 @@ function loadEncryptedMedia(video, mediaFile, keySystem, key) {
}
}
- function onKeyAdded() {
- video.hasKeyAdded = true;
+ function onKeyAdded(e) {
+ e.target.receivedKeyAdded = true;
}
function onKeyMessage(e) {
- if (isHeartBeatMessage(e.message)) {
- console.log('onKeyMessage - heart beat', e);
+ // TODO(ddorwin): Enable after fixing http://crbug.com/166204.
+ if (!e.keySystem && false) {
+ failTest('keymessage without a keySystem: ' + e.keySystem);
+ return;
+ }
+
+ if (!e.sessionId) {
+ failTest('keymessage without a sessionId: ' + e.sessionId);
+ return;
+ }
+
+ if (!e.message) {
+ failTest('keymessage without a message: ' + e.message);
+ return;
+ }
+
+ if (isHeartbeatMessage(e.message)) {
+ console.log('onKeyMessage - heartbeat', e);
+ e.target.receivedHeartbeat = true;
+ verifyHeartbeatMessage(e);
return;
}
+ // No tested key system returns defaultURL in for key request messages.
+ if (e.defaultURL) {
+ failTest('keymessage unexpectedly has defaultURL: ' + e.defaultURL);
+ return;
+ }
+
+ // keymessage in response to generateKeyRequest. Reply with key.
console.log('onKeyMessage - key request', e);
video.webkitAddKey(keySystem, key, e.message);
}
+ function verifyHeartbeatMessage(e) {
+ // Only External Clear Key sends a HEARTBEAT message.
+ if (e.keySystem != EXTERNAL_CLEAR_KEY_KEY_SYSTEM) {
+ failTest('Unexpected heartbeat from ' + e.keySystem);
+ return;
+ }
+
+ if (e.defaultURL != EXTERNAL_CLEAR_KEY_HEARTBEAT_URL) {
+ failTest('Heartbeat message with unexpected defaultURL: ' + e.defaultURL);
+ return;
+ }
+ }
+
var mediaSource = new WebKitMediaSource();
mediaSource.addEventListener('webkitsourceopen', onSourceOpen);
« no previous file with comments | « content/test/data/media/encrypted_media_player.html ('k') | webkit/media/crypto/ppapi/clear_key_cdm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698