| 136 | }; |
| 137 | |
| 138 | export const requestContentScripts: CreateRequestContentScripts = ( |
| 139 | client, |
| 140 | logEvent, |
| 141 | ) => { |
| 142 | return async ({ |
| 143 | origin, |
| 144 | skipRedirect, |
| 145 | }: { |
| 146 | origin: string; |
| 147 | skipRedirect?: boolean; |
| 148 | }) => { |
| 149 | logEvent({ |
| 150 | event_name: LogEventName.RequestContentScripts, |
| 151 | extra: JSON.stringify({ origin }), |
| 152 | }); |
| 153 | |
| 154 | const granted = await browser.permissions.request({ |
| 155 | origins: ['*://*/*'], |
| 156 | }); |
| 157 | |
| 158 | if (granted) { |
| 159 | logEvent({ |
| 160 | event_name: LogEventName.ApproveContentScripts, |
| 161 | extra: JSON.stringify({ origin }), |
| 162 | }); |
| 163 | client.setQueryData(contentScriptKey, true); |
| 164 | await registerBrowserContentScripts(); |
| 165 | |
| 166 | if (!skipRedirect) { |
| 167 | window.open(companionPermissionGrantedLink, '_blank'); |
| 168 | } |
| 169 | } else { |
| 170 | logEvent({ |
| 171 | event_name: LogEventName.DeclineContentScripts, |
| 172 | extra: JSON.stringify({ origin }), |
| 173 | }); |
| 174 | } |
| 175 | |
| 176 | return granted; |
| 177 | }; |
| 178 | }; |
| 179 | |
| 180 | export const getHostPermission = (): Promise<boolean> => |
| 181 | browser.permissions.contains({ |