|
@@ -8,6 +8,10 @@ import Statistics from './modules/statistics/statistics';
|
8
|
8
|
|
9
|
9
|
import * as JitsiMediaDevicesEvents from './JitsiMediaDevicesEvents';
|
10
|
10
|
|
|
11
|
+const AUDIO_PERMISSION_NAME = 'microphone';
|
|
12
|
+const PERMISSION_GRANTED_STATUS = 'granted';
|
|
13
|
+const VIDEO_PERMISSION_NAME = 'camera';
|
|
14
|
+
|
11
|
15
|
/**
|
12
|
16
|
* Media devices utilities for Jitsi.
|
13
|
17
|
*/
|
|
@@ -47,7 +51,7 @@ class JitsiMediaDevices {
|
47
|
51
|
return;
|
48
|
52
|
}
|
49
|
53
|
|
50
|
|
- navigator.permissions.query({ name: 'camera ' })
|
|
54
|
+ navigator.permissions.query({ name: VIDEO_PERMISSION_NAME })
|
51
|
55
|
.then(() => resolve(true), () => resolve(false));
|
52
|
56
|
});
|
53
|
57
|
}
|
|
@@ -142,21 +146,37 @@ class JitsiMediaDevices {
|
142
|
146
|
switch (type) {
|
143
|
147
|
case MediaType.VIDEO:
|
144
|
148
|
promises.push(
|
145
|
|
- navigator.permissions.query({ name: 'camera' }));
|
|
149
|
+ navigator.permissions.query({
|
|
150
|
+ name: VIDEO_PERMISSION_NAME
|
|
151
|
+ }));
|
146
|
152
|
break;
|
147
|
153
|
case MediaType.AUDIO:
|
148
|
154
|
promises.push(
|
149
|
|
- navigator.permissions.query({ name: 'microphone' }));
|
|
155
|
+ navigator.permissions.query({
|
|
156
|
+ name: AUDIO_PERMISSION_NAME
|
|
157
|
+ }));
|
150
|
158
|
break;
|
151
|
159
|
default:
|
152
|
160
|
promises.push(
|
153
|
|
- navigator.permissions.query({ name: 'camera' }));
|
|
161
|
+ navigator.permissions.query({
|
|
162
|
+ name: VIDEO_PERMISSION_NAME
|
|
163
|
+ }));
|
154
|
164
|
promises.push(
|
155
|
|
- navigator.permissions.query({ name: 'microphone' }));
|
|
165
|
+ navigator.permissions.query({
|
|
166
|
+ name: AUDIO_PERMISSION_NAME
|
|
167
|
+ }));
|
156
|
168
|
}
|
157
|
169
|
|
158
|
170
|
Promise.all(promises).then(
|
159
|
|
- r => resolve(r.every(Boolean)),
|
|
171
|
+ results => resolve(results.every(permissionStatus => {
|
|
172
|
+ // The status attribute is deprecated, and state
|
|
173
|
+ // should be used instead, but check both for now
|
|
174
|
+ // for backwards compatibility.
|
|
175
|
+ const grantStatus = permissionStatus.state
|
|
176
|
+ || permissionStatus.status;
|
|
177
|
+
|
|
178
|
+ return grantStatus === PERMISSION_GRANTED_STATUS;
|
|
179
|
+ })),
|
160
|
180
|
() => resolve(false)
|
161
|
181
|
);
|
162
|
182
|
});
|