UNPKG

npaw-plugin-adapters

Version:
93 lines (84 loc) 2.6 kB
export default class HbbTvAdapter { checkExistsPlayer() { try { return this.checkExistsObjectOnPage(this.player); } catch (err) { return true; } } getPlayerName() { return 'Hbbtv'; } registerListeners() { this.states = ['STOPPED', 'PLAYING', 'PAUSED', 'CONNECTING', 'BUFFERING', 'FINISHED', 'ERROR']; this.monitorPlayhead(false, true); if (this.player) { this.player.onPlayStateChange = function(e) { this.playStateChangeListener(); }.bind(this); if (this.player._video) { this.player._video.onerror = function(e) { this.onErrorListener(e); }.bind(this) } } else { Log.error('The player reference set to the adapter is invalid.'); } } getResource() { return this.player.data || this.player.src; } playStateChangeListener() { if (!this.player) return; this.firePlayerLog('stateValue' + this.player.playState, {}); switch (this.player.playState) { case 0: this.firePlayerLog('stopState', {}); this.fireStop({}, 'stopState'); break; case 1: if (this.bufferPlayhead && Math.abs(this.bufferPlayhead - this.player.playPosition) > 10) { this.fireSeekBegin({}, true, 'playingState'); this.bufferPlayhead = undefined; } this.firePlayerLog('playingState', {}); this.fireResume({}, 'playingState'); this.fireSeekEnd({}, 'playingState'); this.fireBufferEnd({}, 'playingState'); this.fireJoin({}, 'playingState'); break; case 2: this.firePlayerLog('pausedState', {}); this.firePause({}, 'pausedState'); break; case 3: this.firePlayerLog('connectionState', {}); this.fireStart({}, 'connectionState'); break; case 4: this.bufferPlayhead = this.player.playPosition; this.firePlayerLog('bufferingState', {}); this.fireStart({}, 'bufferingState'); this.fireBufferBegin({}, false, 'bufferingState'); break; case 5: this.firePlayerLog('finishedState', {}); this.fireStop({}, 'finishedState'); break; } } onErrorListener(e) { this.firePlayerLog('onErrorListener', {}); this.fireError('FAILURE', 'FAILURE', null, null, 'onErrorListener'); this.fireStop({}, 'onErrorListener'); } getPlayhead() { return this.player.playPosition / 1000; } getDuration() { return this.player.playTime / 1000; } getVersion() { return '7.0.5-hbbtvhtml5-jsclass'; } }