1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import document from 'global/document';
- import window from 'global/window';
- import QUnit from 'qunit';
- import sinon from 'sinon';
- import videojs from 'video.js';
- import FlashMediaSource from '../src/flash-media-source';
- import HtmlMediaSource from '../src/html-media-source';
- // we disable this because browserify needs to include these files
- // but the exports are not important
- /* eslint-disable no-unused-vars */
- import {MediaSource, URL} from '../src/videojs-contrib-media-sources.js';
- /* eslint-disable no-unused-vars */
- QUnit.test('the environment is sane', function(assert) {
- assert.strictEqual(typeof Array.isArray, 'function', 'es5 exists');
- assert.strictEqual(typeof sinon, 'object', 'sinon exists');
- assert.strictEqual(typeof videojs, 'function', 'videojs exists');
- assert.strictEqual(typeof videojs.MediaSource, 'function', 'plugin is a function');
- });
- QUnit.module('videojs-contrib-media-sources - General', {
- beforeEach() {
- this.fixture = document.getElementById('qunit-fixture');
- this.video = document.createElement('video');
- this.fixture.appendChild(this.video);
- this.player = videojs(this.video);
- // Mock the environment's timers because certain things - particularly
- // player readiness - are asynchronous in video.js 5.
- this.clock = sinon.useFakeTimers();
- this.oldMediaSource = window.MediaSource || window.WebKitMediaSource;
- },
- afterEach() {
- // The clock _must_ be restored before disposing the player; otherwise,
- // certain timeout listeners that happen inside video.js may throw errors.
- this.clock.restore();
- this.player.dispose();
- window.MediaSource = window.WebKitMediaSource = this.oldMediaSource;
- }
- });
- QUnit.test('Plugin is registered', function(assert) {
- assert.strictEqual(
- typeof videojs.MediaSource,
- 'function',
- 'MediaSource plugin is attached to videojs'
- );
- assert.strictEqual(
- typeof videojs.URL,
- 'object',
- 'URL plugin is attached to player'
- );
- });
- QUnit.test('implementation selection is overridable', function() {
- // mock native MediaSources
- window.MediaSource = videojs.extend(videojs.EventTarget, {
- addSourceBuffer() {
- throw new Error('Testing Mock');
- }
- });
- window.MediaSource.isTypeSupported = function(mime) {
- return true;
- };
- QUnit.ok(
- new videojs.MediaSource({ mode: 'flash' }) instanceof FlashMediaSource,
- 'forced flash'
- );
- QUnit.ok(
- new videojs.MediaSource({ mode: 'html5' }) instanceof HtmlMediaSource,
- 'forced html5'
- );
- // 'auto' should use native mediasources when they're available
- QUnit.ok(
- new videojs.MediaSource() instanceof HtmlMediaSource,
- 'used html5'
- );
- window.MediaSource.isTypeSupported = function(mime) {
- return false;
- };
- // 'auto' should use flash when native mediasources are not available
- QUnit.ok(
- new videojs.MediaSource() instanceof FlashMediaSource,
- 'used flash'
- );
- });
|