(extensionId: string)
| 28 | cachedAccessInfo = undefined; |
| 29 | } |
| 30 | export async function requestApiAccess(extensionId: string): Promise<{ accessAllowed: boolean }> { |
| 31 | if (!workspace.isTrusted) { |
| 32 | return { accessAllowed: false }; |
| 33 | } |
| 34 | if (extensionId === JVSC_EXTENSION_ID) { |
| 35 | // Our own extension can use this API (used in tests) |
| 36 | return { accessAllowed: true }; |
| 37 | } |
| 38 | let apiAccess = extensionApiAccess.get(extensionId); |
| 39 | if (!apiAccess) { |
| 40 | apiAccess = requestKernelAccessImpl(extensionId); |
| 41 | extensionApiAccess.set(extensionId, apiAccess); |
| 42 | void apiAccess.then(({ result }) => { |
| 43 | if ( |
| 44 | (result === 'learnMore' || result === 'cancelled') && |
| 45 | extensionApiAccess.get(extensionId) === apiAccess |
| 46 | ) { |
| 47 | extensionApiAccess.delete(extensionId); |
| 48 | extensionsTriedAccessingApi.add(extensionId); |
| 49 | } |
| 50 | }); |
| 51 | } |
| 52 | return apiAccess.then(({ result }) => ({ accessAllowed: result === 'allowed' })); |
| 53 | } |
| 54 | |
| 55 | async function requestKernelAccessImpl( |
| 56 | extensionId: string |
no test coverage detected