diff --git a/src/js/tech/html5.js b/src/js/tech/html5.js index af0a5481ec..a8e2accdf7 100644 --- a/src/js/tech/html5.js +++ b/src/js/tech/html5.js @@ -1321,7 +1321,7 @@ const mp4RE = /^video\/mp4/i; Html5.patchCanPlayType = function() { // Android 4.0 and above can play HLS to some extent but it reports being unable to do so - if (browser.ANDROID_VERSION >= 4.0) { + if (browser.ANDROID_VERSION >= 4.0 && !browser.IS_FIREFOX) { if (!canPlayType) { canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType; } diff --git a/test/unit/tech/html5.test.js b/test/unit/tech/html5.test.js index 63f058a2c4..270d879f7a 100644 --- a/test/unit/tech/html5.test.js +++ b/test/unit/tech/html5.test.js @@ -110,10 +110,12 @@ QUnit.test('patchCanPlayType patches canplaytype with our function, conditionall Html5.unpatchCanPlayType(); const oldAV = browser.ANDROID_VERSION; + const oldIsFirefox = browser.IS_FIREFOX; const video = document.createElement('video'); const canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType; browser.ANDROID_VERSION = 4.0; + browser.IS_FIREFOX = false; Html5.patchCanPlayType(); assert.notStrictEqual(video.canPlayType, @@ -131,14 +133,39 @@ QUnit.test('patchCanPlayType patches canplaytype with our function, conditionall 'patched canPlayType and function returned from unpatch are equal'); browser.ANDROID_VERSION = oldAV; + browser.IS_FIREFOX = oldIsFirefox; + Html5.unpatchCanPlayType(); +}); + +QUnit.test('patchCanPlayType doesn\'t patch canplaytype with our function in Firefox for Android', function(assert) { + // the patch runs automatically so we need to first unpatch + Html5.unpatchCanPlayType(); + + const oldAV = browser.ANDROID_VERSION; + const oldIsFirefox = browser.IS_FIREFOX; + const video = document.createElement('video'); + const canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType; + + browser.ANDROID_VERSION = 4.0; + browser.IS_FIREFOX = true; + Html5.patchCanPlayType(); + + assert.strictEqual(video.canPlayType, + canPlayType, + 'original canPlayType and patched canPlayType should be equal'); + + browser.ANDROID_VERSION = oldAV; + browser.IS_FIREFOX = oldIsFirefox; Html5.unpatchCanPlayType(); }); QUnit.test('should return maybe for HLS urls on Android 4.0 or above', function(assert) { const oldAV = browser.ANDROID_VERSION; + const oldIsFirefox = browser.IS_FIREFOX; const video = document.createElement('video'); browser.ANDROID_VERSION = 4.0; + browser.IS_FIREFOX = false; Html5.patchCanPlayType(); assert.strictEqual(video.canPlayType('application/x-mpegurl'), @@ -157,6 +184,7 @@ QUnit.test('should return maybe for HLS urls on Android 4.0 or above', function( 'maybe for vnd.apple.mpegurl'); browser.ANDROID_VERSION = oldAV; + browser.IS_FIREFOX = oldIsFirefox; Html5.unpatchCanPlayType(); });