Skip to content

Commit 1798b2a

Browse files
committed
fix: include host_permissions in default permission origins
1 parent 5d2e3aa commit 1798b2a

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

packages/electron-chrome-extensions/src/browser/api/permissions.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export class PermissionsAPI {
3636
const manifest: chrome.runtime.Manifest = extension.manifest
3737
this.permissionMap.set(extension.id, {
3838
permissions: (manifest.permissions || []) as chrome.runtime.ManifestPermissions[],
39-
origins: [],
39+
origins: manifest.host_permissions || [],
4040
})
4141
}
4242

@@ -69,6 +69,15 @@ export class PermissionsAPI {
6969
{ extension }: ExtensionEvent,
7070
request: chrome.permissions.Permissions,
7171
) => {
72+
const declaredPermissions = new Set([
73+
...(extension.manifest.permissions || []),
74+
...(extension.manifest.optional_permissions || []),
75+
])
76+
77+
if (request.permissions && !request.permissions.every((p) => declaredPermissions.has(p))) {
78+
throw new Error('Permissions request includes undeclared permission')
79+
}
80+
7281
const granted = await this.ctx.store.requestPermissions(extension, request)
7382
if (!granted) return false
7483

packages/electron-chrome-extensions/src/browser/router.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { app, Extension, ipcMain, session, Session, WebContents } from 'electron'
1+
import { app, ipcMain, session, Session, WebContents } from 'electron'
22

33
const createDebug = require('debug')
44

@@ -169,9 +169,13 @@ export type ExtensionSender = Electron.WebContents | Electron.ServiceWorkerMain
169169
// send: Electron.WebFrameMain['send']
170170
// }
171171

172+
type ExtendedExtension = Omit<Electron.Extension, 'manifest'> & {
173+
manifest: chrome.runtime.Manifest
174+
}
175+
172176
export type ExtensionEvent =
173-
| { type: 'frame'; sender: Electron.WebContents; extension: Extension }
174-
| { type: 'service-worker'; sender: Electron.ServiceWorkerMain; extension: Extension }
177+
| { type: 'frame'; sender: Electron.WebContents; extension: ExtendedExtension }
178+
| { type: 'service-worker'; sender: Electron.ServiceWorkerMain; extension: ExtendedExtension }
175179

176180
export type HandlerCallback = (event: ExtensionEvent, ...args: any[]) => any
177181

0 commit comments

Comments
 (0)