tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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        )