Skip to content

Commit

Permalink
fix: disable HLS hack on Firefox for Android (#3586)
Browse files Browse the repository at this point in the history
* Disable HLS hack on Firefox for Android

* Fix canPlayType patching tests

* Add test to ensure that canPlayType is not patched in Firefox for Android

* Fix assertion message in Firefox for Android test
  • Loading branch information
marco-c authored and gkatsev committed Sep 29, 2016
1 parent c545acd commit dd2aff0
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/js/tech/html5.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
28 changes: 28 additions & 0 deletions test/unit/tech/html5.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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'),
Expand All @@ -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();
});

Expand Down

0 comments on commit dd2aff0

Please sign in to comment.