(evt: Event)
| 85 | // Only register the event handler in ISOLATED world (where chrome.runtime is available) |
| 86 | if (isIsolatedWorld) { |
| 87 | const eventHandler = (evt: Event) => { |
| 88 | const browserAPI = getBrowserAPI(); |
| 89 | const customEvt = evt as CustomEvent; |
| 90 | const { seq, req } = customEvt.detail; |
| 91 | if (!seq) return; |
| 92 | if (!browserAPI?.runtime?.sendMessage) return; |
| 93 | browserAPI.runtime |
| 94 | .sendMessage({ |
| 95 | action: handlerName, |
| 96 | args: req, |
| 97 | }) |
| 98 | .then((res: { error?: string }) => { |
| 99 | if (res.error) { |
| 100 | window.dispatchEvent( |
| 101 | new CustomEvent(`${errEvtName}/${seq}`, { |
| 102 | detail: { seq, err: res.error }, |
| 103 | }), |
| 104 | ); |
| 105 | } else { |
| 106 | window.dispatchEvent(new CustomEvent(`${resEvtName}/${seq}`, { detail: { seq, res } })); |
| 107 | } |
| 108 | }) |
| 109 | .catch((err: { error?: string }) => { |
| 110 | window.dispatchEvent(new CustomEvent(`${errEvtName}/${seq}`, { detail: { seq, err } })); |
| 111 | }); |
| 112 | }; |
| 113 | window.addEventListener(reqEvtName, eventHandler); |
| 114 | } |
| 115 |
nothing calls this directly
no test coverage detected