|
@@ -113,6 +113,14 @@ var ScreenObtainer = {
|
113
|
113
|
onFailure(jitsiError);
|
114
|
114
|
});
|
115
|
115
|
};
|
|
116
|
+ } else if(RTCBrowserType.isElectron()) {
|
|
117
|
+ obtainDesktopStream = (options, onSuccess, onFailure) =>
|
|
118
|
+ window.JitsiMeetElectron.obtainDesktopStream (
|
|
119
|
+ streamId =>
|
|
120
|
+ onGetStreamResponse({streamId}, onSuccess, onFailure),
|
|
121
|
+ err => onFailure(new JitsiTrackError(
|
|
122
|
+ JitsiTrackErrors.CHROME_EXTENSION_GENERIC_ERROR, err))
|
|
123
|
+ );
|
116
|
124
|
} else if (RTCBrowserType.isTemasysPluginUsed()) {
|
117
|
125
|
// XXX Don't require Temasys unless it's to be used because it
|
118
|
126
|
// doesn't run on React Native, for example.
|
|
@@ -428,27 +436,7 @@ function doGetStreamFromExtension(options, streamCallback, failCallback) {
|
428
|
436
|
return;
|
429
|
437
|
}
|
430
|
438
|
logger.log("Response from extension: ", response);
|
431
|
|
- if (response.streamId) {
|
432
|
|
- GUM(
|
433
|
|
- ['desktop'],
|
434
|
|
- stream => streamCallback(stream),
|
435
|
|
- failCallback,
|
436
|
|
- { desktopStream: response.streamId });
|
437
|
|
- } else {
|
438
|
|
- // As noted in Chrome Desktop Capture API:
|
439
|
|
- // If user didn't select any source (i.e. canceled the prompt)
|
440
|
|
- // then the callback is called with an empty streamId.
|
441
|
|
- if(response.streamId === "")
|
442
|
|
- {
|
443
|
|
- failCallback(new JitsiTrackError(
|
444
|
|
- JitsiTrackErrors.CHROME_EXTENSION_USER_CANCELED));
|
445
|
|
- return;
|
446
|
|
- }
|
447
|
|
-
|
448
|
|
- failCallback(new JitsiTrackError(
|
449
|
|
- JitsiTrackErrors.CHROME_EXTENSION_GENERIC_ERROR,
|
450
|
|
- response.error));
|
451
|
|
- }
|
|
439
|
+ onGetStreamResponse(response, streamCallback, failCallback);
|
452
|
440
|
}
|
453
|
441
|
);
|
454
|
442
|
}
|
|
@@ -513,6 +501,39 @@ function waitForExtensionAfterInstall(options, waitInterval, retries) {
|
513
|
501
|
});
|
514
|
502
|
}
|
515
|
503
|
|
|
504
|
+/**
|
|
505
|
+ * Handles response from external application / extension and calls GUM to
|
|
506
|
+ * receive the desktop streams or reports error.
|
|
507
|
+ * @param {object} response
|
|
508
|
+ * @param {string} response.streamId - the streamId for the desktop stream
|
|
509
|
+ * @param {string} response.error - error to be reported.
|
|
510
|
+ * @param {Function} onSuccess - callback for success.
|
|
511
|
+ * @param {Function} onFailure - callback for failure.
|
|
512
|
+ */
|
|
513
|
+function onGetStreamResponse(response, onSuccess, onFailure) {
|
|
514
|
+ if (response.streamId) {
|
|
515
|
+ GUM(
|
|
516
|
+ ['desktop'],
|
|
517
|
+ stream => onSuccess(stream),
|
|
518
|
+ onFailure,
|
|
519
|
+ { desktopStream: response.streamId });
|
|
520
|
+ } else {
|
|
521
|
+ // As noted in Chrome Desktop Capture API:
|
|
522
|
+ // If user didn't select any source (i.e. canceled the prompt)
|
|
523
|
+ // then the callback is called with an empty streamId.
|
|
524
|
+ if(response.streamId === "")
|
|
525
|
+ {
|
|
526
|
+ onFailure(new JitsiTrackError(
|
|
527
|
+ JitsiTrackErrors.CHROME_EXTENSION_USER_CANCELED));
|
|
528
|
+ return;
|
|
529
|
+ }
|
|
530
|
+
|
|
531
|
+ onFailure(new JitsiTrackError(
|
|
532
|
+ JitsiTrackErrors.CHROME_EXTENSION_GENERIC_ERROR,
|
|
533
|
+ response.error));
|
|
534
|
+ }
|
|
535
|
+}
|
|
536
|
+
|
516
|
537
|
/**
|
517
|
538
|
* Starts the detection of an installed jidesha extension for firefox.
|
518
|
539
|
* @param options supports "desktopSharingFirefoxDisabled",
|