diff --git a/externs/mediakeys.js b/externs/mediakeys.js index f763bdcaed..40f62b1410 100644 --- a/externs/mediakeys.js +++ b/externs/mediakeys.js @@ -28,11 +28,11 @@ var MediaKeySystemMediaCapability; /** @typedef {{ - * initDataTypes: Array., - * audioCapabilities: Array., - * videoCapabilities: Array., - * distinctiveIdentifier: string, - * persistentState: string + * initDataTypes: (Array.|undefined), + * audioCapabilities: (Array.|undefined), + * videoCapabilities: (Array.|undefined), + * distinctiveIdentifier: (string|undefined), + * persistentState: (string|undefined) * }} */ var MediaKeySystemConfiguration; diff --git a/lib/player/player.js b/lib/player/player.js index 4719e27b6e..c5896a317f 100644 --- a/lib/player/player.js +++ b/lib/player/player.js @@ -419,9 +419,9 @@ shaka.player.Player.prototype.buildKeySystemQueries_ = var mksc = mediaKeySystemConfigs[keySystem]; if (!mksc) { mksc = mediaKeySystemConfigs[keySystem] = { - audioCapabilities: [], - videoCapabilities: [], - initDataTypes: [], + audioCapabilities: undefined, + videoCapabilities: undefined, + initDataTypes: undefined, distinctiveIdentifier: 'optional', persistentState: 'optional' }; @@ -433,9 +433,12 @@ shaka.player.Player.prototype.buildKeySystemQueries_ = if (!cfg.fullMimeType) continue; var capName = cfg.contentType + 'Capabilities'; - if (!mksc[capName]) continue; // not a capability we can check for! + if (!(capName in mksc)) continue; // not a capability we can check for! anythingSpecified = true; + if (!mksc[capName]) { + mksc[capName] = []; + } mksc[capName].push({ contentType: cfg.fullMimeType }); } @@ -496,8 +499,9 @@ shaka.player.Player.prototype.chooseEncrypted_ = if (chosenStreams.has(contentType)) continue; // not needed! var capName = contentType + 'Capabilities'; - var caps = mksc[capName][0]; - if (!caps) continue; // type not found! + var caps = mksc[capName]; + if (!caps || !caps.length) continue; // type not found! + caps = caps[0]; // Find which StreamConfigs match the selected MediaKeySystemConfiguration. var chosenCfgs = [];