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();
});