mirror of
https://github.com/videojs/video.js.git
synced 2025-01-02 06:32:07 +02:00
fix(player): load method fails to reset the media element to its initial state when the VHS is used (#8274)
This commit is contained in:
parent
665154fa41
commit
35fad1d454
@ -3533,6 +3533,14 @@ class Player extends Component {
|
||||
* Begin loading the src data.
|
||||
*/
|
||||
load() {
|
||||
// Workaround to use the load method with the VHS.
|
||||
// Does not cover the case when the load method is called directly from the mediaElement.
|
||||
if (this.tech_.vhs) {
|
||||
this.src(this.currentSource());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this.techCall_('load');
|
||||
}
|
||||
|
||||
|
@ -3231,6 +3231,34 @@ QUnit.test('turning on audioPosterMode when audioOnlyMode is already on will tur
|
||||
});
|
||||
});
|
||||
|
||||
QUnit.test('player#load resets the media element to its initial state', function(assert) {
|
||||
const player = TestHelpers.makePlayer({});
|
||||
|
||||
player.src({ src: 'http://vjs.zencdn.net/v/oceans2.mp4', type: 'video/mp4' });
|
||||
|
||||
// Declaring spies here avoids spying on previous calls
|
||||
const techGet_ = sinon.spy(player, 'techCall_');
|
||||
const src = sinon.spy(player, 'src');
|
||||
|
||||
player.load();
|
||||
|
||||
// Case when the VHS tech is not used
|
||||
assert.ok(techGet_.calledOnce, 'techCall_ was called once');
|
||||
assert.ok(src.notCalled, 'src was not called');
|
||||
|
||||
// Simulate the VHS tech
|
||||
player.tech_.vhs = true;
|
||||
player.load();
|
||||
|
||||
// Case when the VHS tech is used
|
||||
assert.ok(techGet_.calledOnce, 'techCall_ remains the same');
|
||||
assert.ok(src.calledOnce, 'src was called');
|
||||
|
||||
techGet_.restore();
|
||||
src.restore();
|
||||
player.dispose();
|
||||
});
|
||||
|
||||
QUnit.test('crossOrigin value should be maintained after loadMedia is called', function(assert) {
|
||||
const fixture = document.getElementById('qunit-fixture');
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user