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 @@
return;
// For loadSession() tests, addKey() will not be called after
// loadSession() (the key is loaded internally). Do not check keyadded
// and heartbeat for these tests.
// and renewal message for these tests.
if (!testConfig.sessionToLoad) {
// keyadded may be fired around the start of playback; check for it
// after a delay to avoid timing issues.
if (testConfig.usePrefixedEME && !video.receivedKeyAdded)
Utils.failTest('Key added event not received.');
if (testConfig.keySystem == EXTERNAL_CLEARKEY &&
!video.receivedHeartbeat)
Utils.failTest('Heartbeat keymessage event not received.');
!video.receivedRenewalMessage)
Utils.failTest('license-renewal message not received.');
}
video.removeEventListener('ended', Utils.failTest);
Utils.installTitleEventHandler(video, 'ended');
......
......@@ -4,8 +4,9 @@
// This file contains global constant variables used by the application.
// Heart beat message header.
var HEART_BEAT_HEADER = 'HEARTBEAT';
// Renewal message header. External Clear Key implementation returns this as
// part of renewal messages.
var RENEWAL_MESSAGE_HEADER = 'HEARTBEAT';
// Default key used to encrypt many media files used in browser tests.
var KEY = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b,
......
......@@ -44,9 +44,15 @@ PlayerUtils.registerEMEEventListeners = function(player) {
function addMediaKeySessionListeners(mediaKeySession) {
mediaKeySession.addEventListener('message', function(message) {
player.video.receivedKeyMessage = true;
if (Utils.isHeartBeatMessage(message.message)) {
Utils.timeLog('MediaKeySession onMessage - heart beat', message);
player.video.receivedHeartbeat = true;
if (Utils.isRenewalMessage(message)) {
Utils.timeLog('MediaKeySession onMessage - renewal', message);
player.video.receivedRenewalMessage = true;
} else {
if (message.messageType != 'license-request') {
Utils.failTest('Unexpected message type "' + message.messageType +
'" received.',
KEY_ERROR);
}
}
player.onMessage(message);
});
......@@ -123,9 +129,9 @@ PlayerUtils.registerPrefixedEMEEventListeners = function(player) {
player.video.addEventListener('webkitkeymessage', function(message) {
Utils.timeLog('onWebkitKeyMessage', message);
message.target.receivedKeyMessage = true;
if (Utils.isHeartBeatMessage(message.message)) {
Utils.timeLog('onWebkitKeyMessage - heart beat', message);
message.target.receivedHeartbeat = true;
if (Utils.isRenewalMessagePrefixed(message.message)) {
Utils.timeLog('onWebkitKeyMessage - renewal', message);
message.target.receivedRenewalMessage = true;
}
});
......
......@@ -202,8 +202,22 @@ Utils.installTitleEventHandler = function(element, event) {
}, false);
};
Utils.isHeartBeatMessage = function(msg) {
return Utils.hasPrefix(Utils.convertToUint8Array(msg), HEART_BEAT_HEADER);
Utils.isRenewalMessage = function(message) {
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() {
......
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