From bae0cba3733708aeb55156c159a5187e4e5e8d7a Mon Sep 17 00:00:00 2001 From: Adam Waldron Date: Mon, 26 Feb 2024 21:40:16 -0800 Subject: [PATCH] feat: eme error interface --- src/plugin.js | 26 +++++++++++++++++++++++++- test/plugin.test.js | 6 ++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/plugin.js b/src/plugin.js index 07e654a..b0eb288 100644 --- a/src/plugin.js +++ b/src/plugin.js @@ -207,6 +207,10 @@ export const emeErrorHandler = (player) => { } player.error(error); + player.eme.error({ + errorType: videojs.Error.EMEKeySessionCreationError, + error + }); }; }; @@ -404,7 +408,27 @@ const eme = function(options = {}) { }); }, detectSupportedCDMs, - options + options, + _error: null, + error(err) { + + // If `err` doesn't exist, return the current error. + if (err === undefined) { + return this._error || null; + } + + // If `err` is null, reset the ads error. + if (err === null) { + this._error = null; + + return; + } + + this._error = err; + + videojs.log.error(`EME error occured of type: ${err.errorType}.`); + player.trigger('vjsemeerror'); + } }; }; diff --git a/test/plugin.test.js b/test/plugin.test.js index 838c88c..386fb7d 100644 --- a/test/plugin.test.js +++ b/test/plugin.test.js @@ -832,6 +832,12 @@ QUnit.test('emeError properly handles various parameter types', function(assert) }, error: (obj) => { errorObj = obj; + }, + eme: { + _error: null, + error: (err) => { + this._error = err; + } } }; const emeError = emeErrorHandler(player);