Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
4 function getPrincipalFromURI(uri) {
5 return Cc["@mozilla.org/scriptsecuritymanager;1"]
6 .getService(Ci.nsIScriptSecurityManager)
7 .getNoAppCodebasePrincipal(NetUtil.newURI(uri));
8 }
10 function getSystemPrincipal() {
11 return Cc["@mozilla.org/scriptsecuritymanager;1"]
12 .getService(Ci.nsIScriptSecurityManager)
13 .getSystemPrincipal();
14 }
16 function run_test() {
17 var pm = Cc["@mozilla.org/permissionmanager;1"].
18 getService(Ci.nsIPermissionManager);
20 do_check_null(pm.getPermissionObject(getSystemPrincipal(), "test/pobject", false));
22 let principal = getPrincipalFromURI("http://example.com");
23 let subPrincipal = getPrincipalFromURI("http://sub.example.com");
24 let subSubPrincipal = getPrincipalFromURI("http://sub.sub.example.com");
26 do_check_null(pm.getPermissionObject(principal, "test/pobject", false));
27 do_check_null(pm.getPermissionObject(principal, "test/pobject", true));
29 pm.addFromPrincipal(principal, "test/pobject", pm.ALLOW_ACTION);
30 var rootPerm = pm.getPermissionObject(principal, "test/pobject", false);
31 do_check_true(rootPerm != null);
32 do_check_eq(rootPerm.host, "example.com");
33 do_check_eq(rootPerm.type, "test/pobject");
34 do_check_eq(rootPerm.capability, pm.ALLOW_ACTION);
35 do_check_eq(rootPerm.expireType, pm.EXPIRE_NEVER);
37 var rootPerm2 = pm.getPermissionObject(principal, "test/pobject", true);
38 do_check_true(rootPerm != null);
39 do_check_eq(rootPerm.host, "example.com");
41 var subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", true);
42 do_check_null(subPerm);
43 subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", false);
44 do_check_true(subPerm != null);
45 do_check_eq(subPerm.host, "example.com");
46 do_check_eq(subPerm.type, "test/pobject");
47 do_check_eq(subPerm.capability, pm.ALLOW_ACTION);
49 subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", true);
50 do_check_null(subPerm);
51 subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", false);
52 do_check_true(subPerm != null);
53 do_check_eq(subPerm.host, "example.com");
55 pm.addFromPrincipal(principal, "test/pobject", pm.DENY_ACTION, pm.EXPIRE_SESSION);
57 // make sure permission objects are not dynamic
58 do_check_eq(rootPerm.capability, pm.ALLOW_ACTION);
60 // but do update on change
61 rootPerm = pm.getPermissionObject(principal, "test/pobject", true);
62 do_check_eq(rootPerm.capability, pm.DENY_ACTION);
63 do_check_eq(rootPerm.expireType, pm.EXPIRE_SESSION);
65 subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", false);
66 do_check_eq(subPerm.host, "example.com");
67 do_check_eq(subPerm.capability, pm.DENY_ACTION);
68 do_check_eq(subPerm.expireType, pm.EXPIRE_SESSION);
70 pm.addFromPrincipal(subPrincipal, "test/pobject", pm.PROMPT_ACTION);
71 rootPerm = pm.getPermissionObject(principal, "test/pobject", true);
72 do_check_eq(rootPerm.host, "example.com");
73 do_check_eq(rootPerm.capability, pm.DENY_ACTION);
75 subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", true);
76 do_check_eq(subPerm.host, "sub.example.com");
77 do_check_eq(subPerm.capability, pm.PROMPT_ACTION);
79 subPerm = pm.getPermissionObject(subPrincipal, "test/pobject", false);
80 do_check_eq(subPerm.host, "sub.example.com");
81 do_check_eq(subPerm.capability, pm.PROMPT_ACTION);
83 subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", true);
84 do_check_null(subPerm);
86 subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", false);
87 do_check_eq(subPerm.host, "sub.example.com");
88 do_check_eq(subPerm.capability, pm.PROMPT_ACTION);
90 pm.removeFromPrincipal(principal, "test/pobject");
92 rootPerm = pm.getPermissionObject(principal, "test/pobject", true);
93 do_check_null(rootPerm);
94 }