videojs-errors
Advanced tools
Comparing version 1.1.0 to 1.1.1
@@ -5,2 +5,3 @@ CHANGELOG | ||
## HEAD (Unreleased) | ||
* @mjneil Cleanup event bindings when reinitialized (#44) | ||
* @mkody Fix typo in French translation (#39) | ||
@@ -7,0 +8,0 @@ * @vdeshpande Close-button errors message accessible fix (#40) |
@@ -106,4 +106,5 @@ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | ||
*/ | ||
var monitorPlayback = function monitorPlayback(player, options) { | ||
var initPlugin = function initPlugin(player, options) { | ||
var monitor = undefined; | ||
var listeners = []; | ||
@@ -132,4 +133,2 @@ // clears the previous monitor timeout and sets up a new one | ||
var listeners = []; | ||
// clear any previously registered listeners | ||
@@ -152,7 +151,7 @@ var cleanup = function cleanup() { | ||
if (player.paused()) { | ||
return cleanup(); | ||
return resetMonitor(); | ||
} | ||
// playback isn't expected once the video has ended | ||
if (player.ended()) { | ||
return cleanup(); | ||
return resetMonitor(); | ||
} | ||
@@ -166,3 +165,3 @@ fn.call(this); | ||
player.on('play', function () { | ||
var onPlayStartMonitor = function onPlayStartMonitor() { | ||
var lastTime = 0; | ||
@@ -183,17 +182,5 @@ | ||
healthcheck('progress', resetMonitor); | ||
}); | ||
}; | ||
player.on('dispose', function () { | ||
cleanup(); | ||
}); | ||
}; | ||
// Setup Custom Error Conditions | ||
var initCustomErrorConditions = function initCustomErrorConditions(player, options) { | ||
// PLAYER_ERR_TIMEOUT | ||
monitorPlayback(player, options); | ||
// PLAYER_ERR_NO_SRC | ||
player.on('play', function () { | ||
var onPlayNoSource = function onPlayNoSource() { | ||
if (!player.currentSrc()) { | ||
@@ -205,14 +192,5 @@ player.error({ | ||
} | ||
}); | ||
}; | ||
}; | ||
/** | ||
* Set up the plugin. | ||
*/ | ||
var onPlayerReady = function onPlayerReady(player, options) { | ||
player.addClass('vjs-errors'); | ||
// Add to the error dialog when an error occurs | ||
player.on('error', function () { | ||
var onErrorHandler = function onErrorHandler() { | ||
var display = undefined; | ||
@@ -260,6 +238,29 @@ var details = ''; | ||
}); | ||
}; | ||
var onDisposeHandler = function onDisposeHandler() { | ||
cleanup(); | ||
player.removeClass('vjs-errors'); | ||
player.off('play', onPlayStartMonitor); | ||
player.off('play', onPlayNoSource); | ||
player.off('dispose', onDisposeHandler); | ||
player.off('error', onErrorHandler); | ||
}; | ||
var reInitPlugin = function reInitPlugin(newOptions) { | ||
onDisposeHandler(); | ||
initPlugin(player, _videoJs2['default'].mergeOptions(defaults, newOptions)); | ||
}; | ||
player.on('play', onPlayStartMonitor); | ||
player.on('play', onPlayNoSource); | ||
player.on('dispose', onDisposeHandler); | ||
player.on('error', onErrorHandler); | ||
player.ready(function () { | ||
player.addClass('vjs-errors'); | ||
}); | ||
// Initialize custom error conditions | ||
initCustomErrorConditions(player, options); | ||
player.errors = reInitPlugin; | ||
}; | ||
@@ -271,7 +272,3 @@ | ||
var errors = function errors(options) { | ||
var _this = this; | ||
this.ready(function () { | ||
onPlayerReady(_this, _videoJs2['default'].mergeOptions(defaults, options)); | ||
}); | ||
initPlugin(this, _videoJs2['default'].mergeOptions(defaults, options)); | ||
}; | ||
@@ -405,2 +402,23 @@ | ||
_qunit2['default'].test('the plugin cleans up after its previous incarnation when called again', function (assert) { | ||
var errors = 0; | ||
this.player.on('error', function () { | ||
return errors++; | ||
}); | ||
// Call plugin multiple times | ||
this.player.errors(); | ||
this.player.errors(); | ||
// Tick the clock forward enough to trigger the player to be "ready". | ||
this.clock.tick(1); | ||
this.player.trigger('play'); | ||
assert.strictEqual(errors, 1, 'emitted a single error'); | ||
assert.strictEqual(this.player.error().code, -1, 'error code is -1'); | ||
assert.strictEqual(this.player.error().type, 'PLAYER_ERR_NO_SRC'); | ||
}); | ||
_qunit2['default'].test('when dispose is triggered should not throw error ', function (assert) { | ||
@@ -407,0 +425,0 @@ this.player.src(sources); |
/** | ||
* videojs-errors | ||
* @version 1.1.0 | ||
* @version 1.1.1 | ||
* @copyright 2016 Brightcove | ||
@@ -112,4 +112,5 @@ * @license Apache-2.0 | ||
*/ | ||
var monitorPlayback = function monitorPlayback(player, options) { | ||
var initPlugin = function initPlugin(player, options) { | ||
var monitor = undefined; | ||
var listeners = []; | ||
@@ -138,4 +139,2 @@ // clears the previous monitor timeout and sets up a new one | ||
var listeners = []; | ||
// clear any previously registered listeners | ||
@@ -158,7 +157,7 @@ var cleanup = function cleanup() { | ||
if (player.paused()) { | ||
return cleanup(); | ||
return resetMonitor(); | ||
} | ||
// playback isn't expected once the video has ended | ||
if (player.ended()) { | ||
return cleanup(); | ||
return resetMonitor(); | ||
} | ||
@@ -172,3 +171,3 @@ fn.call(this); | ||
player.on('play', function () { | ||
var onPlayStartMonitor = function onPlayStartMonitor() { | ||
var lastTime = 0; | ||
@@ -189,17 +188,5 @@ | ||
healthcheck('progress', resetMonitor); | ||
}); | ||
}; | ||
player.on('dispose', function () { | ||
cleanup(); | ||
}); | ||
}; | ||
// Setup Custom Error Conditions | ||
var initCustomErrorConditions = function initCustomErrorConditions(player, options) { | ||
// PLAYER_ERR_TIMEOUT | ||
monitorPlayback(player, options); | ||
// PLAYER_ERR_NO_SRC | ||
player.on('play', function () { | ||
var onPlayNoSource = function onPlayNoSource() { | ||
if (!player.currentSrc()) { | ||
@@ -211,14 +198,5 @@ player.error({ | ||
} | ||
}); | ||
}; | ||
}; | ||
/** | ||
* Set up the plugin. | ||
*/ | ||
var onPlayerReady = function onPlayerReady(player, options) { | ||
player.addClass('vjs-errors'); | ||
// Add to the error dialog when an error occurs | ||
player.on('error', function () { | ||
var onErrorHandler = function onErrorHandler() { | ||
var display = undefined; | ||
@@ -266,6 +244,29 @@ var details = ''; | ||
}); | ||
}; | ||
var onDisposeHandler = function onDisposeHandler() { | ||
cleanup(); | ||
player.removeClass('vjs-errors'); | ||
player.off('play', onPlayStartMonitor); | ||
player.off('play', onPlayNoSource); | ||
player.off('dispose', onDisposeHandler); | ||
player.off('error', onErrorHandler); | ||
}; | ||
var reInitPlugin = function reInitPlugin(newOptions) { | ||
onDisposeHandler(); | ||
initPlugin(player, _videoJs2['default'].mergeOptions(defaults, newOptions)); | ||
}; | ||
player.on('play', onPlayStartMonitor); | ||
player.on('play', onPlayNoSource); | ||
player.on('dispose', onDisposeHandler); | ||
player.on('error', onErrorHandler); | ||
player.ready(function () { | ||
player.addClass('vjs-errors'); | ||
}); | ||
// Initialize custom error conditions | ||
initCustomErrorConditions(player, options); | ||
player.errors = reInitPlugin; | ||
}; | ||
@@ -277,7 +278,3 @@ | ||
var errors = function errors(options) { | ||
var _this = this; | ||
this.ready(function () { | ||
onPlayerReady(_this, _videoJs2['default'].mergeOptions(defaults, options)); | ||
}); | ||
initPlugin(this, _videoJs2['default'].mergeOptions(defaults, options)); | ||
}; | ||
@@ -284,0 +281,0 @@ |
/** | ||
* videojs-errors | ||
* @version 1.1.0 | ||
* @version 1.1.1 | ||
* @copyright 2016 Brightcove | ||
* @license Apache-2.0 | ||
*/ | ||
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var o;o="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,o.videojsErrors=e()}}(function(){return function e(o,n,t){function i(d,l){if(!n[d]){if(!o[d]){var s="function"==typeof require&&require;if(!l&&s)return s(d,!0);if(r)return r(d,!0);var a=new Error("Cannot find module '"+d+"'");throw a.code="MODULE_NOT_FOUND",a}var u=n[d]={exports:{}};o[d][0].call(u.exports,function(e){var n=o[d][1][e];return i(n?n:e)},u,u.exports,e,o,n,t)}return n[d].exports}for(var r="function"==typeof require&&require,d=0;d<t.length;d++)i(t[d]);return i}({1:[function(e,o,n){},{}],2:[function(e,o,n){(function(n){var t="undefined"!=typeof n?n:"undefined"!=typeof window?window:{},i=e("min-document");if("undefined"!=typeof document)o.exports=document;else{var r=t["__GLOBAL_DOCUMENT_CACHE@4"];r||(r=t["__GLOBAL_DOCUMENT_CACHE@4"]=i),o.exports=r}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"min-document":1}],3:[function(e,o,n){(function(e){"undefined"!=typeof window?o.exports=window:"undefined"!=typeof e?o.exports=e:"undefined"!=typeof self?o.exports=self:o.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,o,n){(function(t){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var r="undefined"!=typeof window?window.videojs:"undefined"!=typeof t?t.videojs:null,d=i(r),l=e("global/window"),s=i(l),a=e("global/document"),u=i(a),f=d["default"].getComponent("Flash"),c={header:"",code:"",message:"",timeout:45e3,errors:{1:{type:"MEDIA_ERR_ABORTED",headline:"The video download was cancelled"},2:{type:"MEDIA_ERR_NETWORK",headline:"The video connection was lost, please confirm you are connected to the internet"},3:{type:"MEDIA_ERR_DECODE",headline:"The video is bad or in a format that cannot be played on your browser"},4:{type:"MEDIA_ERR_SRC_NOT_SUPPORTED",headline:"This video is either unavailable or not supported in this browser"},5:{type:"MEDIA_ERR_ENCRYPTED",headline:"The video you are trying to watch is encrypted and we do not know how to decrypt it"},unknown:{type:"MEDIA_ERR_UNKNOWN",headline:"An unanticipated problem was encountered, check back soon and try again"},"-1":{type:"PLAYER_ERR_NO_SRC",headline:"No video has been loaded"},"-2":{type:"PLAYER_ERR_TIMEOUT",headline:"Could not download the video"}}},p=function(e,o){var n=void 0,t=function(){s["default"].clearTimeout(n),n=s["default"].setTimeout(function(){e.error()||e.paused()||e.ended()||e.error({code:-2,type:"PLAYER_ERR_TIMEOUT"})},o.timeout),e.error()&&-2===e.error().code&&e.error(null)},i=[],r=function(){for(var o=void 0;i.length;)o=i.shift(),e.off(o[0],o[1]);s["default"].clearTimeout(n)},d=function(o,n){var t=function(){return e.paused()?r():e.ended()?r():void n.call(this)};e.on(o,t),i.push([o,t])};e.on("play",function(){var o=0;r(),t(),d(["timeupdate","adtimeupdate"],function(){var n=e.currentTime();n!==o&&(o=n,t())}),d("progress",t)}),e.on("dispose",function(){r()})},v=function(e,o){p(e,o),e.on("play",function(){e.currentSrc()||e.error({code:-1,type:"PLAYER_ERR_NO_SRC"})})},h=function(e,o){e.addClass("vjs-errors"),e.on("error",function(){var n=void 0,t="",i=e.error(),r=u["default"].createElement("div");if(i){if(i=d["default"].mergeOptions(i,o.errors[i.code||0]),i.message&&(t='<div class="vjs-errors-details">'+e.localize("Technical details")+'\n : <div class="vjs-errors-message">'+e.localize(i.message)+"</div>\n </div>"),4===i.code&&!f.isSupported()){var l=e.localize(" * If you are using an older browser please try upgrading or installing Flash.");t+='<span class="vjs-errors-flashmessage">'+l+"</span>"}n=e.getChild("errorDisplay"),n.getChild("closeButton")&&n.removeChild("closeButton"),n.closeable(!0),r.className="vjs-errors-dialog",r.id="vjs-errors-dialog",r.innerHTML='<div class="vjs-errors-content-container">\n <h2 class="vjs-errors-headline">'+this.localize(i.headline)+"</h2>\n <div><b>"+this.localize("Error Code")+"</b>: "+(i.type||i.code)+"</div>\n "+t+'\n </div>\n <div class="vjs-errors-ok-button-container">\n <button class="vjs-errors-ok-button">'+this.localize("OK")+"</button>\n </div>",n.fillWith(r),n.contentEl().firstChild.appendChild(n.getChild("closeButton").el()),(e.width()<=600||e.height()<=250)&&n.addClass("vjs-xs");var s=n.el().querySelector(".vjs-errors-ok-button");d["default"].on(s,"click",function(){n.close()})}}),v(e,o)},y=function(e){var o=this;this.ready(function(){h(o,d["default"].mergeOptions(c,e))})};d["default"].plugin("errors",y),n["default"]=y,o.exports=n["default"]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"global/document":2,"global/window":3}]},{},[4])(4)}); | ||
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var o;o="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,o.videojsErrors=e()}}(function(){return function e(o,n,t){function i(d,l){if(!n[d]){if(!o[d]){var s="function"==typeof require&&require;if(!l&&s)return s(d,!0);if(r)return r(d,!0);var a=new Error("Cannot find module '"+d+"'");throw a.code="MODULE_NOT_FOUND",a}var f=n[d]={exports:{}};o[d][0].call(f.exports,function(e){var n=o[d][1][e];return i(n?n:e)},f,f.exports,e,o,n,t)}return n[d].exports}for(var r="function"==typeof require&&require,d=0;d<t.length;d++)i(t[d]);return i}({1:[function(e,o,n){},{}],2:[function(e,o,n){(function(n){var t="undefined"!=typeof n?n:"undefined"!=typeof window?window:{},i=e("min-document");if("undefined"!=typeof document)o.exports=document;else{var r=t["__GLOBAL_DOCUMENT_CACHE@4"];r||(r=t["__GLOBAL_DOCUMENT_CACHE@4"]=i),o.exports=r}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"min-document":1}],3:[function(e,o,n){(function(e){"undefined"!=typeof window?o.exports=window:"undefined"!=typeof e?o.exports=e:"undefined"!=typeof self?o.exports=self:o.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,o,n){(function(t){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var r="undefined"!=typeof window?window.videojs:"undefined"!=typeof t?t.videojs:null,d=i(r),l=e("global/window"),s=i(l),a=e("global/document"),f=i(a),u=d.default.getComponent("Flash"),c={header:"",code:"",message:"",timeout:45e3,errors:{1:{type:"MEDIA_ERR_ABORTED",headline:"The video download was cancelled"},2:{type:"MEDIA_ERR_NETWORK",headline:"The video connection was lost, please confirm you are connected to the internet"},3:{type:"MEDIA_ERR_DECODE",headline:"The video is bad or in a format that cannot be played on your browser"},4:{type:"MEDIA_ERR_SRC_NOT_SUPPORTED",headline:"This video is either unavailable or not supported in this browser"},5:{type:"MEDIA_ERR_ENCRYPTED",headline:"The video you are trying to watch is encrypted and we do not know how to decrypt it"},unknown:{type:"MEDIA_ERR_UNKNOWN",headline:"An unanticipated problem was encountered, check back soon and try again"},"-1":{type:"PLAYER_ERR_NO_SRC",headline:"No video has been loaded"},"-2":{type:"PLAYER_ERR_TIMEOUT",headline:"Could not download the video"}}},p=function e(o,n){var t=void 0,i=[],r=function(){s.default.clearTimeout(t),t=s.default.setTimeout(function(){o.error()||o.paused()||o.ended()||o.error({code:-2,type:"PLAYER_ERR_TIMEOUT"})},n.timeout),o.error()&&o.error().code===-2&&o.error(null)},l=function(){for(var e=void 0;i.length;)e=i.shift(),o.off(e[0],e[1]);s.default.clearTimeout(t)},a=function(e,n){var t=function(){return o.paused()?r():o.ended()?r():void n.call(this)};o.on(e,t),i.push([e,t])},p=function(){var e=0;l(),r(),a(["timeupdate","adtimeupdate"],function(){var n=o.currentTime();n!==e&&(e=n,r())}),a("progress",r)},v=function(){o.currentSrc()||o.error({code:-1,type:"PLAYER_ERR_NO_SRC"})},h=function(){var e=void 0,t="",i=o.error(),r=f.default.createElement("div");if(i){if(i=d.default.mergeOptions(i,n.errors[i.code||0]),i.message&&(t='<div class="vjs-errors-details">'+o.localize("Technical details")+'\n : <div class="vjs-errors-message">'+o.localize(i.message)+"</div>\n </div>"),4===i.code&&!u.isSupported()){var l=o.localize(" * If you are using an older browser please try upgrading or installing Flash.");t+='<span class="vjs-errors-flashmessage">'+l+"</span>"}e=o.getChild("errorDisplay"),e.getChild("closeButton")&&e.removeChild("closeButton"),e.closeable(!0),r.className="vjs-errors-dialog",r.id="vjs-errors-dialog",r.innerHTML='<div class="vjs-errors-content-container">\n <h2 class="vjs-errors-headline">'+this.localize(i.headline)+"</h2>\n <div><b>"+this.localize("Error Code")+"</b>: "+(i.type||i.code)+"</div>\n "+t+'\n </div>\n <div class="vjs-errors-ok-button-container">\n <button class="vjs-errors-ok-button">'+this.localize("OK")+"</button>\n </div>",e.fillWith(r),e.contentEl().firstChild.appendChild(e.getChild("closeButton").el()),(o.width()<=600||o.height()<=250)&&e.addClass("vjs-xs");var s=e.el().querySelector(".vjs-errors-ok-button");d.default.on(s,"click",function(){e.close()})}},y=function e(){l(),o.removeClass("vjs-errors"),o.off("play",p),o.off("play",v),o.off("dispose",e),o.off("error",h)},w=function(n){y(),e(o,d.default.mergeOptions(c,n))};o.on("play",p),o.on("play",v),o.on("dispose",y),o.on("error",h),o.ready(function(){o.addClass("vjs-errors")}),o.errors=w},v=function(e){p(this,d.default.mergeOptions(c,e))};d.default.plugin("errors",v),n.default=v,o.exports=n.default}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"global/document":2,"global/window":3}]},{},[4])(4)}); |
@@ -70,4 +70,5 @@ 'use strict'; | ||
*/ | ||
var monitorPlayback = function monitorPlayback(player, options) { | ||
var initPlugin = function initPlugin(player, options) { | ||
var monitor = undefined; | ||
var listeners = []; | ||
@@ -96,4 +97,2 @@ // clears the previous monitor timeout and sets up a new one | ||
var listeners = []; | ||
// clear any previously registered listeners | ||
@@ -116,7 +115,7 @@ var cleanup = function cleanup() { | ||
if (player.paused()) { | ||
return cleanup(); | ||
return resetMonitor(); | ||
} | ||
// playback isn't expected once the video has ended | ||
if (player.ended()) { | ||
return cleanup(); | ||
return resetMonitor(); | ||
} | ||
@@ -130,3 +129,3 @@ fn.call(this); | ||
player.on('play', function () { | ||
var onPlayStartMonitor = function onPlayStartMonitor() { | ||
var lastTime = 0; | ||
@@ -147,17 +146,5 @@ | ||
healthcheck('progress', resetMonitor); | ||
}); | ||
}; | ||
player.on('dispose', function () { | ||
cleanup(); | ||
}); | ||
}; | ||
// Setup Custom Error Conditions | ||
var initCustomErrorConditions = function initCustomErrorConditions(player, options) { | ||
// PLAYER_ERR_TIMEOUT | ||
monitorPlayback(player, options); | ||
// PLAYER_ERR_NO_SRC | ||
player.on('play', function () { | ||
var onPlayNoSource = function onPlayNoSource() { | ||
if (!player.currentSrc()) { | ||
@@ -169,14 +156,5 @@ player.error({ | ||
} | ||
}); | ||
}; | ||
}; | ||
/** | ||
* Set up the plugin. | ||
*/ | ||
var onPlayerReady = function onPlayerReady(player, options) { | ||
player.addClass('vjs-errors'); | ||
// Add to the error dialog when an error occurs | ||
player.on('error', function () { | ||
var onErrorHandler = function onErrorHandler() { | ||
var display = undefined; | ||
@@ -224,6 +202,29 @@ var details = ''; | ||
}); | ||
}; | ||
var onDisposeHandler = function onDisposeHandler() { | ||
cleanup(); | ||
player.removeClass('vjs-errors'); | ||
player.off('play', onPlayStartMonitor); | ||
player.off('play', onPlayNoSource); | ||
player.off('dispose', onDisposeHandler); | ||
player.off('error', onErrorHandler); | ||
}; | ||
var reInitPlugin = function reInitPlugin(newOptions) { | ||
onDisposeHandler(); | ||
initPlugin(player, _videoJs2['default'].mergeOptions(defaults, newOptions)); | ||
}; | ||
player.on('play', onPlayStartMonitor); | ||
player.on('play', onPlayNoSource); | ||
player.on('dispose', onDisposeHandler); | ||
player.on('error', onErrorHandler); | ||
player.ready(function () { | ||
player.addClass('vjs-errors'); | ||
}); | ||
// Initialize custom error conditions | ||
initCustomErrorConditions(player, options); | ||
player.errors = reInitPlugin; | ||
}; | ||
@@ -235,7 +236,3 @@ | ||
var errors = function errors(options) { | ||
var _this = this; | ||
this.ready(function () { | ||
onPlayerReady(_this, _videoJs2['default'].mergeOptions(defaults, options)); | ||
}); | ||
initPlugin(this, _videoJs2['default'].mergeOptions(defaults, options)); | ||
}; | ||
@@ -242,0 +239,0 @@ |
{ | ||
"name": "videojs-errors", | ||
"version": "1.1.0", | ||
"version": "1.1.1", | ||
"author": "Brightcove", | ||
@@ -5,0 +5,0 @@ "description": "A VideoJS plugin for custom error reporting", |
@@ -56,4 +56,5 @@ import videojs from 'video.js'; | ||
*/ | ||
const monitorPlayback = function(player, options) { | ||
const initPlugin = function(player, options) { | ||
let monitor; | ||
let listeners = []; | ||
@@ -82,4 +83,2 @@ // clears the previous monitor timeout and sets up a new one | ||
let listeners = []; | ||
// clear any previously registered listeners | ||
@@ -102,7 +101,7 @@ const cleanup = function() { | ||
if (player.paused()) { | ||
return cleanup(); | ||
return resetMonitor(); | ||
} | ||
// playback isn't expected once the video has ended | ||
if (player.ended()) { | ||
return cleanup(); | ||
return resetMonitor(); | ||
} | ||
@@ -116,3 +115,3 @@ fn.call(this); | ||
player.on('play', function() { | ||
const onPlayStartMonitor = function() { | ||
let lastTime = 0; | ||
@@ -133,17 +132,5 @@ | ||
healthcheck('progress', resetMonitor); | ||
}); | ||
}; | ||
player.on('dispose', function() { | ||
cleanup(); | ||
}); | ||
}; | ||
// Setup Custom Error Conditions | ||
const initCustomErrorConditions = function(player, options) { | ||
// PLAYER_ERR_TIMEOUT | ||
monitorPlayback(player, options); | ||
// PLAYER_ERR_NO_SRC | ||
player.on('play', function() { | ||
const onPlayNoSource = function() { | ||
if (!player.currentSrc()) { | ||
@@ -155,14 +142,5 @@ player.error({ | ||
} | ||
}); | ||
}; | ||
}; | ||
/** | ||
* Set up the plugin. | ||
*/ | ||
const onPlayerReady = (player, options) => { | ||
player.addClass('vjs-errors'); | ||
// Add to the error dialog when an error occurs | ||
player.on('error', function() { | ||
const onErrorHandler = function() { | ||
let display; | ||
@@ -221,6 +199,29 @@ let details = ''; | ||
}); | ||
}; | ||
const onDisposeHandler = function() { | ||
cleanup(); | ||
player.removeClass('vjs-errors'); | ||
player.off('play', onPlayStartMonitor); | ||
player.off('play', onPlayNoSource); | ||
player.off('dispose', onDisposeHandler); | ||
player.off('error', onErrorHandler); | ||
}; | ||
const reInitPlugin = function(newOptions) { | ||
onDisposeHandler(); | ||
initPlugin(player, videojs.mergeOptions(defaults, newOptions)); | ||
}; | ||
player.on('play', onPlayStartMonitor); | ||
player.on('play', onPlayNoSource); | ||
player.on('dispose', onDisposeHandler); | ||
player.on('error', onErrorHandler); | ||
player.ready(() => { | ||
player.addClass('vjs-errors'); | ||
}); | ||
// Initialize custom error conditions | ||
initCustomErrorConditions(player, options); | ||
player.errors = reInitPlugin; | ||
}; | ||
@@ -232,5 +233,3 @@ | ||
const errors = function(options) { | ||
this.ready(() => { | ||
onPlayerReady(this, videojs.mergeOptions(defaults, options)); | ||
}); | ||
initPlugin(this, videojs.mergeOptions(defaults, options)); | ||
}; | ||
@@ -237,0 +236,0 @@ |
@@ -111,2 +111,22 @@ import document from 'global/document'; | ||
QUnit.test('the plugin cleans up after its previous incarnation when called again', | ||
function(assert) { | ||
let errors = 0; | ||
this.player.on('error', () => errors++); | ||
// Call plugin multiple times | ||
this.player.errors(); | ||
this.player.errors(); | ||
// Tick the clock forward enough to trigger the player to be "ready". | ||
this.clock.tick(1); | ||
this.player.trigger('play'); | ||
assert.strictEqual(errors, 1, 'emitted a single error'); | ||
assert.strictEqual(this.player.error().code, -1, 'error code is -1'); | ||
assert.strictEqual(this.player.error().type, 'PLAYER_ERR_NO_SRC'); | ||
}); | ||
QUnit.test('when dispose is triggered should not throw error ', function(assert) { | ||
@@ -113,0 +133,0 @@ this.player.src(sources); |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
95623
1785
1