github.com/primecitizens/pcz/std@v0.2.1/plat/js/webext/webrtcdesktopcaptureprivate/bindings/ffi_bindings.ts (about)

     1  import { importModule, Application, heap, Pointer } from "@ffi";
     2  
     3  importModule("plat/js/webext/webrtcdesktopcaptureprivate", (A: Application) => {
     4    const WEBEXT = typeof globalThis.browser === "undefined" ? globalThis.chrome : globalThis.browser;
     5  
     6    return {
     7      "constof_DesktopCaptureSourceType": (ref: heap.Ref<string>): number => {
     8        const idx = ["screen", "window", "tab"].indexOf(A.H.get(ref));
     9        return idx < 0 ? 0 : idx + 1;
    10      },
    11  
    12      "store_RequestInfo": (ptr: Pointer, ref: heap.Ref<any>) => {
    13        const x = A.H.get<any>(ref);
    14  
    15        if (typeof x === "undefined") {
    16          A.store.Bool(ptr + 10, false);
    17          A.store.Bool(ptr + 8, false);
    18          A.store.Int32(ptr + 0, 0);
    19          A.store.Bool(ptr + 9, false);
    20          A.store.Int32(ptr + 4, 0);
    21        } else {
    22          A.store.Bool(ptr + 10, true);
    23          A.store.Bool(ptr + 8, "guestProcessId" in x ? true : false);
    24          A.store.Int32(ptr + 0, x["guestProcessId"] === undefined ? 0 : (x["guestProcessId"] as number));
    25          A.store.Bool(ptr + 9, "guestRenderFrameId" in x ? true : false);
    26          A.store.Int32(ptr + 4, x["guestRenderFrameId"] === undefined ? 0 : (x["guestRenderFrameId"] as number));
    27        }
    28      },
    29      "load_RequestInfo": (ptr: Pointer, create: heap.Ref<boolean>, ref: heap.Ref<any>): heap.Ref<any> => {
    30        const x = create === A.H.TRUE ? {} : A.H.get<any>(ref);
    31  
    32        if (A.load.Bool(ptr + 8)) {
    33          x["guestProcessId"] = A.load.Int32(ptr + 0);
    34        } else {
    35          delete x["guestProcessId"];
    36        }
    37        if (A.load.Bool(ptr + 9)) {
    38          x["guestRenderFrameId"] = A.load.Int32(ptr + 4);
    39        } else {
    40          delete x["guestRenderFrameId"];
    41        }
    42        return create === A.H.TRUE ? A.H.push(x) : ref;
    43      },
    44      "has_CancelChooseDesktopMedia": (): heap.Ref<boolean> => {
    45        if (WEBEXT?.webrtcDesktopCapturePrivate && "cancelChooseDesktopMedia" in WEBEXT?.webrtcDesktopCapturePrivate) {
    46          return A.H.TRUE;
    47        }
    48        return A.H.FALSE;
    49      },
    50      "func_CancelChooseDesktopMedia": (fn: Pointer): void => {
    51        A.store.Ref(fn, WEBEXT.webrtcDesktopCapturePrivate.cancelChooseDesktopMedia);
    52      },
    53      "call_CancelChooseDesktopMedia": (retPtr: Pointer, desktopMediaRequestId: number): void => {
    54        const _ret = WEBEXT.webrtcDesktopCapturePrivate.cancelChooseDesktopMedia(desktopMediaRequestId);
    55      },
    56      "try_CancelChooseDesktopMedia": (
    57        retPtr: Pointer,
    58        errPtr: Pointer,
    59        desktopMediaRequestId: number
    60      ): heap.Ref<boolean> => {
    61        try {
    62          const _ret = WEBEXT.webrtcDesktopCapturePrivate.cancelChooseDesktopMedia(desktopMediaRequestId);
    63          return A.H.TRUE;
    64        } catch (err: any) {
    65          A.store.Ref(errPtr, err);
    66          return A.H.FALSE;
    67        }
    68      },
    69      "has_ChooseDesktopMedia": (): heap.Ref<boolean> => {
    70        if (WEBEXT?.webrtcDesktopCapturePrivate && "chooseDesktopMedia" in WEBEXT?.webrtcDesktopCapturePrivate) {
    71          return A.H.TRUE;
    72        }
    73        return A.H.FALSE;
    74      },
    75      "func_ChooseDesktopMedia": (fn: Pointer): void => {
    76        A.store.Ref(fn, WEBEXT.webrtcDesktopCapturePrivate.chooseDesktopMedia);
    77      },
    78      "call_ChooseDesktopMedia": (
    79        retPtr: Pointer,
    80        sources: heap.Ref<object>,
    81        request: Pointer,
    82        callback: heap.Ref<object>
    83      ): void => {
    84        const request_ffi = {};
    85  
    86        if (A.load.Bool(request + 8)) {
    87          request_ffi["guestProcessId"] = A.load.Int32(request + 0);
    88        }
    89        if (A.load.Bool(request + 9)) {
    90          request_ffi["guestRenderFrameId"] = A.load.Int32(request + 4);
    91        }
    92  
    93        const _ret = WEBEXT.webrtcDesktopCapturePrivate.chooseDesktopMedia(
    94          A.H.get<object>(sources),
    95          request_ffi,
    96          A.H.get<object>(callback)
    97        );
    98        A.store.Int32(retPtr, _ret);
    99      },
   100      "try_ChooseDesktopMedia": (
   101        retPtr: Pointer,
   102        errPtr: Pointer,
   103        sources: heap.Ref<object>,
   104        request: Pointer,
   105        callback: heap.Ref<object>
   106      ): heap.Ref<boolean> => {
   107        try {
   108          const request_ffi = {};
   109  
   110          if (A.load.Bool(request + 8)) {
   111            request_ffi["guestProcessId"] = A.load.Int32(request + 0);
   112          }
   113          if (A.load.Bool(request + 9)) {
   114            request_ffi["guestRenderFrameId"] = A.load.Int32(request + 4);
   115          }
   116  
   117          const _ret = WEBEXT.webrtcDesktopCapturePrivate.chooseDesktopMedia(
   118            A.H.get<object>(sources),
   119            request_ffi,
   120            A.H.get<object>(callback)
   121          );
   122          A.store.Int32(retPtr, _ret);
   123          return A.H.TRUE;
   124        } catch (err: any) {
   125          A.store.Ref(errPtr, err);
   126          return A.H.FALSE;
   127        }
   128      },
   129    };
   130  });