1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
from support.context import using_context
def get_ids_for_installed_addons(session):
with using_context(session, "chrome"):
return session.execute_async_script(
"""
const [resolve] = arguments;
const { AddonManager } = ChromeUtils.importESModule(
"resource://gre/modules/AddonManager.sys.mjs"
);
async function getAllAddons() {
const addons = await AddonManager.getAllAddons();
const ids = addons.map(x => x.id);
resolve(ids);
}
getAllAddons();
""",
)
def is_addon_temporary_installed(session, addon_id):
with using_context(session, "chrome"):
return session.execute_async_script(
"""
const [addon_id, resolve] = arguments;
const { AddonManager } = ChromeUtils.importESModule(
"resource://gre/modules/AddonManager.sys.mjs"
);
async function getAddonTemporaryInstalledField() {
const addons = await AddonManager.getAllAddons();
const addon = addons.find(x => x.id == addon_id);
if (addon) {
resolve(addon.temporarilyInstalled);
} else {
throw new Error(`Add-on with ID ${addon_id} doesn't exist`)
}
}
return getAddonTemporaryInstalledField();
""",
args=[addon_id],
)
def is_addon_private_browsing_allowed(session, addon_id):
with using_context(session, "chrome"):
return session.execute_async_script(
"""
const [addon_id, resolve] = arguments;
function getPrivateBrowsingAllowedAddonPolicyField() {
const policy = WebExtensionPolicy.getByID(addon_id);
if (policy) {
resolve(policy.privateBrowsingAllowed);
} else {
throw new Error(`Policy of add-on with ID ${addon_id} doesn't exist`)
}
}
return getPrivateBrowsingAllowedAddonPolicyField();
""",
args=[addon_id],
)
|