1
0
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:
André 2023-05-31 16:41:44 +02:00 committed by GitHub
parent 665154fa41
commit 35fad1d454
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 0 deletions

View File

@ -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');
}

View File

@ -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');