module('HTML5'); var oldAndroidVersion; test('should detect whether the volume can be changed', function(){ var testVid, ConstVolumeVideo; if (!{}['__defineSetter__']) { ok(true, 'your browser does not support this test, skipping it'); return; } testVid = vjs.TEST_VID; ConstVolumeVideo = function(){ this.volume = 1; this.__defineSetter__('volume', function(){}); }; vjs.TEST_VID = new ConstVolumeVideo(); ok(!vjs.Html5.canControlVolume()); vjs.TEST_VID = testVid; }); test('should re-link the player if the tech is moved', function(){ var player, tech, el; el = document.createElement('div'); el.innerHTML = '
'; player = { id: function(){ return 'id'; }, el: function(){ return el; }, options_: {}, options: function(){ return {}; }, controls: function(){ return false; }, usingNativeControls: function(){ return false; }, on: function(){ return this; }, ready: function(){} }; tech = new vjs.Html5(player, {}); vjs.Html5.movingMediaElementInDOM = false; tech.createEl(); strictEqual(player, tech.el()['player']); }); test('patchCanPlayType patches canplaytype with our function, conditionally', function() { var oldAV = vjs.ANDROID_VERSION, video = document.createElement('video'), canPlayType = HTMLVideoElement.prototype.canPlayType, patchCanPlayType, unpatchedCanPlayType; vjs.ANDROID_VERSION = 4.0 vjs.Html5.patchCanPlayType(); notStrictEqual(video.canPlayType, canPlayType, 'original canPlayType and patched canPlayType should not be equal'); patchCanPlayType = video.canPlayType; unpatchedCanPlayType = vjs.Html5.unpatchCanPlayType(); strictEqual(video.canPlayType, HTMLVideoElement.prototype.canPlayType, 'original canPlayType and unpatched canPlayType should be equal'); vjs.ANDROID_VERSION = oldAV; }); test('should return maybe for HLS urls on Android 4.0 or above', function() { var oldAV = vjs.ANDROID_VERSION, video = document.createElement('video'); vjs.ANDROID_VERSION = 4.0 vjs.Html5.patchCanPlayType(); strictEqual(video.canPlayType('application/x-mpegurl'), "maybe", "android version 4.0 or above should be a maybe for x-mpegurl"); strictEqual(video.canPlayType('application/x-mpegURL'), "maybe", "android version 4.0 or above should be a maybe for x-mpegURL"); strictEqual(video.canPlayType('application/vnd.apple.mpegurl'), "maybe", "android version 4.0 or above should be a maybe for vnd.apple.mpegurl"); strictEqual(video.canPlayType('application/vnd.apple.mpegURL'), "maybe", "android version 4.0 or above should be a maybe for vnd.apple.mpegurl"); vjs.ANDROID_VERSION = oldAV; }); test('should return a maybe for mp4 on OLD ANDROID', function() { var isOldAndroid = vjs.IS_OLD_ANDROID, video = document.createElement('video'); vjs.IS_OLD_ANDROID = true; vjs.Html5.patchCanPlayType(); strictEqual(video.canPlayType('video/mp4'), 'maybe', 'old android should return a maybe for video/mp4'); vjs.IS_OLD_ANDROID = isOldAndroid; });