Skip to content

Commit 1a1adf3

Browse files
authored
fix(player): address loss of crossOrigin value when loadMedia is called (#8085)
1 parent f1558c6 commit 1a1adf3

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

src/js/player.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4899,6 +4899,8 @@ class Player extends Component {
48994899
return;
49004900
}
49014901

4902+
const crossOrigin = this.crossOrigin();
4903+
49024904
this.reset();
49034905

49044906
// Clone the media object so it cannot be mutated from outside.
@@ -4914,6 +4916,10 @@ class Player extends Component {
49144916
}];
49154917
}
49164918

4919+
if (crossOrigin) {
4920+
this.crossOrigin(crossOrigin);
4921+
}
4922+
49174923
if (src) {
49184924
this.src(src);
49194925
}

test/unit/player.test.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3230,3 +3230,48 @@ QUnit.test('turning on audioPosterMode when audioOnlyMode is already on will tur
32303230
assert.notOk(player.audioOnlyMode(), 'audioOnlyMode is false');
32313231
});
32323232
});
3233+
3234+
QUnit.test('crossOrigin value should be maintained after loadMedia is called', function(assert) {
3235+
const fixture = document.getElementById('qunit-fixture');
3236+
3237+
const example1 = '<video id="example_1" class="video-js" preload="none"></video>';
3238+
const example2 = '<video id="example_2" class="video-js" preload="none"></video>';
3239+
const example3 = '<video id="example_3" class="video-js" crossorigin="anonymous" preload="none"></video>';
3240+
3241+
fixture.innerHTML += example1;
3242+
fixture.innerHTML += example2;
3243+
fixture.innerHTML += example3;
3244+
3245+
const tagExample1 = document.getElementById('example_1');
3246+
const tagExample2 = document.getElementById('example_2');
3247+
const tagExample3 = document.getElementById('example_3');
3248+
const playerExample1 = TestHelpers.makePlayer({techOrder: ['Html5']}, tagExample1);
3249+
const playerExample2 = TestHelpers.makePlayer({techOrder: ['Html5'], crossOrigin: 'use-credentials'}, tagExample2);
3250+
const playerExample3 = TestHelpers.makePlayer({techOrder: ['Html5']}, tagExample3);
3251+
3252+
this.clock.tick(1000);
3253+
3254+
playerExample1.crossOrigin('anonymous');
3255+
playerExample1.loadMedia({
3256+
src: 'foo.mp4'
3257+
});
3258+
playerExample2.loadMedia({
3259+
src: 'foo.mp4'
3260+
});
3261+
playerExample3.loadMedia({
3262+
src: 'foo.mp4'
3263+
});
3264+
3265+
assert.strictEqual(playerExample1.crossOrigin(), 'anonymous', 'crossOrigin value remains correct when assigned by the crossOrigin method and loadMedia is called');
3266+
assert.ok(tagExample1.crossOrigin === 'anonymous');
3267+
3268+
assert.strictEqual(playerExample2.crossOrigin(), 'use-credentials', 'crossOrigin value remains correct when passed through the options and loadMedia is called');
3269+
assert.ok(tagExample2.crossOrigin === 'use-credentials');
3270+
3271+
assert.strictEqual(playerExample3.crossOrigin(), 'anonymous', 'crossOrigin value remains correct when passed via the html property and loadMedia is called');
3272+
assert.ok(tagExample3.crossOrigin === 'anonymous');
3273+
3274+
playerExample1.dispose();
3275+
playerExample2.dispose();
3276+
playerExample3.dispose();
3277+
});

0 commit comments

Comments
 (0)