File: addons.py

package info (click to toggle)
firefox 143.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,617,328 kB
  • sloc: cpp: 7,478,492; javascript: 6,417,157; ansic: 3,720,058; python: 1,396,372; xml: 627,523; asm: 438,677; java: 186,156; sh: 63,477; makefile: 19,171; objc: 13,059; perl: 12,983; yacc: 4,583; cs: 3,846; pascal: 3,405; lex: 1,720; ruby: 1,003; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 53; csh: 10
file content (67 lines) | stat: -rw-r--r-- 2,256 bytes parent folder | download | duplicates (13)
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],
        )