mirror of
https://github.com/videojs/video.js.git
synced 2025-07-13 01:30:17 +02:00
@gesinger fixed handler explosion for cuechange events. closes #2849
This commit is contained in:
committed by
Gary Katsevman
parent
7171ea8d42
commit
72f77d77c9
@ -3,6 +3,7 @@ CHANGELOG
|
|||||||
|
|
||||||
## HEAD (Unreleased)
|
## HEAD (Unreleased)
|
||||||
* @gesinger checked for track changes before tech started listening ([view](https://github.com/videojs/video.js/pull/2835))
|
* @gesinger checked for track changes before tech started listening ([view](https://github.com/videojs/video.js/pull/2835))
|
||||||
|
* @gesinger fixed handler explosion for cuechange events ([view](https://github.com/videojs/video.js/pull/2849))
|
||||||
|
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
|
@ -321,9 +321,8 @@ class Tech extends Component {
|
|||||||
window['WebVTT'] = true;
|
window['WebVTT'] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
let textTracksChanges = Fn.bind(this, function() {
|
let updateDisplay = () => this.trigger('texttrackchange');
|
||||||
let updateDisplay = () => this.trigger('texttrackchange');
|
let textTracksChanges = () => {
|
||||||
|
|
||||||
updateDisplay();
|
updateDisplay();
|
||||||
|
|
||||||
for (let i = 0; i < tracks.length; i++) {
|
for (let i = 0; i < tracks.length; i++) {
|
||||||
@ -333,7 +332,7 @@ class Tech extends Component {
|
|||||||
track.addEventListener('cuechange', updateDisplay);
|
track.addEventListener('cuechange', updateDisplay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
textTracksChanges();
|
textTracksChanges();
|
||||||
tracks.addEventListener('change', textTracksChanges);
|
tracks.addEventListener('change', textTracksChanges);
|
||||||
|
@ -2,6 +2,7 @@ import ChaptersButton from '../../../src/js/control-bar/text-track-controls/chap
|
|||||||
import SubtitlesButton from '../../../src/js/control-bar/text-track-controls/subtitles-button.js';
|
import SubtitlesButton from '../../../src/js/control-bar/text-track-controls/subtitles-button.js';
|
||||||
import CaptionsButton from '../../../src/js/control-bar/text-track-controls/captions-button.js';
|
import CaptionsButton from '../../../src/js/control-bar/text-track-controls/captions-button.js';
|
||||||
|
|
||||||
|
import TextTrack from '../../../src/js/tracks/text-track.js';
|
||||||
import TextTrackDisplay from '../../../src/js/tracks/text-track-display.js';
|
import TextTrackDisplay from '../../../src/js/tracks/text-track-display.js';
|
||||||
import Html5 from '../../../src/js/tech/html5.js';
|
import Html5 from '../../../src/js/tech/html5.js';
|
||||||
import Flash from '../../../src/js/tech/flash.js';
|
import Flash from '../../../src/js/tech/flash.js';
|
||||||
@ -352,3 +353,48 @@ test('should check for text track changes when emulating text tracks', function(
|
|||||||
tech.emulateTextTracks();
|
tech.emulateTextTracks();
|
||||||
equal(numTextTrackChanges, 1, 'we got a texttrackchange event');
|
equal(numTextTrackChanges, 1, 'we got a texttrackchange event');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('removes cuechange event when text track is hidden for emulated tracks', function() {
|
||||||
|
let player = TestHelpers.makePlayer();
|
||||||
|
let tt = new TextTrack({
|
||||||
|
tech: player.tech_,
|
||||||
|
mode: 'showing'
|
||||||
|
});
|
||||||
|
tt.addCue({
|
||||||
|
id: '1',
|
||||||
|
startTime: 2,
|
||||||
|
endTime: 5
|
||||||
|
});
|
||||||
|
player.tech_.textTracks().addTrack_(tt);
|
||||||
|
player.tech_.emulateTextTracks();
|
||||||
|
|
||||||
|
let numTextTrackChanges = 0;
|
||||||
|
player.tech_.on('texttrackchange', function() {
|
||||||
|
numTextTrackChanges++;
|
||||||
|
});
|
||||||
|
|
||||||
|
tt.mode = 'showing';
|
||||||
|
equal(numTextTrackChanges, 1,
|
||||||
|
'texttrackchange should be called once for mode change');
|
||||||
|
tt.mode = 'showing';
|
||||||
|
equal(numTextTrackChanges, 2,
|
||||||
|
'texttrackchange should be called once for mode change');
|
||||||
|
|
||||||
|
player.tech_.currentTime = function() {
|
||||||
|
return 3;
|
||||||
|
};
|
||||||
|
player.tech_.trigger('timeupdate');
|
||||||
|
equal(numTextTrackChanges, 3,
|
||||||
|
'texttrackchange should be triggered once for the cuechange');
|
||||||
|
|
||||||
|
tt.mode = 'hidden';
|
||||||
|
equal(numTextTrackChanges, 4,
|
||||||
|
'texttrackchange should be called once for the mode change');
|
||||||
|
|
||||||
|
player.tech_.currentTime = function() {
|
||||||
|
return 7;
|
||||||
|
};
|
||||||
|
player.tech_.trigger('timeupdate');
|
||||||
|
equal(numTextTrackChanges, 4,
|
||||||
|
'texttrackchange should be not be called since mode is hidden');
|
||||||
|
});
|
||||||
|
Reference in New Issue
Block a user