Skip to content

Commit 61e76e1

Browse files
authored
Merge branch 'gh-pages' into no-pool
2 parents 7dd84ba + 3db6d79 commit 61e76e1

File tree

3 files changed

+36
-8
lines changed

3 files changed

+36
-8
lines changed

src/content/getusermedia/getdisplaymedia/index.html

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,15 @@ <h1><a href="//webrtc.github.io/samples/" title="WebRTC samples homepage">WebRTC
3535

3636
<video id="gum-local" autoplay playsinline muted></video>
3737
<button id="startButton" disabled>Start</button>
38-
38+
<fieldset id="options" style="display:none">
39+
<legend>Advanced options</legend>
40+
<select id="displaySurface">
41+
<option value="default" selected>Show default sharing options</option>
42+
<option value="browser">Prefer to share a browser tab</option>
43+
<option value="window">Prefer to share a window</option>
44+
<option value="monitor">Prefer to share an entire screen</option>
45+
</select>
46+
</fieldset>
3947
<div id="errorMsg"></div>
4048

4149
<p>Display the screensharing stream from <code>getDisplayMedia()</code> in a video element.</p>

src/content/getusermedia/getdisplaymedia/js/main.js

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,22 @@
77
*/
88
'use strict';
99

10-
// Polyfill in Firefox.
11-
// See https://blog.mozilla.org/webrtc/getdisplaymedia-now-available-in-adapter-js/
12-
if (adapter.browserDetails.browser == 'firefox') {
10+
const preferredDisplaySurface = document.getElementById('displaySurface');
11+
const startButton = document.getElementById('startButton');
12+
13+
if (adapter.browserDetails.browser === 'chrome' &&
14+
adapter.browserDetails.version >= 107) {
15+
// See https://developer.chrome.com/docs/web-platform/screen-sharing-controls/
16+
document.getElementById('options').style.display = 'block';
17+
} else if (adapter.browserDetails.browser === 'firefox') {
18+
// Polyfill in Firefox.
19+
// See https://blog.mozilla.org/webrtc/getdisplaymedia-now-available-in-adapter-js/
1320
adapter.browserShim.shimGetDisplayMedia(window, 'screen');
1421
}
1522

1623
function handleSuccess(stream) {
1724
startButton.disabled = true;
25+
preferredDisplaySurface.disabled = true;
1826
const video = document.querySelector('video');
1927
video.srcObject = stream;
2028

@@ -23,6 +31,7 @@ function handleSuccess(stream) {
2331
stream.getVideoTracks()[0].addEventListener('ended', () => {
2432
errorMsg('The user has ended sharing the screen');
2533
startButton.disabled = false;
34+
preferredDisplaySurface.disabled = false;
2635
});
2736
}
2837

@@ -38,9 +47,14 @@ function errorMsg(msg, error) {
3847
}
3948
}
4049

41-
const startButton = document.getElementById('startButton');
50+
4251
startButton.addEventListener('click', () => {
43-
navigator.mediaDevices.getDisplayMedia({video: true})
52+
const options = {audio: true, video: true};
53+
const displaySurface = preferredDisplaySurface.options[preferredDisplaySurface.selectedIndex].value;
54+
if (displaySurface !== 'default') {
55+
options.video = {displaySurface};
56+
}
57+
navigator.mediaDevices.getDisplayMedia(options)
4458
.then(handleSuccess, handleError);
4559
});
4660

src/css/main.css

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,14 @@ ul {
236236
margin: 0 0 0.5em 0;
237237
}
238238

239+
fieldset {
240+
margin: 0 0 1em 0;
241+
}
242+
243+
fieldset > select {
244+
margin-top: 1em;
245+
}
246+
239247
@media screen and (max-width: 650px) {
240248
.highlight {
241249
font-size: 1em;
@@ -263,5 +271,3 @@ ul {
263271
font-size: 20px;
264272
}
265273
}
266-
267-

0 commit comments

Comments
 (0)