import Destroyable from '../destroyable/Destroyable' ; import DeviceChangeObserver from '../devicechangeobserver/DeviceChangeObserver' ; import DeviceControllerBasedMediaStreamBroker from '../mediastreambroker/DeviceControllerBasedMediaStreamBroker' ; import NoOpMediaStreamBroker from '../mediastreambroker/NoOpMediaStreamBroker' ; import AudioInputDevice from './AudioInputDevice' ; import RemovableAnalyserNode from './RemovableAnalyserNode' ; import VideoInputDevice from './VideoInputDevice' ; import VideoQualitySettings from './VideoQualitySettings' ; export default class NoOpDeviceController extends NoOpMediaStreamBroker implements DeviceControllerBasedMediaStreamBroker { constructor ( _options ? ) { super ( ) ; } listAudioInputDevices ( ) { return Promise . resolve ( [ ] ) ; } listVideoInputDevices ( ) { return Promise . resolve ( [ ] ) ; } listAudioOutputDevices ( ) { return Promise . resolve ( [ ] ) ; } chooseAudioInputDevice ( _device ) { return Promise . reject ( ) ; } chooseVideoInputDevice ( _device ) { return Promise . reject ( ) ; } chooseAudioOutputDevice ( _deviceId ) { return Promise . reject ( ) ; } addDeviceChangeObserver ( _observer ) { } removeDeviceChangeObserver ( _observer ) { } createAnalyserNodeForAudioInput ( ) { return null ; } startVideoPreviewForVideoInput ( _element ) { } stopVideoPreviewForVideoInput ( _element ) { } setDeviceLabelTrigger ( _trigger ) { } mixIntoAudioInput ( _stream ) { return null ; } chooseVideoInputQuality ( _width , _height , _frameRate , _maxBandwidthKbps ) { } getVideoInputQualitySettings ( ) { return null ; } } export class DestroyableNoOpDeviceController extends NoOpDeviceController implements Destroyable { destroyed = false ; async destroy ( ) { this . destroyed = true ; } }