1
0
mirror of https://github.com/videojs/video.js.git synced 2025-04-15 11:56:32 +02:00

fix: fix audio and video track selection (#5890)

Fixes #5887
This commit is contained in:
Brandon Casey 2019-03-25 12:02:33 -04:00 committed by Gary Katsevman
parent 139178c12b
commit 3dc6fbf6e7
4 changed files with 39 additions and 41 deletions

View File

@ -72,8 +72,7 @@ class AudioTrackList extends TrackList {
return; return;
} }
if (!this.enabledChange_) { track.enabledChange_ = () => {
this.enabledChange_ = () => {
// when we are disabling other tracks (since we don't support // when we are disabling other tracks (since we don't support
// more than one track at a time) we will set changing_ // more than one track at a time) we will set changing_
// to true so that we don't trigger additional change events // to true so that we don't trigger additional change events
@ -85,20 +84,20 @@ class AudioTrackList extends TrackList {
this.changing_ = false; this.changing_ = false;
this.trigger('change'); this.trigger('change');
}; };
}
/** /**
* @listens AudioTrack#enabledchange * @listens AudioTrack#enabledchange
* @fires TrackList#change * @fires TrackList#change
*/ */
track.addEventListener('enabledchange', this.enabledChange_); track.addEventListener('enabledchange', track.enabledChange_);
} }
removeTrack(rtrack) { removeTrack(rtrack) {
super.removeTrack(rtrack); super.removeTrack(rtrack);
if (rtrack.removeEventListener && this.enabledChange_) { if (rtrack.removeEventListener && rtrack.enabledChange_) {
rtrack.removeEventListener('enabledchange', this.enabledChange_); rtrack.removeEventListener('enabledchange', rtrack.enabledChange_);
rtrack.enabledChange_ = null;
} }
} }
} }

View File

@ -87,8 +87,7 @@ class VideoTrackList extends TrackList {
return; return;
} }
if (!this.selectedChange_) { track.selectedChange_ = () => {
this.selectedChange_ = () => {
if (this.changing_) { if (this.changing_) {
return; return;
} }
@ -97,20 +96,20 @@ class VideoTrackList extends TrackList {
this.changing_ = false; this.changing_ = false;
this.trigger('change'); this.trigger('change');
}; };
}
/** /**
* @listens VideoTrack#selectedchange * @listens VideoTrack#selectedchange
* @fires TrackList#change * @fires TrackList#change
*/ */
track.addEventListener('selectedchange', this.selectedChange_); track.addEventListener('selectedchange', track.selectedChange_);
} }
removeTrack(rtrack) { removeTrack(rtrack) {
super.removeTrack(rtrack); super.removeTrack(rtrack);
if (rtrack.removeEventListener && this.selectedChange_) { if (rtrack.removeEventListener && rtrack.selectedChange_) {
rtrack.removeEventListener('selectedchange', this.selectedChange_); rtrack.removeEventListener('selectedchange', rtrack.selectedChange_);
rtrack.selectedChange_ = null;
} }
} }
} }

View File

@ -48,14 +48,14 @@ QUnit.test('only one track is ever enabled', function(assert) {
assert.equal(track2.enabled, false, 'track2 is disabled'); assert.equal(track2.enabled, false, 'track2 is disabled');
assert.equal(track3.enabled, true, 'track3 is enabled'); assert.equal(track3.enabled, true, 'track3 is enabled');
track.enabled = true; track2.enabled = true;
assert.equal(track.enabled, true, 'track is disabled'); assert.equal(track.enabled, false, 'track is disabled');
assert.equal(track2.enabled, false, 'track2 is disabled'); assert.equal(track2.enabled, true, 'track2 is enabled');
assert.equal(track3.enabled, false, 'track3 is disabled'); assert.equal(track3.enabled, false, 'track3 is disabled');
list.addTrack(track4); list.addTrack(track4);
assert.equal(track.enabled, true, 'track is enabled'); assert.equal(track.enabled, false, 'track is disabled');
assert.equal(track2.enabled, false, 'track2 is disabled'); assert.equal(track2.enabled, true, 'track2 is enabled');
assert.equal(track3.enabled, false, 'track3 is disabled'); assert.equal(track3.enabled, false, 'track3 is disabled');
assert.equal(track4.enabled, false, 'track4 is disabled'); assert.equal(track4.enabled, false, 'track4 is disabled');

View File

@ -48,14 +48,14 @@ QUnit.test('only one track is ever selected', function(assert) {
assert.equal(track2.selected, false, 'track2 is unselected'); assert.equal(track2.selected, false, 'track2 is unselected');
assert.equal(track3.selected, true, 'track3 is selected'); assert.equal(track3.selected, true, 'track3 is selected');
track.selected = true; track2.selected = true;
assert.equal(track.selected, true, 'track is unselected'); assert.equal(track.selected, false, 'track is unselected');
assert.equal(track2.selected, false, 'track2 is unselected'); assert.equal(track2.selected, true, 'track2 is selected');
assert.equal(track3.selected, false, 'track3 is unselected'); assert.equal(track3.selected, false, 'track3 is unselected');
list.addTrack(track4); list.addTrack(track4);
assert.equal(track.selected, true, 'track is selected'); assert.equal(track.selected, false, 'track is unselected');
assert.equal(track2.selected, false, 'track2 is unselected'); assert.equal(track2.selected, true, 'track2 is selected');
assert.equal(track3.selected, false, 'track3 is unselected'); assert.equal(track3.selected, false, 'track3 is unselected');
assert.equal(track4.selected, false, 'track4 is unselected'); assert.equal(track4.selected, false, 'track4 is unselected');