Commit 9e887ea1 authored by jrummell's avatar jrummell Committed by Commit bot

Verify heartbeat messages have type 'license-renewal'

Also check that non-heartbeat messages are 'license-request'.
Only done for unprefixed API.

BUG=442558
TEST=EME browser_tests pass

Review URL: https://codereview.chromium.org/854633003

Cr-Commit-Position: refs/heads/master@{#311796}
parent 6740e67a
...@@ -69,15 +69,15 @@ ...@@ -69,15 +69,15 @@
return; return;
// For loadSession() tests, addKey() will not be called after // For loadSession() tests, addKey() will not be called after
// loadSession() (the key is loaded internally). Do not check keyadded // loadSession() (the key is loaded internally). Do not check keyadded
// and heartbeat for these tests. // and renewal message for these tests.
if (!testConfig.sessionToLoad) { if (!testConfig.sessionToLoad) {
// keyadded may be fired around the start of playback; check for it // keyadded may be fired around the start of playback; check for it
// after a delay to avoid timing issues. // after a delay to avoid timing issues.
if (testConfig.usePrefixedEME && !video.receivedKeyAdded) if (testConfig.usePrefixedEME && !video.receivedKeyAdded)
Utils.failTest('Key added event not received.'); Utils.failTest('Key added event not received.');
if (testConfig.keySystem == EXTERNAL_CLEARKEY && if (testConfig.keySystem == EXTERNAL_CLEARKEY &&
!video.receivedHeartbeat) !video.receivedRenewalMessage)
Utils.failTest('Heartbeat keymessage event not received.'); Utils.failTest('license-renewal message not received.');
} }
video.removeEventListener('ended', Utils.failTest); video.removeEventListener('ended', Utils.failTest);
Utils.installTitleEventHandler(video, 'ended'); Utils.installTitleEventHandler(video, 'ended');
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
// This file contains global constant variables used by the application. // This file contains global constant variables used by the application.
// Heart beat message header. // Renewal message header. External Clear Key implementation returns this as
var HEART_BEAT_HEADER = 'HEARTBEAT'; // part of renewal messages.
var RENEWAL_MESSAGE_HEADER = 'HEARTBEAT';
// Default key used to encrypt many media files used in browser tests. // Default key used to encrypt many media files used in browser tests.
var KEY = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, var KEY = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b,
......
...@@ -44,9 +44,15 @@ PlayerUtils.registerEMEEventListeners = function(player) { ...@@ -44,9 +44,15 @@ PlayerUtils.registerEMEEventListeners = function(player) {
function addMediaKeySessionListeners(mediaKeySession) { function addMediaKeySessionListeners(mediaKeySession) {
mediaKeySession.addEventListener('message', function(message) { mediaKeySession.addEventListener('message', function(message) {
player.video.receivedKeyMessage = true; player.video.receivedKeyMessage = true;
if (Utils.isHeartBeatMessage(message.message)) { if (Utils.isRenewalMessage(message)) {
Utils.timeLog('MediaKeySession onMessage - heart beat', message); Utils.timeLog('MediaKeySession onMessage - renewal', message);
player.video.receivedHeartbeat = true; player.video.receivedRenewalMessage = true;
} else {
if (message.messageType != 'license-request') {
Utils.failTest('Unexpected message type "' + message.messageType +
'" received.',
KEY_ERROR);
}
} }
player.onMessage(message); player.onMessage(message);
}); });
...@@ -123,9 +129,9 @@ PlayerUtils.registerPrefixedEMEEventListeners = function(player) { ...@@ -123,9 +129,9 @@ PlayerUtils.registerPrefixedEMEEventListeners = function(player) {
player.video.addEventListener('webkitkeymessage', function(message) { player.video.addEventListener('webkitkeymessage', function(message) {
Utils.timeLog('onWebkitKeyMessage', message); Utils.timeLog('onWebkitKeyMessage', message);
message.target.receivedKeyMessage = true; message.target.receivedKeyMessage = true;
if (Utils.isHeartBeatMessage(message.message)) { if (Utils.isRenewalMessagePrefixed(message.message)) {
Utils.timeLog('onWebkitKeyMessage - heart beat', message); Utils.timeLog('onWebkitKeyMessage - renewal', message);
message.target.receivedHeartbeat = true; message.target.receivedRenewalMessage = true;
} }
}); });
......
...@@ -202,8 +202,22 @@ Utils.installTitleEventHandler = function(element, event) { ...@@ -202,8 +202,22 @@ Utils.installTitleEventHandler = function(element, event) {
}, false); }, false);
}; };
Utils.isHeartBeatMessage = function(msg) { Utils.isRenewalMessage = function(message) {
return Utils.hasPrefix(Utils.convertToUint8Array(msg), HEART_BEAT_HEADER); if (message.messageType != 'license-renewal')
return false;
if (!Utils.isRenewalMessagePrefixed(message.message)) {
Utils.failTest('license-renewal message doesn\'t contain expected header',
KEY_ERROR);
}
return true;
};
// For the prefixed API renewal messages are determined by looking at the
// message and finding a known string.
Utils.isRenewalMessagePrefixed = function(msg) {
return Utils.hasPrefix(Utils.convertToUint8Array(msg),
RENEWAL_MESSAGE_HEADER);
}; };
Utils.resetTitleChange = function() { Utils.resetTitleChange = function() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment