Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
Gary Katsevman dd068d8611 v5.9.0 dist 2016-04-05 14:25:45 -04:00
26 arquivos alterados com 77 adições e 341 exclusões
+6 -1
Ver Arquivo
@@ -2,7 +2,7 @@ language: node_js
node_js:
- 0.12
before_install:
- export CHROME_BIN=chromium-browser
- export CHROME_BIN=/usr/bin/google-chrome
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
notifications:
@@ -25,3 +25,8 @@ cache:
- node_modules
addons:
firefox: latest
apt:
sources:
- google-chrome
packages:
- google-chrome-stable
-11
Ver Arquivo
@@ -6,17 +6,6 @@ _(none)_
--------------------
## 5.9.2 (2016-04-19)
* @gkatsev grouped text track errors in the console, if we can ([view](https://github.com/videojs/video.js/pull/3259))
## 5.9.1 (2016-04-19)
* @benjipott updated IS_CHROME to not be true on MS Edge ([view](https://github.com/videojs/video.js/pull/3232))
* @mister-ben blacklisted Chrome for Android for playback rate support ([view](https://github.com/videojs/video.js/pull/3246))
* @gkatsev made the first emulated text track enabled by default ([view](https://github.com/videojs/video.js/pull/3248))
* @gkatsev fixed removeRemoteTextTracks not working with return value from addRemoteTextTracks ([view](https://github.com/videojs/video.js/pull/3253))
* @forbesjo added back the background color to the poster ([view](https://github.com/videojs/video.js/pull/3267))
* @gkatsev fixed text track tests for older IEs ([view](https://github.com/videojs/video.js/pull/3269))
## 5.9.0 (2016-04-05)
* @gkatsev updated vjs to not add dynamic styles when VIDEOJS_NO_DYNAMIC_STYLE is set ([view](https://github.com/videojs/video.js/pull/3093))
* @OwenEdwards added basic descriptions track support ([view](https://github.com/videojs/video.js/pull/3098))
+1 -1
Ver Arquivo
@@ -1,7 +1,7 @@
{
"name": "video.js",
"description": "An HTML5 and Flash video player with a common API and skin for both.",
"version": "5.9.2",
"version": "5.9.0",
"keywords": [
"videojs",
"html5",
-1
Ver Arquivo
@@ -903,7 +903,6 @@ body.vjs-full-window {
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: contain;
background-color: #000000;
cursor: pointer;
margin: 0;
padding: 0;
+1 -1
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+8 -72
Ver Arquivo
@@ -1,6 +1,6 @@
/**
* @license
* Video.js 5.9.2 <http://videojs.com/>
* Video.js 5.9.0 <http://videojs.com/>
* Copyright Brightcove, Inc. <https://www.brightcove.com/>
* Available under Apache License Version 2.0
* <https://github.com/videojs/video.js/blob/master/LICENSE>
@@ -5396,10 +5396,9 @@ var PlaybackRateMenuButton = (function (_MenuButton) {
};
/**
* Get whether playback rates is supported by the tech
* and an array of playback rates exists
* Get supported playback rates
*
* @return {Boolean} Whether changing playback rate is supported
* @return {Array} Supported playback rates
* @method playbackRateSupported
*/
@@ -12480,15 +12479,8 @@ var Player = (function (_Component) {
* @param {Object} track Remote text track to remove
* @method removeRemoteTextTrack
*/
// destructure the input into an object with a track argument, defaulting to arguments[0]
// default the whole argument to an empty object if nothing was passed in
Player.prototype.removeRemoteTextTrack = function removeRemoteTextTrack() {
var _ref3 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
var _ref3$track = _ref3.track;
var track = _ref3$track === undefined ? arguments[0] : _ref3$track;
// jshint ignore:line
Player.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) {
this.tech_ && this.tech_['removeRemoteTextTrack'](track);
};
@@ -15441,14 +15433,9 @@ Html5.canControlVolume = function () {
/*
* Check if playbackRate is supported in this browser/device.
*
* @return {Boolean}
* @return {Number} [description]
*/
Html5.canControlPlaybackRate = function () {
// Playback rate API is implemented in Android Chrome, but doesn't do anything
// https://github.com/videojs/video.js/issues/3180
if (browser.IS_ANDROID && browser.IS_CHROME) {
return false;
}
var playbackRate = Html5.TEST_VID.playbackRate;
Html5.TEST_VID.playbackRate = playbackRate / 2 + 0.1;
return playbackRate !== Html5.TEST_VID.playbackRate;
@@ -17011,34 +16998,6 @@ var TextTrackDisplay = (function (_Component) {
var track = tracks[i];
this.player_.addRemoteTextTrack(track);
}
var modes = { 'captions': 1, 'subtitles': 1 };
var trackList = this.player_.textTracks();
var firstDesc = undefined;
var firstCaptions = undefined;
if (trackList) {
for (var i = 0; i < trackList.length; i++) {
var track = trackList[i];
if (track['default']) {
if (track.kind === 'descriptions' && !firstDesc) {
firstDesc = track;
} else if (track.kind in modes && !firstCaptions) {
firstCaptions = track;
}
}
}
// We want to show the first default track but captions and subtitles
// take precedence over descriptions.
// So, display the first default captions or subtitles track
// and otherwise the first default descriptions track.
if (firstCaptions) {
firstCaptions.mode = 'showing';
} else if (firstDesc) {
firstDesc.mode = 'showing';
}
}
}));
}
@@ -17943,14 +17902,13 @@ var _xhr2 = _interopRequireDefault(_xhr);
*/
var parseCues = function parseCues(srcContent, track) {
var parser = new _globalWindow2['default'].WebVTT.Parser(_globalWindow2['default'], _globalWindow2['default'].vttjs, _globalWindow2['default'].WebVTT.StringDecoder());
var errors = [];
parser.oncue = function (cue) {
track.addCue(cue);
};
parser.onparsingerror = function (error) {
errors.push(error);
_utilsLogJs2['default'].error(error);
};
parser.onflush = function () {
@@ -17961,18 +17919,6 @@ var parseCues = function parseCues(srcContent, track) {
};
parser.parse(srcContent);
if (errors.length > 0) {
if (console.groupCollapsed) {
console.groupCollapsed('Text Track parsing errors for ' + track.src);
}
errors.forEach(function (error) {
return _utilsLogJs2['default'].error(error);
});
if (console.groupEnd) {
console.groupEnd();
}
}
parser.flush();
};
@@ -18077,7 +18023,6 @@ var TextTrack = (function (_EventTarget) {
var mode = TextTrackEnum.TextTrackMode[options.mode] || 'disabled';
var kind = TextTrackEnum.TextTrackKind[options.kind] || 'subtitles';
var default_ = options['default'];
var label = options.label || '';
var language = options.language || options.srclang || '';
var id = options.id || 'vjs_text_track_' + Guid.newGUID();
@@ -18132,13 +18077,6 @@ var TextTrack = (function (_EventTarget) {
set: function set() {}
});
Object.defineProperty(tt, 'default', {
get: function get() {
return default_;
},
set: function set() {}
});
Object.defineProperty(tt, 'mode', {
get: function get() {
return mode;
@@ -18365,9 +18303,7 @@ var IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion
exports.IS_NATIVE_ANDROID = IS_NATIVE_ANDROID;
var IS_FIREFOX = /Firefox/i.test(USER_AGENT);
exports.IS_FIREFOX = IS_FIREFOX;
var IS_EDGE = /Edge/i.test(USER_AGENT);
exports.IS_EDGE = IS_EDGE;
var IS_CHROME = !IS_EDGE && /Chrome/i.test(USER_AGENT);
var IS_CHROME = /Chrome/i.test(USER_AGENT);
exports.IS_CHROME = IS_CHROME;
var IS_IE8 = /MSIE\s8\.0/.test(USER_AGENT);
@@ -20378,7 +20314,7 @@ setup.autoSetupTimeout(1, videojs);
*
* @type {String}
*/
videojs.VERSION = '5.9.2';
videojs.VERSION = '5.9.0';
/**
* The global options object. These are the settings that take effect
+6 -5
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
Arquivo binário não exibido.
-1
Ver Arquivo
@@ -902,7 +902,6 @@ body.vjs-full-window {
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: contain;
background-color: #000000;
cursor: pointer;
margin: 0;
padding: 0;
+1 -1
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+8 -72
Ver Arquivo
@@ -1,6 +1,6 @@
/**
* @license
* Video.js 5.9.2 <http://videojs.com/>
* Video.js 5.9.0 <http://videojs.com/>
* Copyright Brightcove, Inc. <https://www.brightcove.com/>
* Available under Apache License Version 2.0
* <https://github.com/videojs/video.js/blob/master/LICENSE>
@@ -5400,10 +5400,9 @@ var PlaybackRateMenuButton = (function (_MenuButton) {
};
/**
* Get whether playback rates is supported by the tech
* and an array of playback rates exists
* Get supported playback rates
*
* @return {Boolean} Whether changing playback rate is supported
* @return {Array} Supported playback rates
* @method playbackRateSupported
*/
@@ -12484,15 +12483,8 @@ var Player = (function (_Component) {
* @param {Object} track Remote text track to remove
* @method removeRemoteTextTrack
*/
// destructure the input into an object with a track argument, defaulting to arguments[0]
// default the whole argument to an empty object if nothing was passed in
Player.prototype.removeRemoteTextTrack = function removeRemoteTextTrack() {
var _ref3 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
var _ref3$track = _ref3.track;
var track = _ref3$track === undefined ? arguments[0] : _ref3$track;
// jshint ignore:line
Player.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) {
this.tech_ && this.tech_['removeRemoteTextTrack'](track);
};
@@ -15445,14 +15437,9 @@ Html5.canControlVolume = function () {
/*
* Check if playbackRate is supported in this browser/device.
*
* @return {Boolean}
* @return {Number} [description]
*/
Html5.canControlPlaybackRate = function () {
// Playback rate API is implemented in Android Chrome, but doesn't do anything
// https://github.com/videojs/video.js/issues/3180
if (browser.IS_ANDROID && browser.IS_CHROME) {
return false;
}
var playbackRate = Html5.TEST_VID.playbackRate;
Html5.TEST_VID.playbackRate = playbackRate / 2 + 0.1;
return playbackRate !== Html5.TEST_VID.playbackRate;
@@ -17015,34 +17002,6 @@ var TextTrackDisplay = (function (_Component) {
var track = tracks[i];
this.player_.addRemoteTextTrack(track);
}
var modes = { 'captions': 1, 'subtitles': 1 };
var trackList = this.player_.textTracks();
var firstDesc = undefined;
var firstCaptions = undefined;
if (trackList) {
for (var i = 0; i < trackList.length; i++) {
var track = trackList[i];
if (track['default']) {
if (track.kind === 'descriptions' && !firstDesc) {
firstDesc = track;
} else if (track.kind in modes && !firstCaptions) {
firstCaptions = track;
}
}
}
// We want to show the first default track but captions and subtitles
// take precedence over descriptions.
// So, display the first default captions or subtitles track
// and otherwise the first default descriptions track.
if (firstCaptions) {
firstCaptions.mode = 'showing';
} else if (firstDesc) {
firstDesc.mode = 'showing';
}
}
}));
}
@@ -17947,14 +17906,13 @@ var _xhr2 = _interopRequireDefault(_xhr);
*/
var parseCues = function parseCues(srcContent, track) {
var parser = new _globalWindow2['default'].WebVTT.Parser(_globalWindow2['default'], _globalWindow2['default'].vttjs, _globalWindow2['default'].WebVTT.StringDecoder());
var errors = [];
parser.oncue = function (cue) {
track.addCue(cue);
};
parser.onparsingerror = function (error) {
errors.push(error);
_utilsLogJs2['default'].error(error);
};
parser.onflush = function () {
@@ -17965,18 +17923,6 @@ var parseCues = function parseCues(srcContent, track) {
};
parser.parse(srcContent);
if (errors.length > 0) {
if (console.groupCollapsed) {
console.groupCollapsed('Text Track parsing errors for ' + track.src);
}
errors.forEach(function (error) {
return _utilsLogJs2['default'].error(error);
});
if (console.groupEnd) {
console.groupEnd();
}
}
parser.flush();
};
@@ -18081,7 +18027,6 @@ var TextTrack = (function (_EventTarget) {
var mode = TextTrackEnum.TextTrackMode[options.mode] || 'disabled';
var kind = TextTrackEnum.TextTrackKind[options.kind] || 'subtitles';
var default_ = options['default'];
var label = options.label || '';
var language = options.language || options.srclang || '';
var id = options.id || 'vjs_text_track_' + Guid.newGUID();
@@ -18136,13 +18081,6 @@ var TextTrack = (function (_EventTarget) {
set: function set() {}
});
Object.defineProperty(tt, 'default', {
get: function get() {
return default_;
},
set: function set() {}
});
Object.defineProperty(tt, 'mode', {
get: function get() {
return mode;
@@ -18369,9 +18307,7 @@ var IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion
exports.IS_NATIVE_ANDROID = IS_NATIVE_ANDROID;
var IS_FIREFOX = /Firefox/i.test(USER_AGENT);
exports.IS_FIREFOX = IS_FIREFOX;
var IS_EDGE = /Edge/i.test(USER_AGENT);
exports.IS_EDGE = IS_EDGE;
var IS_CHROME = !IS_EDGE && /Chrome/i.test(USER_AGENT);
var IS_CHROME = /Chrome/i.test(USER_AGENT);
exports.IS_CHROME = IS_CHROME;
var IS_IE8 = /MSIE\s8\.0/.test(USER_AGENT);
@@ -20382,7 +20318,7 @@ setup.autoSetupTimeout(1, videojs);
*
* @type {String}
*/
videojs.VERSION = '5.9.2';
videojs.VERSION = '5.9.0';
/**
* The global options object. These are the settings that take effect
+7 -7
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+7 -6
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+1 -1
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+1 -1
Ver Arquivo
@@ -1,7 +1,7 @@
{
"name": "video.js",
"description": "An HTML5 and Flash video player with a common API and skin for both.",
"version": "5.9.2",
"version": "5.9.0",
"copyright": "Copyright Brightcove, Inc. <https://www.brightcove.com/>",
"license": "Apache-2.0",
"keywords": [
-1
Ver Arquivo
@@ -4,7 +4,6 @@
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: contain;
background-color: #000000;
cursor: pointer;
margin: 0;
padding: 0;
@@ -119,10 +119,9 @@ class PlaybackRateMenuButton extends MenuButton {
}
/**
* Get whether playback rates is supported by the tech
* and an array of playback rates exists
* Get supported playback rates
*
* @return {Boolean} Whether changing playback rate is supported
* @return {Array} Supported playback rates
* @method playbackRateSupported
*/
playbackRateSupported() {
+1 -3
Ver Arquivo
@@ -2579,9 +2579,7 @@ class Player extends Component {
* @param {Object} track Remote text track to remove
* @method removeRemoteTextTrack
*/
// destructure the input into an object with a track argument, defaulting to arguments[0]
// default the whole argument to an empty object if nothing was passed in
removeRemoteTextTrack({track = arguments[0]} = {}) { // jshint ignore:line
removeRemoteTextTrack(track) {
this.tech_ && this.tech_['removeRemoteTextTrack'](track);
}
+1 -6
Ver Arquivo
@@ -935,14 +935,9 @@ Html5.canControlVolume = function(){
/*
* Check if playbackRate is supported in this browser/device.
*
* @return {Boolean}
* @return {Number} [description]
*/
Html5.canControlPlaybackRate = function(){
// Playback rate API is implemented in Android Chrome, but doesn't do anything
// https://github.com/videojs/video.js/issues/3180
if (browser.IS_ANDROID && browser.IS_CHROME) {
return false;
}
var playbackRate = Html5.TEST_VID.playbackRate;
Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;
return playbackRate !== Html5.TEST_VID.playbackRate;
-28
Ver Arquivo
@@ -58,34 +58,6 @@ class TextTrackDisplay extends Component {
let track = tracks[i];
this.player_.addRemoteTextTrack(track);
}
let modes = {'captions': 1, 'subtitles': 1};
let trackList = this.player_.textTracks();
let firstDesc;
let firstCaptions;
if (trackList) {
for (let i = 0; i < trackList.length; i++) {
let track = trackList[i];
if (track.default) {
if (track.kind === 'descriptions' && !firstDesc) {
firstDesc = track;
} else if (track.kind in modes && !firstCaptions) {
firstCaptions = track;
}
}
}
// We want to show the first default track but captions and subtitles
// take precedence over descriptions.
// So, display the first default captions or subtitles track
// and otherwise the first default descriptions track.
if (firstCaptions) {
firstCaptions.mode = 'showing';
} else if (firstDesc) {
firstDesc.mode = 'showing';
}
}
}));
}
+1 -20
Ver Arquivo
@@ -23,14 +23,13 @@ const parseCues = function(srcContent, track) {
let parser = new window.WebVTT.Parser(window,
window.vttjs,
window.WebVTT.StringDecoder());
let errors = [];
parser.oncue = function(cue) {
track.addCue(cue);
};
parser.onparsingerror = function(error) {
errors.push(error);
log.error(error);
};
parser.onflush = function() {
@@ -41,16 +40,6 @@ const parseCues = function(srcContent, track) {
};
parser.parse(srcContent);
if (errors.length > 0) {
if (console.groupCollapsed) {
console.groupCollapsed(`Text Track parsing errors for ${track.src}`);
}
errors.forEach((error) => log.error(error));
if (console.groupEnd) {
console.groupEnd();
}
}
parser.flush();
};
@@ -147,7 +136,6 @@ class TextTrack extends EventTarget {
let mode = TextTrackEnum.TextTrackMode[options.mode] || 'disabled';
let kind = TextTrackEnum.TextTrackKind[options.kind] || 'subtitles';
let default_ = options.default;
let label = options.label || '';
let language = options.language || options.srclang || '';
let id = options.id || 'vjs_text_track_' + Guid.newGUID();
@@ -202,13 +190,6 @@ class TextTrack extends EventTarget {
set() {}
});
Object.defineProperty(tt, 'default', {
get() {
return default_;
},
set() {}
});
Object.defineProperty(tt, 'mode', {
get() {
return mode;
+1 -2
Ver Arquivo
@@ -57,8 +57,7 @@ export const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDR
export const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;
export const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);
export const IS_EDGE = (/Edge/i).test(USER_AGENT);
export const IS_CHROME = !IS_EDGE && (/Chrome/i).test(USER_AGENT);
export const IS_CHROME = (/Chrome/i).test(USER_AGENT);
export const IS_IE8 = (/MSIE\s8\.0/).test(USER_AGENT);
export const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);
+6 -1
Ver Arquivo
@@ -107,7 +107,7 @@ module.exports = function(config) {
'ie8_bs'
];
} else {
settings.browsers = ['Firefox'];
settings.browsers = ['chrome_travis', 'Firefox'];
}
}
@@ -116,6 +116,11 @@ module.exports = function(config) {
function getCustomLaunchers(){
return {
chrome_travis: {
base: 'Chrome',
flags: ['--no-sandbox']
},
chrome_bs: {
base: 'BrowserStack',
browser: 'chrome',
+17 -17
Ver Arquivo
@@ -87,29 +87,29 @@ test('should get tag, source, and track settings', function(){
var tag = document.getElementById('example_1');
var player = TestHelpers.makePlayer({}, tag);
equal(player.options_.autoplay, true, 'autoplay is set to true');
equal(player.options_.preload, 'none', 'preload is set to none');
equal(player.options_.id, 'example_1', 'id is set to example_1');
equal(player.options_.sources.length, 2, 'we have two sources');
equal(player.options_.sources[0].src, 'http://google.com', 'first source is google.com');
equal(player.options_.sources[0].type, 'video/mp4', 'first time is video/mp4');
equal(player.options_.sources[1].type, 'video/webm', 'second type is video/webm');
equal(player.options_.tracks.length, 1, 'we have one text track');
equal(player.options_.tracks[0].kind, 'captions', 'the text track is a captions file');
equal(player.options_.tracks[0].attrtest, '', 'we have an empty attribute called attrtest');
ok(player.options_['autoplay'] === true);
ok(player.options_['preload'] === 'none'); // No extern. Use string.
ok(player.options_['id'] === 'example_1');
ok(player.options_['sources'].length === 2);
ok(player.options_['sources'][0].src === 'http://google.com');
ok(player.options_['sources'][0].type === 'video/mp4');
ok(player.options_['sources'][1].type === 'video/webm');
ok(player.options_['tracks'].length === 1);
ok(player.options_['tracks'][0]['kind'] === 'captions'); // No extern
ok(player.options_['tracks'][0]['attrtest'] === '');
notEqual(player.el().className.indexOf('video-js'), -1, 'transferred class from tag to player div');
equal(player.el().id,'example_1', 'transferred id from tag to player div');
ok(player.el().className.indexOf('video-js') !== -1, 'transferred class from tag to player div');
ok(player.el().id === 'example_1', 'transferred id from tag to player div');
equal(Player.players[player.id()], player, 'player referenceable from global list');
notEqual(tag.id, player.id, 'tag ID no longer is the same as player ID');
notEqual(tag.className, player.el().className, 'tag classname updated');
ok(Player.players[player.id()] === player, 'player referenceable from global list');
ok(tag.id !== player.id, 'tag ID no longer is the same as player ID');
ok(tag.className !== player.el().className, 'tag classname updated');
player.dispose();
notEqual(tag['player'], player, 'tag player ref killed');
ok(tag['player'] !== player, 'tag player ref killed');
ok(!Player.players['example_1'], 'global player ref killed');
equal(player.el(), null, 'player el killed');
ok(player.el() === null, 'player el killed');
});
test('should asynchronously fire error events during source selection', function() {
-78
Ver Arquivo
@@ -475,81 +475,3 @@ test('should uniformly create html track element when adding text track', functi
player.dispose();
});
test('default text tracks should show by default', function() {
let tag = TestHelpers.makeTag();
let capt = document.createElement('track');
capt.setAttribute('kind', 'captions');
capt.setAttribute('default', 'default');
tag.appendChild(capt);
let player = TestHelpers.makePlayer({
html5: {
nativeTextTracks: false
}
}, tag);
// native tracks are initialized after the player is ready
this.clock.tick(1);
let tracks = player.textTracks();
equal(tracks[0].kind, 'captions', 'the captions track is present');
equal(tracks[0].mode, 'showing', 'the captions track is showing');
});
test('default captions take precedence over default descriptions', function() {
let tag = TestHelpers.makeTag();
let desc = document.createElement('track');
let capt = document.createElement('track');
desc.setAttribute('kind', 'descriptions');
desc.setAttribute('default', 'default');
capt.setAttribute('kind', 'captions');
capt.setAttribute('default', 'default');
tag.appendChild(desc);
tag.appendChild(capt);
let player = TestHelpers.makePlayer({
html5: {
nativeTextTracks: false
}
}, tag);
// native tracks are initialized after the player is ready
this.clock.tick(1);
let tracks = player.textTracks();
equal(tracks[0].kind, 'descriptions', 'the descriptions track is first');
equal(tracks[0].mode, 'disabled', 'the descriptions track is disabled');
equal(tracks[1].kind, 'captions', 'the captions track is second');
equal(tracks[1].mode, 'showing', 'the captions track is showing');
});
test('removeRemoteTextTrack should be able to take both a track and the response from addRemoteTextTrack', function() {
let player = TestHelpers.makePlayer();
let track = {
kind: 'kind',
src: 'src',
language: 'language',
label: 'label',
default: 'default'
};
let htmlTrackElement = player.addRemoteTextTrack(track);
equal(player.remoteTextTrackEls().length, 1, 'html track element exist');
player.removeRemoteTextTrack(htmlTrackElement);
equal(player.remoteTextTrackEls().length, 0, 'the track element was removed correctly');
htmlTrackElement = player.addRemoteTextTrack(track);
equal(player.remoteTextTrackEls().length, 1, 'html track element exist');
player.removeRemoteTextTrack(htmlTrackElement.track);
equal(player.remoteTextTrackEls().length, 0, 'the track element was removed correctly');
});