Skip to content

Commit

Permalink
add peer dependency and specific keysystems errors
Browse files Browse the repository at this point in the history
  • Loading branch information
adrums86 committed Mar 8, 2024
1 parent 5798f8b commit c689b14
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 13 deletions.
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@
"global": "^4.3.2",
"video.js": "^6 || ^7 || ^8"
},
"peerDependencies": {
"video.js": "^8.11.8"
},
"devDependencies": {
"conventional-changelog-cli": "^2.0.12",
"conventional-changelog-videojs": "^3.0.0",
Expand Down
37 changes: 24 additions & 13 deletions src/plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -187,13 +187,10 @@ export const setupSessions = (player) => {
* @return {Function}
*/
export const emeErrorHandler = (player) => {
return (objOrErr) => {
const vjsErrorType = videojs.Error && videojs.Error.EMEKeySessionCreationError;
const errorType = vjsErrorType || 'eme-key-session-creation-error';
return (objOrErr, errorType) => {
const error = {
// MEDIA_ERR_ENCRYPTED is code 5
code: 5,
errorType
code: 5
};

if (typeof objOrErr === 'string') {
Expand All @@ -207,6 +204,12 @@ export const emeErrorHandler = (player) => {
objOrErr.cause.byteLength)) {
error.cause = objOrErr.cause;
}
if (errorType) {
error.errorType = errorType;
}
if (objOrErr.keySystem) {
error.keySystem = objOrErr.keySystem;
}
}

player.error(error);
Expand Down Expand Up @@ -243,7 +246,9 @@ const onPlayerReady = (player, emeError) => {
videojs.log.debug('eme', 'Received an \'encrypted\' event');
setupSessions(player);
handleEncryptedEvent(player, event, playerOptions, player.eme.sessions, player.tech_)
.catch(emeError);
.catch((error) => {
emeError(error, videojs.Error.EMEEncryptedError);
});
});
} else if (window.WebKitMediaKeys) {
player.eme.initLegacyFairplay();
Expand All @@ -259,13 +264,17 @@ const onPlayerReady = (player, emeError) => {
try {
handleMsNeedKeyEvent(event, playerOptions, player.eme.sessions, player.tech_);
} catch (error) {
emeError(error);
emeError(error, videojs.Error.MSKeyError);
}
});
player.tech_.on('mskeyerror', emeError);
const msKeyErrorCallback = (error) => {
emeError(error, videojs.Error.MSKeyError);
};

player.tech_.on('mskeyerror', msKeyErrorCallback);
// TODO: refactor this plugin so it can use a plugin dispose
player.on('dispose', () => {
player.tech_.off('mskeyerror', emeError);
player.tech_.off('mskeyerror', msKeyErrorCallback);
});
}
};
Expand Down Expand Up @@ -325,7 +334,7 @@ const eme = function(options = {}) {
.catch((error) => {
callback(error);
if (!suppressErrorIfPossible) {
emeError(error);
emeError(error, videojs.Error.EMEEncryptedError);
}
});
} else if (window.MSMediaKeys) {
Expand All @@ -335,7 +344,7 @@ const eme = function(options = {}) {
if (event.type === 'mskeyerror') {
callback(event.target.error);
if (!suppressErrorIfPossible) {
emeError(event.message);
emeError(event.message, videojs.Error.MSKeyError);
}
} else {
callback();
Expand All @@ -351,7 +360,7 @@ const eme = function(options = {}) {
player.tech_.off('mskeyerror', msKeyHandler);
callback(error);
if (!suppressErrorIfPossible) {
emeError(error);
emeError(error, videojs.Error.MSKeyError);
}
}
}
Expand All @@ -364,7 +373,9 @@ const eme = function(options = {}) {
// element between sources
setupSessions(player);
handleWebKitNeedKeyEvent(event, playerOptions, player.tech_)
.catch(emeError);
.catch((error) => {
emeError(error, videojs.Error.WebkitKeyError);
});
};

// Support Safari EME with FairPlay
Expand Down

0 comments on commit c689b14

Please sign in to comment.