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 });