37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
|
/*
|
||
|
* Copyright (c) 2018 The adapter.js project authors. All Rights Reserved.
|
||
|
*
|
||
|
* Use of this source code is governed by a BSD-style license
|
||
|
* that can be found in the LICENSE file in the root of the source
|
||
|
* tree.
|
||
|
*/
|
||
|
/* eslint-env node */
|
||
|
'use strict';
|
||
|
|
||
|
export function shimGetDisplayMedia(window, preferredMediaSource) {
|
||
|
if (window.navigator.mediaDevices &&
|
||
|
'getDisplayMedia' in window.navigator.mediaDevices) {
|
||
|
return;
|
||
|
}
|
||
|
if (!(window.navigator.mediaDevices)) {
|
||
|
return;
|
||
|
}
|
||
|
window.navigator.mediaDevices.getDisplayMedia =
|
||
|
function getDisplayMedia(constraints) {
|
||
|
if (!(constraints && constraints.video)) {
|
||
|
const err = new DOMException('getDisplayMedia without video ' +
|
||
|
'constraints is undefined');
|
||
|
err.name = 'NotFoundError';
|
||
|
// from https://heycam.github.io/webidl/#idl-DOMException-error-names
|
||
|
err.code = 8;
|
||
|
return Promise.reject(err);
|
||
|
}
|
||
|
if (constraints.video === true) {
|
||
|
constraints.video = {mediaSource: preferredMediaSource};
|
||
|
} else {
|
||
|
constraints.video.mediaSource = preferredMediaSource;
|
||
|
}
|
||
|
return window.navigator.mediaDevices.getUserMedia(constraints);
|
||
|
};
|
||
|
}
|