Adds a noAutoPlayVideo configuration option (used in testing). (#4714)

This adds an option to disable video autoplay that will be used mostly with maleus (our selenium-based load testing tool for testing the new bridge). Disabling video rendering lowers the resource utilisation of the selenium nodes.
This commit is contained in:
George Politis
2019-10-08 11:34:25 +02:00
committed by GitHub
parent 13d78d6b49
commit d210f2f2e7
6 changed files with 76 additions and 10 deletions
@@ -26,7 +26,13 @@ type Props = {
/**
* The JitsiLocalTrack to display.
*/
videoTrack: ?Object
videoTrack: ?Object,
/**
* Used to determine the value of the autoplay attribute of the underlying
* video element.
*/
autoPlay: boolean
};
/**
@@ -44,7 +50,7 @@ class Video extends Component<Props> {
*/
static defaultProps = {
className: '',
autoPlay: true,
id: ''
};
@@ -131,7 +137,7 @@ class Video extends Component<Props> {
render() {
return (
<video
autoPlay = { true }
autoPlay = { this.props.autoPlay }
className = { this.props.className }
id = { this.props.id }
ref = { this._setVideoElement } />
@@ -23,7 +23,14 @@ type Props = AbstractVideoTrackProps & {
* The value of the id attribute of the video. Used by the torture tests
* to locate video elements.
*/
id: string
id: string,
/**
*
* Used to determine the value of the autoplay attribute of the underlying
* video element.
*/
_noAutoPlayVideo: boolean
};
/**
@@ -53,7 +60,7 @@ class VideoTrack extends AbstractVideoTrack<Props> {
render() {
return (
<Video
autoPlay = { true }
autoPlay = { !this.props._noAutoPlayVideo }
className = { this.props.className }
id = { this.props.id }
onVideoPlaying = { this._onVideoPlaying }
@@ -64,4 +71,22 @@ class VideoTrack extends AbstractVideoTrack<Props> {
_onVideoPlaying: () => void;
}
export default connect()(VideoTrack);
/**
* Maps (parts of) the Redux state to the associated VideoTracks props.
*
* @param {Object} state - The Redux state.
* @private
* @returns {{
* _noAutoPlayVideo: boolean
* }}
*/
function _mapStateToProps(state) {
const testingConfig = state['features/base/config'].testing;
return {
_noAutoPlayVideo: testingConfig?.noAutoPlayVideo
};
}
export default connect(_mapStateToProps)(VideoTrack);
@@ -4,16 +4,26 @@ import React, { Component } from 'react';
import { Watermarks } from '../../base/react';
import { Captions } from '../../subtitles/';
import { connect } from '../../base/redux';
declare var interfaceConfig: Object;
type Props = {
/**
* Used to determine the value of the autoplay attribute of the underlying
* video element.
*/
_noAutoPlayVideo: boolean
}
/**
* Implements a React {@link Component} which represents the large video (a.k.a.
* the conference participant who is on the local stage) on Web/React.
*
* @extends Component
*/
export default class LargeVideo extends Component<{}> {
class LargeVideo extends Component<Props> {
/**
* Implements React's {@link Component#render()}.
*
@@ -51,7 +61,7 @@ export default class LargeVideo extends Component<{}> {
*/}
<div id = 'largeVideoWrapper'>
<video
autoPlay = { true }
autoPlay = { !this.props._noAutoPlayVideo }
id = 'largeVideo'
muted = { true } />
</div>
@@ -63,3 +73,24 @@ export default class LargeVideo extends Component<{}> {
);
}
}
/**
* Maps (parts of) the Redux state to the associated LargeVideo props.
*
* @param {Object} state - The Redux state.
* @private
* @returns {{
* _noAutoPlayVideo: boolean
* }}
*/
function _mapStateToProps(state) {
const testingConfig = state['features/base/config'].testing;
return {
_noAutoPlayVideo: testingConfig?.noAutoPlayVideo
};
}
export default connect(_mapStateToProps)(LargeVideo);