summaryrefslogtreecommitdiffstats
path: root/dom/media/tests/mochitest/test_getUserMedia_basicScreenshare.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/tests/mochitest/test_getUserMedia_basicScreenshare.html')
-rw-r--r--dom/media/tests/mochitest/test_getUserMedia_basicScreenshare.html87
1 files changed, 87 insertions, 0 deletions
diff --git a/dom/media/tests/mochitest/test_getUserMedia_basicScreenshare.html b/dom/media/tests/mochitest/test_getUserMedia_basicScreenshare.html
new file mode 100644
index 000000000..90a553566
--- /dev/null
+++ b/dom/media/tests/mochitest/test_getUserMedia_basicScreenshare.html
@@ -0,0 +1,87 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <script type="application/javascript" src="mediaStreamPlayback.js"></script>
+</head>
+<body>
+<pre id="test">
+<script type="application/javascript">
+ createHTML({
+ title: "getUserMedia Basic Screenshare Test",
+ bug: "1211656"
+ });
+
+ var pushPrefs = (...p) => new Promise(r => SpecialPowers.pushPrefEnv({set: p}, r));
+
+ /**
+ * Run a test to verify that we can complete a start and stop media playback
+ * cycle for a screenshare LocalMediaStream on a video HTMLMediaElement.
+ */
+ runTest(function () {
+ const isWinXP = navigator.userAgent.indexOf("Windows NT 5.1") != -1;
+ if (IsMacOSX10_6orOlder() || isWinXP) {
+ ok(true, "Screensharing disabled for OSX10.6 and WinXP");
+ return;
+ }
+ var testVideo = createMediaElement('video', 'testVideo');
+
+ var constraints = {
+ video: {
+ mozMediaSource: "screen",
+ mediaSource: "screen"
+ },
+ fake: false
+ };
+ var videoConstraints = [
+ {
+ mediaSource: 'screen',
+ width: {
+ min: '10',
+ max: '100'
+ },
+ height: {
+ min: '10',
+ max: '100'
+ },
+ frameRate: {
+ min: '10',
+ max: '15'
+ }
+ },
+ {
+ mediaSource: 'screen',
+ width: 200,
+ height: 200,
+ frameRate: {
+ min: '5',
+ max: '10'
+ }
+ }
+ ];
+ return Promise.resolve()
+ // Screensharing must work even without "mochi.test," in allowed_domains
+ .then(() => pushPrefs(["media.getusermedia.screensharing.allowed_domains",
+ "mozilla.github.io,*.bugzilla.mozilla.org"]))
+ .then(() => getUserMedia(constraints).then(stream => {
+ var playback = new LocalMediaStreamPlayback(testVideo, stream);
+ return playback.playMediaWithDeprecatedStreamStop(false);
+ }))
+ .then(() => getUserMedia({video: videoConstraints[0], fake: false}))
+ .then(stream => {
+ var playback = new LocalMediaStreamPlayback(testVideo, stream);
+ playback.startMedia(false);
+ return playback.verifyPlaying()
+ .then(() => Promise.all([
+ () => testVideo.srcObject.getVideoTracks()[0].applyConstraints(videoConstraints[1]),
+ () => listenUntil(testVideo, "resize", () => true)
+ ]))
+ .then(() => playback.verifyPlaying()) // still playing
+ .then(() => playback.deprecatedStopStreamInMediaPlayback())
+ .then(() => playback.detachFromMediaElement());
+ });
+ });
+
+</script>
+</pre>
+</body>
+</html>