test_IPPExceptionsManager.js (3060B)
1 /* Any copyright is dedicated to the Public Domain. 2 https://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 const { IPPExceptionsManager } = ChromeUtils.importESModule( 7 "moz-src:///browser/components/ipprotection/IPPExceptionsManager.sys.mjs" 8 ); 9 10 const ONBOARDING_MESSAGE_MASK_PREF = 11 "browser.ipProtection.onboardingMessageMask"; 12 13 /** 14 * Tests the manager can modify exclusions in ipp-vpn permission. 15 */ 16 add_task(async function test_IPPExceptionsManager_exclusions() { 17 const site1 = "https://www.example.com"; 18 const site2 = "https://www.another.example.com"; 19 20 IPPExceptionsManager.init(); 21 22 // Make mock principals and add two exclusions 23 let contentPrincipal1 = 24 Services.scriptSecurityManager.createContentPrincipalFromOrigin(site1); 25 let contentPrincipal2 = 26 Services.scriptSecurityManager.createContentPrincipalFromOrigin(site2); 27 28 // Add two exclusions 29 IPPExceptionsManager.addExclusion(contentPrincipal1); 30 IPPExceptionsManager.addExclusion(contentPrincipal2); 31 32 // Verify that hasExclusion can detect the newly added sites 33 let site1Exists = IPPExceptionsManager.hasExclusion(contentPrincipal1); 34 let site2Exists = IPPExceptionsManager.hasExclusion(contentPrincipal2); 35 36 Assert.ok(site1Exists, `hasExclusion correctly states that ${site1} exists`); 37 Assert.ok(site2Exists, `hasExclusion correctly states that ${site2} exists`); 38 39 // Verify the permission data 40 let permissionObj1 = 41 IPPExceptionsManager.getExceptionPermissionObject(contentPrincipal1); 42 let permissionObj2 = 43 IPPExceptionsManager.getExceptionPermissionObject(contentPrincipal2); 44 45 Assert.equal( 46 permissionObj1?.capability, 47 Ci.nsIPermissionManager.DENY_ACTION, 48 `getExceptionPermissionObject correctly states that ${site1} exists and has capability DENY` 49 ); 50 Assert.equal( 51 permissionObj2?.capability, 52 Ci.nsIPermissionManager.DENY_ACTION, 53 `getExceptionPermissionObject correctly states that ${site2} exists and has capability DENY` 54 ); 55 56 // Now remove the exceptions 57 IPPExceptionsManager.removeExclusion(contentPrincipal1); 58 IPPExceptionsManager.removeExclusion(contentPrincipal2); 59 60 // Verify that hasExclusion no longer detects the recently removed sites 61 site1Exists = IPPExceptionsManager.hasExclusion(contentPrincipal1); 62 site2Exists = IPPExceptionsManager.hasExclusion(contentPrincipal2); 63 64 Assert.ok( 65 !site1Exists, 66 `hasExclusion correctly states that ${site1} no longer exists` 67 ); 68 Assert.ok( 69 !site2Exists, 70 `hasExclusion correctly states that ${site2} no longer exists` 71 ); 72 73 // Verify the permission data no longer exists 74 permissionObj1 = 75 IPPExceptionsManager.getExceptionPermissionObject(contentPrincipal1); 76 permissionObj2 = 77 IPPExceptionsManager.getExceptionPermissionObject(contentPrincipal2); 78 79 Assert.ok(!permissionObj1, `Permission object for ${site1} no longer exists`); 80 Assert.ok(!permissionObj2, `Permission object for ${site2} no longer exists`); 81 82 Services.prefs.clearUserPref(ONBOARDING_MESSAGE_MASK_PREF); 83 IPPExceptionsManager.uninit(); 84 });