tor-browser

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

test_simple_pref_policies.js (32673B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 /*
      7 * Use this file to add tests to policies that are
      8 * simple pref flips.
      9 *
     10 * It's best to make a test to actually test the feature
     11 * instead of the pref flip, but if that feature is well
     12 * covered by tests, including that its pref actually works,
     13 * it's OK to have the policy test here just to ensure
     14 * that the right pref values are set.
     15 */
     16 
     17 const POLICIES_TESTS = [
     18  /*
     19   * Example:
     20   * {
     21   *   // Policies to be set at once through the engine
     22   *   policies: { "DisableFoo": true, "ConfigureBar": 42 },
     23   *
     24   *   // Locked prefs to check
     25   *   lockedPrefs: { "feature.foo": false },
     26   *
     27   *   // Unlocked prefs to check
     28   *   unlockedPrefs: { "bar.baz": 42 }
     29   * },
     30   */
     31 
     32  // POLICY: DisableSecurityBypass
     33  {
     34    policies: {
     35      DisableSecurityBypass: {
     36        InvalidCertificate: true,
     37        SafeBrowsing: true,
     38      },
     39    },
     40    lockedPrefs: {
     41      "security.certerror.hideAddException": true,
     42      "browser.safebrowsing.allowOverride": false,
     43    },
     44  },
     45 
     46  // POLICY: DisableFormHistory
     47  {
     48    policies: { DisableFormHistory: true },
     49    lockedPrefs: { "browser.formfill.enable": false },
     50  },
     51 
     52  // POLICY: EnableTrackingProtection
     53  {
     54    policies: {
     55      EnableTrackingProtection: {
     56        Value: true,
     57      },
     58    },
     59    unlockedPrefs: {
     60      "privacy.trackingprotection.enabled": true,
     61      "privacy.trackingprotection.pbmode.enabled": true,
     62    },
     63  },
     64  {
     65    policies: {
     66      EnableTrackingProtection: {
     67        Value: false,
     68        Locked: true,
     69      },
     70    },
     71    lockedPrefs: {
     72      "privacy.trackingprotection.enabled": false,
     73      "privacy.trackingprotection.pbmode.enabled": false,
     74    },
     75  },
     76 
     77  {
     78    policies: {
     79      EnableTrackingProtection: {
     80        Cryptomining: true,
     81        Fingerprinting: true,
     82        EmailTracking: true,
     83        SuspectedFingerprinting: true,
     84        BaselineExceptions: true,
     85        ConvenienceExceptions: true,
     86        Locked: true,
     87      },
     88    },
     89    lockedPrefs: {
     90      "privacy.trackingprotection.cryptomining.enabled": true,
     91      "privacy.trackingprotection.fingerprinting.enabled": true,
     92      "privacy.trackingprotection.emailtracking.enabled": true,
     93      "privacy.trackingprotection.emailtracking.pbmode.enabled": true,
     94      "privacy.fingerprintingProtection": true,
     95      "privacy.fingerprintingProtection.pbmode": true,
     96      "privacy.trackingprotection.allow_list.baseline.enabled": true,
     97      "privacy.trackingprotection.allow_list.convenience.enabled": true,
     98    },
     99  },
    100 
    101  // POLICY: GoToIntranetSiteForSingleWordEntryInAddressBar
    102  {
    103    policies: {
    104      GoToIntranetSiteForSingleWordEntryInAddressBar: true,
    105    },
    106    lockedPrefs: {
    107      "browser.fixup.dns_first_for_single_words": true,
    108    },
    109  },
    110 
    111  // POLICY: OverrideFirstRunPage
    112  {
    113    policies: { OverrideFirstRunPage: "https://www.example.com/" },
    114    lockedPrefs: { "startup.homepage_welcome_url": "https://www.example.com/" },
    115  },
    116 
    117  // POLICY: Authentication
    118  {
    119    policies: {
    120      Authentication: {
    121        SPNEGO: ["a.com", "b.com"],
    122        Delegated: ["a.com", "b.com"],
    123        NTLM: ["a.com", "b.com"],
    124        AllowNonFQDN: {
    125          SPNEGO: true,
    126          NTLM: true,
    127        },
    128        AllowProxies: {
    129          SPNEGO: false,
    130          NTLM: false,
    131        },
    132        PrivateBrowsing: true,
    133      },
    134    },
    135    lockedPrefs: {
    136      "network.negotiate-auth.trusted-uris": "a.com, b.com",
    137      "network.negotiate-auth.delegation-uris": "a.com, b.com",
    138      "network.automatic-ntlm-auth.trusted-uris": "a.com, b.com",
    139      "network.automatic-ntlm-auth.allow-non-fqdn": true,
    140      "network.negotiate-auth.allow-non-fqdn": true,
    141      "network.automatic-ntlm-auth.allow-proxies": false,
    142      "network.negotiate-auth.allow-proxies": false,
    143      "network.auth.private-browsing-sso": true,
    144    },
    145  },
    146 
    147  // POLICY: Authentication (unlocked)
    148  {
    149    policies: {
    150      Authentication: {
    151        SPNEGO: ["a.com", "b.com"],
    152        Delegated: ["a.com", "b.com"],
    153        NTLM: ["a.com", "b.com"],
    154        AllowNonFQDN: {
    155          SPNEGO: true,
    156          NTLM: true,
    157        },
    158        AllowProxies: {
    159          SPNEGO: false,
    160          NTLM: false,
    161        },
    162        PrivateBrowsing: true,
    163        Locked: false,
    164      },
    165    },
    166    unlockedPrefs: {
    167      "network.negotiate-auth.trusted-uris": "a.com, b.com",
    168      "network.negotiate-auth.delegation-uris": "a.com, b.com",
    169      "network.automatic-ntlm-auth.trusted-uris": "a.com, b.com",
    170      "network.automatic-ntlm-auth.allow-non-fqdn": true,
    171      "network.negotiate-auth.allow-non-fqdn": true,
    172      "network.automatic-ntlm-auth.allow-proxies": false,
    173      "network.negotiate-auth.allow-proxies": false,
    174      "network.auth.private-browsing-sso": true,
    175    },
    176  },
    177 
    178  // POLICY: Certificates (false)
    179  {
    180    policies: {
    181      Certificates: {
    182        ImportEnterpriseRoots: false,
    183      },
    184    },
    185    lockedPrefs: {
    186      "security.enterprise_roots.enabled": false,
    187    },
    188  },
    189 
    190  // POLICY: InstallAddons.Default (block addon installs)
    191  {
    192    policies: {
    193      InstallAddonsPermission: {
    194        Default: false,
    195      },
    196    },
    197    lockedPrefs: {
    198      "xpinstall.enabled": false,
    199      "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons": false,
    200      "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features": false,
    201    },
    202  },
    203 
    204  // POLICY: SanitizeOnShutdown
    205  {
    206    policies: {
    207      SanitizeOnShutdown: true,
    208    },
    209    lockedPrefs: {
    210      "privacy.sanitize.sanitizeOnShutdown": true,
    211      "privacy.clearOnShutdown.cache": true,
    212      "privacy.clearOnShutdown.cookies": true,
    213      "privacy.clearOnShutdown.downloads": true,
    214      "privacy.clearOnShutdown.formdata": true,
    215      "privacy.clearOnShutdown.history": true,
    216      "privacy.clearOnShutdown.sessions": true,
    217      "privacy.clearOnShutdown.siteSettings": true,
    218      "privacy.clearOnShutdown.offlineApps": true,
    219      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": true,
    220      "privacy.clearOnShutdown_v2.cookiesAndStorage": true,
    221      "privacy.clearOnShutdown_v2.cache": true,
    222      "privacy.clearOnShutdown_v2.siteSettings": true,
    223      "privacy.clearOnShutdown_v2.formdata": true,
    224    },
    225  },
    226 
    227  {
    228    policies: {
    229      SanitizeOnShutdown: false,
    230    },
    231    lockedPrefs: {
    232      "privacy.sanitize.sanitizeOnShutdown": false,
    233      "privacy.clearOnShutdown.cache": false,
    234      "privacy.clearOnShutdown.cookies": false,
    235      "privacy.clearOnShutdown.downloads": false,
    236      "privacy.clearOnShutdown.formdata": false,
    237      "privacy.clearOnShutdown.history": false,
    238      "privacy.clearOnShutdown.sessions": false,
    239      "privacy.clearOnShutdown.siteSettings": false,
    240      "privacy.clearOnShutdown.offlineApps": false,
    241      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": false,
    242      "privacy.clearOnShutdown_v2.cookiesAndStorage": false,
    243      "privacy.clearOnShutdown_v2.cache": false,
    244      "privacy.clearOnShutdown_v2.siteSettings": false,
    245      "privacy.clearOnShutdown_v2.formdata": false,
    246    },
    247  },
    248 
    249  {
    250    policies: {
    251      SanitizeOnShutdown: {
    252        Cache: true,
    253      },
    254    },
    255    lockedPrefs: {
    256      "privacy.sanitize.sanitizeOnShutdown": true,
    257      "privacy.clearOnShutdown.cache": true,
    258      "privacy.clearOnShutdown.cookies": false,
    259      "privacy.clearOnShutdown.downloads": false,
    260      "privacy.clearOnShutdown.formdata": false,
    261      "privacy.clearOnShutdown.history": false,
    262      "privacy.clearOnShutdown.sessions": false,
    263      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": false,
    264      "privacy.clearOnShutdown_v2.cookiesAndStorage": false,
    265      "privacy.clearOnShutdown_v2.cache": true,
    266      "privacy.clearOnShutdown_v2.formdata": false,
    267    },
    268  },
    269 
    270  {
    271    policies: {
    272      SanitizeOnShutdown: {
    273        Cookies: true,
    274      },
    275    },
    276    lockedPrefs: {
    277      "privacy.sanitize.sanitizeOnShutdown": true,
    278      "privacy.clearOnShutdown.cache": false,
    279      "privacy.clearOnShutdown.cookies": true,
    280      "privacy.clearOnShutdown.downloads": false,
    281      "privacy.clearOnShutdown.formdata": false,
    282      "privacy.clearOnShutdown.history": false,
    283      "privacy.clearOnShutdown.sessions": false,
    284      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": false,
    285      "privacy.clearOnShutdown_v2.cookiesAndStorage": true,
    286      "privacy.clearOnShutdown_v2.cache": false,
    287      "privacy.clearOnShutdown_v2.formdata": false,
    288    },
    289  },
    290 
    291  {
    292    policies: {
    293      SanitizeOnShutdown: {
    294        Downloads: true,
    295      },
    296    },
    297    lockedPrefs: {
    298      "privacy.sanitize.sanitizeOnShutdown": true,
    299      "privacy.clearOnShutdown.cache": false,
    300      "privacy.clearOnShutdown.cookies": false,
    301      "privacy.clearOnShutdown.downloads": true,
    302      "privacy.clearOnShutdown.formdata": false,
    303      "privacy.clearOnShutdown.history": false,
    304      "privacy.clearOnShutdown.sessions": false,
    305      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": false,
    306      "privacy.clearOnShutdown_v2.cookiesAndStorage": false,
    307      "privacy.clearOnShutdown_v2.cache": false,
    308      "privacy.clearOnShutdown_v2.formdata": false,
    309    },
    310  },
    311 
    312  {
    313    policies: {
    314      SanitizeOnShutdown: {
    315        FormData: true,
    316      },
    317    },
    318    lockedPrefs: {
    319      "privacy.sanitize.sanitizeOnShutdown": true,
    320      "privacy.clearOnShutdown.cache": false,
    321      "privacy.clearOnShutdown.cookies": false,
    322      "privacy.clearOnShutdown.downloads": false,
    323      "privacy.clearOnShutdown.formdata": true,
    324      "privacy.clearOnShutdown.history": false,
    325      "privacy.clearOnShutdown.sessions": false,
    326      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": false,
    327      "privacy.clearOnShutdown_v2.cookiesAndStorage": false,
    328      "privacy.clearOnShutdown_v2.cache": false,
    329      "privacy.clearOnShutdown_v2.formdata": true,
    330    },
    331  },
    332 
    333  {
    334    policies: {
    335      SanitizeOnShutdown: {
    336        History: true,
    337      },
    338    },
    339    lockedPrefs: {
    340      "privacy.sanitize.sanitizeOnShutdown": true,
    341      "privacy.clearOnShutdown.cache": false,
    342      "privacy.clearOnShutdown.cookies": false,
    343      "privacy.clearOnShutdown.downloads": false,
    344      "privacy.clearOnShutdown.formdata": false,
    345      "privacy.clearOnShutdown.history": true,
    346      "privacy.clearOnShutdown.sessions": false,
    347      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": true,
    348      "privacy.clearOnShutdown_v2.cookiesAndStorage": false,
    349      "privacy.clearOnShutdown_v2.cache": false,
    350      "privacy.clearOnShutdown_v2.formdata": false,
    351    },
    352  },
    353 
    354  {
    355    policies: {
    356      SanitizeOnShutdown: {
    357        Sessions: true,
    358      },
    359    },
    360    lockedPrefs: {
    361      "privacy.sanitize.sanitizeOnShutdown": true,
    362      "privacy.clearOnShutdown.cache": false,
    363      "privacy.clearOnShutdown.cookies": false,
    364      "privacy.clearOnShutdown.downloads": false,
    365      "privacy.clearOnShutdown.formdata": false,
    366      "privacy.clearOnShutdown.history": false,
    367      "privacy.clearOnShutdown.sessions": true,
    368      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": false,
    369      "privacy.clearOnShutdown_v2.cookiesAndStorage": false,
    370      "privacy.clearOnShutdown_v2.cache": false,
    371      "privacy.clearOnShutdown_v2.formdata": false,
    372    },
    373  },
    374 
    375  {
    376    policies: {
    377      SanitizeOnShutdown: {
    378        SiteSettings: true,
    379      },
    380    },
    381    lockedPrefs: {
    382      "privacy.sanitize.sanitizeOnShutdown": true,
    383      "privacy.clearOnShutdown.cache": false,
    384      "privacy.clearOnShutdown.cookies": false,
    385      "privacy.clearOnShutdown.downloads": false,
    386      "privacy.clearOnShutdown.formdata": false,
    387      "privacy.clearOnShutdown.history": false,
    388      "privacy.clearOnShutdown.sessions": false,
    389      "privacy.clearOnShutdown.siteSettings": true,
    390      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": false,
    391      "privacy.clearOnShutdown_v2.cookiesAndStorage": false,
    392      "privacy.clearOnShutdown_v2.cache": false,
    393      "privacy.clearOnShutdown_v2.siteSettings": true,
    394      "privacy.clearOnShutdown_v2.formdata": false,
    395    },
    396  },
    397 
    398  {
    399    policies: {
    400      SanitizeOnShutdown: {
    401        OfflineApps: true,
    402      },
    403    },
    404    lockedPrefs: {
    405      "privacy.sanitize.sanitizeOnShutdown": true,
    406      "privacy.clearOnShutdown.cache": false,
    407      "privacy.clearOnShutdown.cookies": false,
    408      "privacy.clearOnShutdown.downloads": false,
    409      "privacy.clearOnShutdown.formdata": false,
    410      "privacy.clearOnShutdown.history": false,
    411      "privacy.clearOnShutdown.sessions": false,
    412      "privacy.clearOnShutdown.offlineApps": true,
    413      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": false,
    414      "privacy.clearOnShutdown_v2.cookiesAndStorage": false,
    415      "privacy.clearOnShutdown_v2.cache": false,
    416    },
    417  },
    418 
    419  // POLICY: SanitizeOnShutdown using Locked
    420  {
    421    policies: {
    422      SanitizeOnShutdown: {
    423        Cache: true,
    424        Locked: true,
    425      },
    426    },
    427    lockedPrefs: {
    428      "privacy.sanitize.sanitizeOnShutdown": true,
    429      "privacy.clearOnShutdown.cache": true,
    430      "privacy.clearOnShutdown_v2.cache": true,
    431    },
    432    unlockedPrefs: {
    433      "privacy.clearOnShutdown.cookies": false,
    434      "privacy.clearOnShutdown.downloads": false,
    435      "privacy.clearOnShutdown.formdata": false,
    436      "privacy.clearOnShutdown.history": false,
    437      "privacy.clearOnShutdown.sessions": false,
    438      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": false,
    439      "privacy.clearOnShutdown_v2.cookiesAndStorage": false,
    440      "privacy.clearOnShutdown_v2.formdata": false,
    441    },
    442  },
    443 
    444  {
    445    policies: {
    446      SanitizeOnShutdown: {
    447        Cache: true,
    448        Cookies: false,
    449        Locked: true,
    450      },
    451    },
    452    lockedPrefs: {
    453      "privacy.sanitize.sanitizeOnShutdown": true,
    454      "privacy.clearOnShutdown.cache": true,
    455      "privacy.clearOnShutdown.cookies": false,
    456      "privacy.clearOnShutdown_v2.cache": true,
    457      "privacy.clearOnShutdown_v2.cookiesAndStorage": false,
    458    },
    459    unlockedPrefs: {
    460      "privacy.clearOnShutdown.downloads": false,
    461      "privacy.clearOnShutdown.formdata": false,
    462      "privacy.clearOnShutdown.history": false,
    463      "privacy.clearOnShutdown.sessions": false,
    464      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": false,
    465      "privacy.clearOnShutdown_v2.formdata": false,
    466    },
    467  },
    468 
    469  {
    470    policies: {
    471      SanitizeOnShutdown: {
    472        Cache: true,
    473        Locked: false,
    474      },
    475    },
    476    unlockedPrefs: {
    477      "privacy.sanitize.sanitizeOnShutdown": true,
    478      "privacy.clearOnShutdown.cache": true,
    479      "privacy.clearOnShutdown.cookies": false,
    480      "privacy.clearOnShutdown.downloads": false,
    481      "privacy.clearOnShutdown.formdata": false,
    482      "privacy.clearOnShutdown.history": false,
    483      "privacy.clearOnShutdown.sessions": false,
    484      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads": false,
    485      "privacy.clearOnShutdown_v2.cookiesAndStorage": false,
    486      "privacy.clearOnShutdown_v2.cache": true,
    487      "privacy.clearOnShutdown_v2.formdata": false,
    488    },
    489  },
    490 
    491  // POLICY: DNSOverHTTPS Unlocked
    492  {
    493    policies: {
    494      DNSOverHTTPS: {
    495        Enabled: false,
    496        ProviderURL: "https://example.com/provider",
    497        ExcludedDomains: ["example.com", "example.org"],
    498      },
    499    },
    500    unlockedPrefs: {
    501      "network.trr.mode": 5,
    502      "network.trr.uri": "https://example.com/provider",
    503      "network.trr.excluded-domains": "example.com,example.org",
    504    },
    505  },
    506 
    507  // POLICY: DNSOverHTTPS Fallback off
    508  {
    509    policies: {
    510      DNSOverHTTPS: {
    511        Enabled: true,
    512        Fallback: false,
    513      },
    514    },
    515    unlockedPrefs: {
    516      "network.trr.mode": 3,
    517    },
    518  },
    519 
    520  // POLICY: DNSOverHTTPS Locked
    521  {
    522    policies: {
    523      DNSOverHTTPS: {
    524        Enabled: true,
    525        ProviderURL: "https://example.com/provider",
    526        ExcludedDomains: ["example.com", "example.org"],
    527        Locked: true,
    528      },
    529    },
    530    lockedPrefs: {
    531      "network.trr.mode": 2,
    532      "network.trr.uri": "https://example.com/provider",
    533      "network.trr.excluded-domains": "example.com,example.org",
    534    },
    535  },
    536 
    537  // POLICY: SSLVersionMin/SSLVersionMax (1)
    538  {
    539    policies: {
    540      SSLVersionMin: "tls1",
    541      SSLVersionMax: "tls1.1",
    542    },
    543    lockedPrefs: {
    544      "security.tls.version.min": 1,
    545      "security.tls.version.max": 2,
    546    },
    547  },
    548 
    549  // POLICY: SSLVersionMin/SSLVersionMax (2)
    550  {
    551    policies: {
    552      SSLVersionMin: "tls1.2",
    553      SSLVersionMax: "tls1.3",
    554    },
    555    lockedPrefs: {
    556      "security.tls.version.min": 3,
    557      "security.tls.version.max": 4,
    558    },
    559  },
    560 
    561  // POLICY: CaptivePortal
    562  {
    563    policies: {
    564      CaptivePortal: false,
    565    },
    566    lockedPrefs: {
    567      "network.captive-portal-service.enabled": false,
    568    },
    569  },
    570 
    571  // POLICY: NetworkPrediction
    572  {
    573    policies: {
    574      NetworkPrediction: false,
    575    },
    576    lockedPrefs: {
    577      "network.dns.disablePrefetch": true,
    578      "network.dns.disablePrefetchFromHTTPS": true,
    579    },
    580  },
    581 
    582  // POLICY: ExtensionUpdate
    583  {
    584    policies: {
    585      ExtensionUpdate: false,
    586    },
    587    lockedPrefs: {
    588      "extensions.update.enabled": false,
    589    },
    590  },
    591 
    592  // POLICY: DisableShield
    593  {
    594    policies: {
    595      DisableFirefoxStudies: true,
    596    },
    597    lockedPrefs: {
    598      "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons": false,
    599      "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features": false,
    600    },
    601  },
    602 
    603  // POLICY: NewTabPage
    604  {
    605    policies: {
    606      NewTabPage: false,
    607    },
    608    lockedPrefs: {
    609      "browser.newtabpage.enabled": false,
    610    },
    611  },
    612 
    613  // POLICY: SearchSuggestEnabled
    614  {
    615    policies: {
    616      SearchSuggestEnabled: false,
    617    },
    618    lockedPrefs: {
    619      "browser.urlbar.suggest.searches": false,
    620      "browser.search.suggest.enabled": false,
    621    },
    622  },
    623 
    624  // POLICY: FirefoxHome
    625  {
    626    policies: {
    627      FirefoxHome: {
    628        Stories: false,
    629        SponsoredStories: false,
    630        Locked: true,
    631      },
    632    },
    633    lockedPrefs: {
    634      "browser.newtabpage.activity-stream.feeds.system.topstories": false,
    635      "browser.newtabpage.activity-stream.feeds.section.topstories": false,
    636      "browser.newtabpage.activity-stream.showSponsored": false,
    637    },
    638  },
    639 
    640  // POLICY: OfferToSaveLoginsDefault
    641  {
    642    policies: {
    643      OfferToSaveLoginsDefault: false,
    644    },
    645    unlockedPrefs: {
    646      "signon.rememberSignons": false,
    647    },
    648  },
    649 
    650  // POLICY: RememberPasswords
    651  {
    652    policies: { OfferToSaveLogins: false },
    653    lockedPrefs: { "signon.rememberSignons": false },
    654  },
    655  {
    656    policies: { OfferToSaveLogins: true },
    657    lockedPrefs: { "signon.rememberSignons": true },
    658  },
    659 
    660  // POLICY: UserMessaging
    661  {
    662    policies: {
    663      UserMessaging: {
    664        SkipOnboarding: true,
    665        Locked: true,
    666      },
    667    },
    668    lockedPrefs: {
    669      "browser.aboutwelcome.enabled": false,
    670    },
    671  },
    672 
    673  // POLICY: UserMessaging->SkipOnboarding false (bug 1697566)
    674  {
    675    policies: {
    676      UserMessaging: {
    677        SkipOnboarding: false,
    678        Locked: false,
    679      },
    680    },
    681    unlockedPrefs: {
    682      "browser.aboutwelcome.enabled": true,
    683    },
    684  },
    685 
    686  {
    687    policies: {
    688      UserMessaging: {
    689        ExtensionRecommendations: false,
    690        Locked: false,
    691      },
    692    },
    693    unlockedPrefs: {
    694      "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons": false,
    695    },
    696  },
    697 
    698  {
    699    policies: {
    700      UserMessaging: {
    701        FeatureRecommendations: false,
    702        Locked: false,
    703      },
    704    },
    705    unlockedPrefs: {
    706      "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features": false,
    707    },
    708  },
    709 
    710  // POLICY: Permissions->Autoplay
    711  {
    712    policies: {
    713      Permissions: {
    714        Autoplay: {
    715          Default: "block-audio-video",
    716        },
    717      },
    718    },
    719    unlockedPrefs: {
    720      "media.autoplay.default": 5,
    721    },
    722  },
    723 
    724  {
    725    policies: {
    726      Permissions: {
    727        Autoplay: {
    728          Default: "allow-audio-video",
    729          Locked: true,
    730        },
    731      },
    732    },
    733    lockedPrefs: {
    734      "media.autoplay.default": 0,
    735    },
    736  },
    737 
    738  {
    739    policies: {
    740      Permissions: {
    741        Autoplay: {
    742          Default: "block-audio",
    743          Locked: false,
    744        },
    745      },
    746    },
    747    unlockedPrefs: {
    748      "media.autoplay.default": 1,
    749    },
    750  },
    751 
    752  // POLICY: LegacySameSiteCookieBehaviorEnabled
    753 
    754  {
    755    policies: {
    756      LegacySameSiteCookieBehaviorEnabled: true,
    757    },
    758    unlockedPrefs: {
    759      "network.cookie.sameSite.laxByDefault": false,
    760    },
    761  },
    762 
    763  // POLICY: LegacySameSiteCookieBehaviorEnabledForDomainList
    764 
    765  {
    766    policies: {
    767      LegacySameSiteCookieBehaviorEnabledForDomainList: [
    768        "example.com",
    769        "example.org",
    770      ],
    771    },
    772    unlockedPrefs: {
    773      "network.cookie.sameSite.laxByDefault.disabledHosts":
    774        "example.com,example.org",
    775    },
    776  },
    777 
    778  // POLICY: LocalNetworkAccess
    779  {
    780    policies: {
    781      LocalNetworkAccess: {
    782        Enabled: true,
    783      },
    784    },
    785    unlockedPrefs: {
    786      "network.lna.enabled": true,
    787    },
    788  },
    789  {
    790    policies: {
    791      LocalNetworkAccess: {
    792        Enabled: false,
    793        Locked: true,
    794      },
    795    },
    796    lockedPrefs: {
    797      "network.lna.enabled": false,
    798    },
    799  },
    800 
    801  // POLICY: EncryptedMediaExtensions
    802 
    803  {
    804    policies: {
    805      EncryptedMediaExtensions: {
    806        Enabled: false,
    807        Locked: true,
    808      },
    809    },
    810    lockedPrefs: {
    811      "media.eme.enabled": false,
    812    },
    813  },
    814 
    815  // POLICY: PDFjs
    816 
    817  {
    818    policies: {
    819      PDFjs: {
    820        Enabled: false,
    821      },
    822    },
    823    lockedPrefs: {
    824      "pdfjs.disabled": true,
    825    },
    826  },
    827 
    828  {
    829    policies: {
    830      PDFjs: {
    831        Enabled: true,
    832        EnablePermissions: true,
    833      },
    834    },
    835    lockedPrefs: {
    836      "pdfjs.disabled": false,
    837      "pdfjs.enablePermissions": true,
    838    },
    839  },
    840 
    841  {
    842    policies: {
    843      PDFjs: {
    844        Enabled: true,
    845        EnablePermissions: false,
    846      },
    847    },
    848    lockedPrefs: {
    849      "pdfjs.disabled": false,
    850      "pdfjs.enablePermissions": false,
    851    },
    852  },
    853 
    854  // POLICY: PictureInPicture
    855 
    856  {
    857    policies: {
    858      PictureInPicture: {
    859        Enabled: false,
    860        Locked: true,
    861      },
    862    },
    863    lockedPrefs: {
    864      "media.videocontrols.picture-in-picture.video-toggle.enabled": false,
    865    },
    866  },
    867 
    868  // POLICY: DisabledCiphers
    869  {
    870    policies: {
    871      DisabledCiphers: {
    872        TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: false,
    873        TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: false,
    874        TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256: false,
    875        TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256: false,
    876        TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: false,
    877        TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: false,
    878        TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: false,
    879        TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: false,
    880        TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: false,
    881        TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: false,
    882        TLS_DHE_RSA_WITH_AES_128_CBC_SHA: false,
    883        TLS_DHE_RSA_WITH_AES_256_CBC_SHA: false,
    884        TLS_RSA_WITH_AES_128_GCM_SHA256: false,
    885        TLS_RSA_WITH_AES_256_GCM_SHA384: false,
    886        TLS_RSA_WITH_AES_128_CBC_SHA: false,
    887        TLS_RSA_WITH_AES_256_CBC_SHA: false,
    888        TLS_RSA_WITH_3DES_EDE_CBC_SHA: false,
    889        TLS_CHACHA20_POLY1305_SHA256: false,
    890        TLS_AES_128_GCM_SHA256: false,
    891        TLS_AES_256_GCM_SHA384: false,
    892      },
    893    },
    894    lockedPrefs: {
    895      "security.ssl3.ecdhe_rsa_aes_128_gcm_sha256": true,
    896      "security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256": true,
    897      "security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256": true,
    898      "security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256": true,
    899      "security.ssl3.ecdhe_ecdsa_aes_256_gcm_sha384": true,
    900      "security.ssl3.ecdhe_rsa_aes_256_gcm_sha384": true,
    901      "security.ssl3.ecdhe_rsa_aes_128_sha": true,
    902      "security.ssl3.ecdhe_ecdsa_aes_128_sha": true,
    903      "security.ssl3.ecdhe_rsa_aes_256_sha": true,
    904      "security.ssl3.ecdhe_ecdsa_aes_256_sha": true,
    905      "security.ssl3.dhe_rsa_aes_128_sha": true,
    906      "security.ssl3.dhe_rsa_aes_256_sha": true,
    907      "security.ssl3.rsa_aes_128_gcm_sha256": true,
    908      "security.ssl3.rsa_aes_256_gcm_sha384": true,
    909      "security.ssl3.rsa_aes_128_sha": true,
    910      "security.ssl3.rsa_aes_256_sha": true,
    911      "security.ssl3.deprecated.rsa_des_ede3_sha": true,
    912      "security.tls13.chacha20_poly1305_sha256": true,
    913      "security.tls13.aes_128_gcm_sha256": true,
    914      "security.tls13.aes_256_gcm_sha384": true,
    915    },
    916  },
    917 
    918  {
    919    policies: {
    920      DisabledCiphers: {
    921        TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: true,
    922        TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: true,
    923        TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256: true,
    924        TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256: true,
    925        TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: true,
    926        TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: true,
    927        TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: true,
    928        TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: true,
    929        TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: true,
    930        TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: true,
    931        TLS_DHE_RSA_WITH_AES_128_CBC_SHA: true,
    932        TLS_DHE_RSA_WITH_AES_256_CBC_SHA: true,
    933        TLS_RSA_WITH_AES_128_GCM_SHA256: true,
    934        TLS_RSA_WITH_AES_256_GCM_SHA384: true,
    935        TLS_RSA_WITH_AES_128_CBC_SHA: true,
    936        TLS_RSA_WITH_AES_256_CBC_SHA: true,
    937        TLS_RSA_WITH_3DES_EDE_CBC_SHA: true,
    938        TLS_CHACHA20_POLY1305_SHA256: true,
    939        TLS_AES_128_GCM_SHA256: true,
    940        TLS_AES_256_GCM_SHA384: true,
    941      },
    942    },
    943    lockedPrefs: {
    944      "security.ssl3.ecdhe_rsa_aes_128_gcm_sha256": false,
    945      "security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256": false,
    946      "security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256": false,
    947      "security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256": false,
    948      "security.ssl3.ecdhe_ecdsa_aes_256_gcm_sha384": false,
    949      "security.ssl3.ecdhe_rsa_aes_256_gcm_sha384": false,
    950      "security.ssl3.ecdhe_rsa_aes_128_sha": false,
    951      "security.ssl3.ecdhe_ecdsa_aes_128_sha": false,
    952      "security.ssl3.ecdhe_rsa_aes_256_sha": false,
    953      "security.ssl3.ecdhe_ecdsa_aes_256_sha": false,
    954      "security.ssl3.dhe_rsa_aes_128_sha": false,
    955      "security.ssl3.dhe_rsa_aes_256_sha": false,
    956      "security.ssl3.rsa_aes_128_gcm_sha256": false,
    957      "security.ssl3.rsa_aes_256_gcm_sha384": false,
    958      "security.ssl3.rsa_aes_128_sha": false,
    959      "security.ssl3.rsa_aes_256_sha": false,
    960      "security.ssl3.deprecated.rsa_des_ede3_sha": false,
    961      "security.tls13.chacha20_poly1305_sha256": false,
    962      "security.tls13.aes_128_gcm_sha256": false,
    963      "security.tls13.aes_256_gcm_sha384": false,
    964    },
    965  },
    966 
    967  {
    968    policies: {
    969      WindowsSSO: true,
    970    },
    971    lockedPrefs: {
    972      "network.http.windows-sso.enabled": true,
    973    },
    974  },
    975 
    976  {
    977    policies: {
    978      Cookies: {
    979        Behavior: "accept",
    980        BehaviorPrivateBrowsing: "reject-foreign",
    981        Locked: true,
    982      },
    983    },
    984    lockedPrefs: {
    985      "network.cookie.cookieBehavior": 0,
    986      "network.cookie.cookieBehavior.pbmode": 1,
    987    },
    988  },
    989 
    990  {
    991    policies: {
    992      Cookies: {
    993        Behavior: "reject-foreign",
    994        BehaviorPrivateBrowsing: "reject",
    995        Locked: true,
    996      },
    997    },
    998    lockedPrefs: {
    999      "network.cookie.cookieBehavior": 1,
   1000      "network.cookie.cookieBehavior.pbmode": 2,
   1001    },
   1002  },
   1003 
   1004  {
   1005    policies: {
   1006      Cookies: {
   1007        Behavior: "reject",
   1008        BehaviorPrivateBrowsing: "limit-foreign",
   1009        Locked: true,
   1010      },
   1011    },
   1012    lockedPrefs: {
   1013      "network.cookie.cookieBehavior": 2,
   1014      "network.cookie.cookieBehavior.pbmode": 3,
   1015    },
   1016  },
   1017 
   1018  {
   1019    policies: {
   1020      Cookies: {
   1021        Behavior: "limit-foreign",
   1022        BehaviorPrivateBrowsing: "reject-tracker",
   1023        Locked: true,
   1024      },
   1025    },
   1026    lockedPrefs: {
   1027      "network.cookie.cookieBehavior": 3,
   1028      "network.cookie.cookieBehavior.pbmode": 4,
   1029    },
   1030  },
   1031 
   1032  {
   1033    policies: {
   1034      Cookies: {
   1035        Behavior: "reject-tracker",
   1036        BehaviorPrivateBrowsing: "reject-tracker-and-partition-foreign",
   1037        Locked: true,
   1038      },
   1039    },
   1040    lockedPrefs: {
   1041      "network.cookie.cookieBehavior": 4,
   1042      "network.cookie.cookieBehavior.pbmode": 5,
   1043    },
   1044  },
   1045  {
   1046    policies: {
   1047      Cookies: {
   1048        Behavior: "reject-tracker-and-partition-foreign",
   1049        BehaviorPrivateBrowsing: "accept",
   1050        Locked: true,
   1051      },
   1052    },
   1053    lockedPrefs: {
   1054      "network.cookie.cookieBehavior": 5,
   1055      "network.cookie.cookieBehavior.pbmode": 0,
   1056    },
   1057  },
   1058 
   1059  {
   1060    policies: {
   1061      UseSystemPrintDialog: true,
   1062    },
   1063    lockedPrefs: {
   1064      "print.prefer_system_dialog": true,
   1065    },
   1066  },
   1067 
   1068  // Bug 1820195
   1069  {
   1070    policies: {
   1071      Preferences: {
   1072        "pdfjs.cursorToolOnLoad": {
   1073          Value: 1,
   1074          Status: "default",
   1075        },
   1076        "pdfjs.sidebarViewOnLoad": {
   1077          Value: 0,
   1078          Status: "default",
   1079        },
   1080      },
   1081    },
   1082    unlockedPrefs: {
   1083      "pdfjs.cursorToolOnLoad": 1,
   1084      "pdfjs.sidebarViewOnLoad": 0,
   1085    },
   1086  },
   1087 
   1088  // Bug 1772503
   1089  {
   1090    policies: {
   1091      DisableFirefoxStudies: true,
   1092    },
   1093    lockedPrefs: {
   1094      "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons": false,
   1095      "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features": false,
   1096    },
   1097  },
   1098  {
   1099    policies: {
   1100      Preferences: {
   1101        "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons": {
   1102          Value: true,
   1103        },
   1104        "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features": {
   1105          Value: true,
   1106        },
   1107      },
   1108    },
   1109    lockedPrefs: {
   1110      "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons": true,
   1111      "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features": true,
   1112    },
   1113  },
   1114 
   1115  // POLICY: AutofillAddressEnabled, AutofillCreditCardEnabled
   1116 
   1117  {
   1118    policies: {
   1119      AutofillAddressEnabled: false,
   1120      AutofillCreditCardEnabled: false,
   1121    },
   1122    lockedPrefs: {
   1123      "extensions.formautofill.addresses.enabled": false,
   1124      "extensions.formautofill.creditCards.enabled": false,
   1125    },
   1126  },
   1127 
   1128  // POLICY: Proxy - locking if no values are set
   1129  {
   1130    policies: {
   1131      Proxy: {
   1132        Locked: true,
   1133      },
   1134    },
   1135    lockedPrefs: {
   1136      "network.proxy.type": 5,
   1137    },
   1138  },
   1139 
   1140  // POLICY: DisableEncryptedClientHello
   1141  {
   1142    policies: {
   1143      DisableEncryptedClientHello: true,
   1144    },
   1145    lockedPrefs: {
   1146      "network.dns.echconfig.enabled": false,
   1147      "network.dns.http3_echconfig.enabled": false,
   1148    },
   1149  },
   1150 
   1151  // POLICY: PostQuantumKeyAgreementEnabled
   1152  {
   1153    policies: {
   1154      PostQuantumKeyAgreementEnabled: false,
   1155    },
   1156    lockedPrefs: {
   1157      "network.http.http3.enable_kyber": false,
   1158      "security.tls.enable_kyber": false,
   1159    },
   1160  },
   1161 
   1162  // POLICY: HttpsOnlyMode
   1163  {
   1164    policies: {
   1165      HttpsOnlyMode: "enabled",
   1166    },
   1167    unlockedPrefs: {
   1168      "dom.security.https_only_mode": true,
   1169    },
   1170  },
   1171 
   1172  {
   1173    policies: {
   1174      HttpsOnlyMode: "disallowed",
   1175    },
   1176    lockedPrefs: {
   1177      "dom.security.https_only_mode": false,
   1178    },
   1179  },
   1180 
   1181  {
   1182    policies: {
   1183      HttpsOnlyMode: "force_enabled",
   1184    },
   1185    lockedPrefs: {
   1186      "dom.security.https_only_mode": true,
   1187    },
   1188  },
   1189 
   1190  // POLICY: SkipTermsOfUse
   1191  {
   1192    policies: {
   1193      SkipTermsOfUse: true,
   1194    },
   1195    lockedPrefs: {
   1196      "termsofuse.acceptedVersion": 999,
   1197      // "termsofuse.acceptedVersion" is a string of
   1198      // the timestamp at which the policy was set
   1199    },
   1200  },
   1201 
   1202  // POLICY: VisualSearchEnabled
   1203  {
   1204    policies: {
   1205      VisualSearchEnabled: false,
   1206    },
   1207    lockedPrefs: {
   1208      "browser.search.visualSearch.featureGate": false,
   1209    },
   1210  },
   1211 
   1212  // Bug 1981587
   1213  {
   1214    policies: {
   1215      Preferences: {
   1216        "security.webauthn.always_allow_direct_attestation": {
   1217          Value: true,
   1218          Status: "locked",
   1219        },
   1220      },
   1221    },
   1222    lockedPrefs: {
   1223      "security.webauthn.always_allow_direct_attestation": true,
   1224    },
   1225  },
   1226 
   1227  // GenerativeAI
   1228  {
   1229    policies: {
   1230      GenerativeAI: {
   1231        Enabled: false,
   1232        Chatbot: true,
   1233        Locked: true,
   1234      },
   1235    },
   1236    lockedPrefs: {
   1237      "browser.ml.chat.enabled": true,
   1238      "browser.ml.chat.page": true,
   1239      "browser.ml.linkPreview.optin": false,
   1240      "browser.tabs.groups.smart.userEnabled": false,
   1241    },
   1242  },
   1243 ];
   1244 
   1245 add_task(async function test_policy_simple_prefs() {
   1246  for (let test of POLICIES_TESTS) {
   1247    await setupPolicyEngineWithJson({
   1248      policies: test.policies,
   1249    });
   1250 
   1251    info("Checking policy: " + Object.keys(test.policies)[0]);
   1252 
   1253    for (let [prefName, prefValue] of Object.entries(test.lockedPrefs || {})) {
   1254      checkLockedPref(prefName, prefValue);
   1255    }
   1256 
   1257    for (let [prefName, prefValue] of Object.entries(
   1258      test.unlockedPrefs || {}
   1259    )) {
   1260      checkUnlockedPref(prefName, prefValue);
   1261    }
   1262  }
   1263 });