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