summaryrefslogtreecommitdiffstats
path: root/mobile/android/modules/geckoview/GeckoViewWebExtension.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/modules/geckoview/GeckoViewWebExtension.sys.mjs')
-rw-r--r--mobile/android/modules/geckoview/GeckoViewWebExtension.sys.mjs31
1 files changed, 26 insertions, 5 deletions
diff --git a/mobile/android/modules/geckoview/GeckoViewWebExtension.sys.mjs b/mobile/android/modules/geckoview/GeckoViewWebExtension.sys.mjs
index ae821a3656..97538fd6bb 100644
--- a/mobile/android/modules/geckoview/GeckoViewWebExtension.sys.mjs
+++ b/mobile/android/modules/geckoview/GeckoViewWebExtension.sys.mjs
@@ -158,7 +158,7 @@ class EmbedderPort {
data: holder.deserialize({}),
});
}
- onEvent(aEvent, aData, aCallback) {
+ onEvent(aEvent, aData) {
debug`onEvent ${aEvent} ${aData}`;
switch (aEvent) {
@@ -360,6 +360,23 @@ async function exportExtension(aAddon, aPermissions, aSourceURI) {
updateDate = null;
}
+ const normalizePermissions = perms => {
+ if (perms?.permissions) {
+ perms = { ...perms };
+ perms.permissions = perms.permissions.filter(
+ perm => !perm.startsWith("internal:")
+ );
+ }
+ return perms;
+ };
+
+ const optionalPermissions = aAddon.optionalPermissions?.permissions ?? [];
+ const optionalOrigins = aAddon.optionalPermissions?.origins ?? [];
+ const grantedPermissions =
+ normalizePermissions(await lazy.ExtensionPermissions.get(id)) ?? [];
+ const grantedOptionalPermissions = grantedPermissions?.permissions ?? [];
+ const grantedOptionalOrigins = grantedPermissions?.origins ?? [];
+
return {
webExtensionId: id,
locationURI: aSourceURI != null ? aSourceURI.spec : "",
@@ -393,6 +410,10 @@ async function exportExtension(aAddon, aPermissions, aSourceURI) {
temporary: temporarilyInstalled,
updateDate,
version,
+ optionalPermissions,
+ optionalOrigins,
+ grantedOptionalPermissions,
+ grantedOptionalOrigins,
},
};
}
@@ -528,7 +549,7 @@ class ExtensionPromptObserver {
resolve(response.allow);
}
- observe(aSubject, aTopic, aData) {
+ observe(aSubject, aTopic) {
debug`observe ${aTopic}`;
switch (aTopic) {
@@ -572,7 +593,7 @@ class AddonInstallObserver {
});
}
- observe(aSubject, aTopic, aData) {
+ observe(aSubject, aTopic) {
debug`observe ${aTopic}`;
switch (aTopic) {
case "addon-install-failed": {
@@ -758,7 +779,7 @@ class ExtensionProcessListener {
]);
}
- async onEvent(aEvent, aData, aCallback) {
+ async onEvent(aEvent, aData) {
debug`onEvent ${aEvent} ${aData}`;
switch (aEvent) {
@@ -872,7 +893,7 @@ async function updatePromptHandler(aInfo) {
}
export var GeckoViewWebExtension = {
- observe(aSubject, aTopic, aData) {
+ observe(aSubject, aTopic) {
debug`observe ${aTopic}`;
switch (aTopic) {