mirror of
https://github.com/videojs/video.js.git
synced 2024-12-23 02:04:34 +02:00
e8e4fe2745
This PR extends the `autoplay` to the player with a few options that should hopefully make working with browsers that disable unmuted autoplay by default easier. The current boolean option will match current behavior and any unknown option will be treated as it does now. The new options are the string values `muted`, `play`, and `any`. - `muted` will mute the element and call `play()` on `loadstart`, - `play` will call `play()` on `loadstart()`, this is similar to the `autoplay` attribute - `any` will call `play()` on `loadstart()` but if it fails it will try muting the video and calling `play()` again.
114 lines
1.9 KiB
JavaScript
114 lines
1.9 KiB
JavaScript
// Fake a media playback tech controller so that player tests
|
|
// can run without HTML5 or Flash, of which PhantomJS supports neither.
|
|
import Tech from '../../../src/js/tech/tech.js';
|
|
|
|
/**
|
|
* @constructor
|
|
*/
|
|
class TechFaker extends Tech {
|
|
|
|
constructor(options, handleReady) {
|
|
super(options, handleReady);
|
|
if (!options || options.autoReady !== false) {
|
|
this.triggerReady();
|
|
}
|
|
}
|
|
|
|
createEl() {
|
|
const el = super.createEl('div', {
|
|
className: 'vjs-tech'
|
|
});
|
|
|
|
return el;
|
|
}
|
|
|
|
// fake a poster attribute to mimic the video element
|
|
poster() {
|
|
return this.el().poster;
|
|
}
|
|
setPoster(val) {
|
|
this.el().poster = val;
|
|
this.trigger('posterchange');
|
|
}
|
|
|
|
setControls(val) {}
|
|
|
|
setVolume(newVolume) {}
|
|
|
|
setMuted() {}
|
|
|
|
setAutoplay(v) {
|
|
if (!v) {
|
|
this.options_.autoplay = false;
|
|
}
|
|
|
|
this.options_.autoplay = true;
|
|
}
|
|
|
|
currentTime() {
|
|
return 0;
|
|
}
|
|
seeking() {
|
|
return false;
|
|
}
|
|
src() {
|
|
return 'movie.mp4';
|
|
}
|
|
currentSrc() {
|
|
return 'movie.mp4';
|
|
}
|
|
volume() {
|
|
return 0;
|
|
}
|
|
muted() {
|
|
return false;
|
|
}
|
|
autoplay() {
|
|
return this.options_.autoplay || false;
|
|
}
|
|
pause() {
|
|
return false;
|
|
}
|
|
paused() {
|
|
return true;
|
|
}
|
|
loop() {
|
|
return false;
|
|
}
|
|
play() {
|
|
this.trigger('play');
|
|
}
|
|
supportsFullScreen() {
|
|
return false;
|
|
}
|
|
buffered() {
|
|
return {};
|
|
}
|
|
duration() {
|
|
return {};
|
|
}
|
|
networkState() {
|
|
return 0;
|
|
}
|
|
readyState() {
|
|
return 0;
|
|
}
|
|
controls() {
|
|
return false;
|
|
}
|
|
|
|
// Support everything except for "video/unsupported-format"
|
|
static isSupported() {
|
|
return true;
|
|
}
|
|
static canPlayType(type) {
|
|
return (type !== 'video/unsupported-format' ? 'maybe' : '');
|
|
}
|
|
static canPlaySource(srcObj) {
|
|
return srcObj.type !== 'video/unsupported-format';
|
|
}
|
|
}
|
|
|
|
Tech.registerTech('TechFaker', TechFaker);
|
|
export default TechFaker;
|