1
0
mirror of https://github.com/videojs/video.js.git synced 2025-02-02 11:34:50 +02:00

feat(tracks): Added option to disable native tracks (#3786)

This adds nativeAudioTracks and nativeVideoTracks tech options, this will disable hooking into the native track APIs. This would be useful when using videojs-contrib-hls on Edge.
This commit is contained in:
forbesjo 2016-11-23 14:09:32 -05:00 committed by Gary Katsevman
parent d69551ac80
commit 9b9f89e5b3
2 changed files with 67 additions and 1 deletions

View File

@ -80,7 +80,13 @@ class Tech extends Component {
this.manualTimeUpdatesOn();
}
if (options.nativeCaptions === false || options.nativeTextTracks === false) {
['Text', 'Audio', 'Video'].forEach((track) => {
if (options[`native${track}Tracks`] === false) {
this[`featuresNative${track}Tracks`] = false;
}
});
if (options.nativeCaptions === false) {
this.featuresNativeTextTracks = false;
}

View File

@ -301,6 +301,30 @@ if (Html5.supportsNativeTextTracks()) {
assert.equal(adds[2][0], 'removetrack', 'removetrack event handler added');
});
QUnit.test('does not add native textTrack listeners when disabled', function(assert) {
const events = [];
const tt = {
length: 0,
addEventListener: (type, fn) => events.push([type, fn]),
removeEventListener: (type, fn) => events.push([type, fn])
};
const el = document.createElement('div');
el.textTracks = tt;
/* eslint-disable no-unused-vars */
const htmlTech = new Html5({el, nativeTextTracks: false});
/* eslint-enable no-unused-vars */
assert.equal(events.length, 0, 'no listeners added');
/* eslint-disable no-unused-vars */
const htmlTechAlternate = new Html5({el, nativeCaptions: false});
/* eslint-enable no-unused-vars */
assert.equal(events.length, 0, 'no listeners added');
});
QUnit.test('remove all tracks from emulated list on dispose', function(assert) {
const adds = [];
const rems = [];
@ -351,6 +375,24 @@ if (Html5.supportsNativeAudioTracks()) {
assert.equal(adds[2][0], 'removetrack', 'removetrack event handler added');
});
QUnit.test('does not add native audioTrack listeners when disabled', function(assert) {
const events = [];
const at = {
length: 0,
addEventListener: (type, fn) => events.push([type, fn]),
removeEventListener: (type, fn) => events.push([type, fn])
};
const el = document.createElement('div');
el.audioTracks = at;
/* eslint-disable no-unused-vars */
const htmlTech = new Html5({el, nativeAudioTracks: false});
/* eslint-enable no-unused-vars */
assert.equal(events.length, 0, 'no listeners added');
});
QUnit.test('remove all tracks from emulated list on dispose', function(assert) {
const adds = [];
const rems = [];
@ -401,6 +443,24 @@ if (Html5.supportsNativeVideoTracks()) {
assert.equal(adds[2][0], 'removetrack', 'removetrack event handler added');
});
QUnit.test('does not add native audioTrack listeners when disabled', function(assert) {
const events = [];
const vt = {
length: 0,
addEventListener: (type, fn) => events.push([type, fn]),
removeEventListener: (type, fn) => events.push([type, fn])
};
const el = document.createElement('div');
el.videoTracks = vt;
/* eslint-disable no-unused-vars */
const htmlTech = new Html5({el, nativeVideoTracks: false});
/* eslint-enable no-unused-vars */
assert.equal(events.length, 0, 'no listeners added');
});
QUnit.test('remove all tracks from emulated list on dispose', function(assert) {
const adds = [];
const rems = [];