extensions/cookie/test/unit/test_permmanager_getPermissionObject.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:907c54327f35
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 function getPrincipalFromURI(uri) {
5 return Cc["@mozilla.org/scriptsecuritymanager;1"]
6 .getService(Ci.nsIScriptSecurityManager)
7 .getNoAppCodebasePrincipal(NetUtil.newURI(uri));
8 }
9
10 function getSystemPrincipal() {
11 return Cc["@mozilla.org/scriptsecuritymanager;1"]
12 .getService(Ci.nsIScriptSecurityManager)
13 .getSystemPrincipal();
14 }
15
16 function run_test() {
17 var pm = Cc["@mozilla.org/permissionmanager;1"].
18 getService(Ci.nsIPermissionManager);
19
20 do_check_null(pm.getPermissionObject(getSystemPrincipal(), "test/pobject", false));
21
22 let principal = getPrincipalFromURI("http://example.com");
23 let subPrincipal = getPrincipalFromURI("http://sub.example.com");
24 let subSubPrincipal = getPrincipalFromURI("http://sub.sub.example.com");
25
26 do_check_null(pm.getPermissionObject(principal, "test/pobject", false));
27 do_check_null(pm.getPermissionObject(principal, "test/pobject", true));
28
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);
36
37 var rootPerm2 = pm.getPermissionObject(principal, "test/pobject", true);
38 do_check_true(rootPerm != null);
39 do_check_eq(rootPerm.host, "example.com");
40
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);
48
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");
54
55 pm.addFromPrincipal(principal, "test/pobject", pm.DENY_ACTION, pm.EXPIRE_SESSION);
56
57 // make sure permission objects are not dynamic
58 do_check_eq(rootPerm.capability, pm.ALLOW_ACTION);
59
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);
64
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);
69
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);
74
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);
78
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);
82
83 subPerm = pm.getPermissionObject(subSubPrincipal, "test/pobject", true);
84 do_check_null(subPerm);
85
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);
89
90 pm.removeFromPrincipal(principal, "test/pobject");
91
92 rootPerm = pm.getPermissionObject(principal, "test/pobject", true);
93 do_check_null(rootPerm);
94 }

mercurial