소스 검색

electron: call into JitsiMeet to open a desktop picker

#416
dev1
virtuacoplenny 8 년 전
부모
커밋
0173067481
3개의 변경된 파일37개의 추가작업 그리고 7개의 파일을 삭제
  1. 4
    0
      JitsiTrackError.js
  2. 14
    0
      JitsiTrackErrors.js
  3. 19
    7
      modules/RTC/ScreenObtainer.js

+ 4
- 0
JitsiTrackError.js 파일 보기

12
     = 'User canceled Chrome\'s screen sharing prompt';
12
     = 'User canceled Chrome\'s screen sharing prompt';
13
 TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.CHROME_EXTENSION_GENERIC_ERROR]
13
 TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.CHROME_EXTENSION_GENERIC_ERROR]
14
     = 'Unknown error from Chrome extension';
14
     = 'Unknown error from Chrome extension';
15
+TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.ELECTRON_DESKTOP_PICKER_ERROR]
16
+    = 'Unkown error from desktop picker';
17
+TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.ELECTRON_DESKTOP_PICKER_NOT_FOUND]
18
+    = 'Failed to detect desktop picker';
15
 TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.GENERAL]
19
 TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.GENERAL]
16
     = 'Generic getUserMedia error';
20
     = 'Generic getUserMedia error';
17
 TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.PERMISSION_DENIED]
21
 TRACK_ERROR_TO_MESSAGE_MAP[JitsiTrackErrors.PERMISSION_DENIED]

+ 14
- 0
JitsiTrackErrors.js 파일 보기

28
  */
28
  */
29
 export const CONSTRAINT_FAILED = 'gum.constraint_failed';
29
 export const CONSTRAINT_FAILED = 'gum.constraint_failed';
30
 
30
 
31
+/**
32
+ * A generic error which indicates an error occurred while selecting
33
+ * a DesktopCapturerSource from the electron app.
34
+ */
35
+export const ELECTRON_DESKTOP_PICKER_ERROR
36
+    = 'gum.electron_desktop_picker_error';
37
+
38
+/**
39
+ * An error which indicates a custom desktop picker could not be detected
40
+ * for the electron app.
41
+ */
42
+export const ELECTRON_DESKTOP_PICKER_NOT_FOUND
43
+    = 'gum.electron_desktop_picker_not_found';
44
+
31
 /**
45
 /**
32
  * An error which indicates that the jidesha extension for Firefox is
46
  * An error which indicates that the jidesha extension for Firefox is
33
  * needed to proceed with screen sharing, and that it is not installed.
47
  * needed to proceed with screen sharing, and that it is not installed.

+ 19
- 7
modules/RTC/ScreenObtainer.js 파일 보기

116
                     });
116
                     });
117
             };
117
             };
118
         } else if (RTCBrowserType.isElectron()) {
118
         } else if (RTCBrowserType.isElectron()) {
119
-            obtainDesktopStream = (_, onSuccess, onFailure) =>
120
-                window.JitsiMeetElectron.obtainDesktopStream(
121
-                    streamId =>
122
-                        onGetStreamResponse({ streamId }, onSuccess, onFailure),
123
-                    err => onFailure(new JitsiTrackError(
124
-                        JitsiTrackErrors.CHROME_EXTENSION_GENERIC_ERROR, err))
125
-                );
119
+            obtainDesktopStream = (_, onSuccess, onFailure) => {
120
+                if (window.JitsiMeetScreenObtainer
121
+                    && window.JitsiMeetScreenObtainer.openDesktopPicker) {
122
+                    window.JitsiMeetScreenObtainer.openDesktopPicker(
123
+                        streamId =>
124
+                            onGetStreamResponse({ streamId },
125
+                            onSuccess,
126
+                            onFailure
127
+                        ),
128
+                        err => onFailure(new JitsiTrackError(
129
+                            JitsiTrackErrors.ELECTRON_DESKTOP_PICKER_ERROR,
130
+                            err
131
+                        ))
132
+                    );
133
+                } else {
134
+                    onFailure(new JitsiTrackError(
135
+                        JitsiTrackErrors.ELECTRON_DESKTOP_PICKER_NOT_FOUND));
136
+                }
137
+            };
126
         } else if (RTCBrowserType.isTemasysPluginUsed()) {
138
         } else if (RTCBrowserType.isTemasysPluginUsed()) {
127
             // XXX Don't require Temasys unless it's to be used because it
139
             // XXX Don't require Temasys unless it's to be used because it
128
             // doesn't run on React Native, for example.
140
             // doesn't run on React Native, for example.

Loading…
취소
저장