Houjie
2025-04-11 1bf977929dd324f3ac64b70debd8a79443c54392
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
 * @fileoverview
 * Libraries associated with Camera Permissions.
 * 
 * @author mebjas <minhazav@gmail.com>
 */
 
/**
 * Permission management around Camera in javascript.
 * 
 * TODO(mebjas): Migrate camera specific code / logic to this class / library.
 */
 export class CameraPermissions {
 
    /**
     * Returns {@code true} if the web page already has access to user camera 
     * permissions.
     */
    public static async hasPermissions(): Promise<boolean> {
      // TODO(mebjas): Use Permissions Query API, once support is widespread.
      // https://developer.mozilla.org/en-US/docs/Web/API/Permissions/query
  
      let devices = await navigator.mediaDevices.enumerateDevices();
      for (const device of devices) {
        // Hacky way to check if camera permissions are granted. Device
        // labels are only set in case user has granted permissions.
        if(device.kind === "videoinput" && device.label) {
          return true;
        }
      }
  
      return false;
    }
}