extensions/cookie/test/unit_ipc/test_parent.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:0f47f50b34e1
1 const Ci = Components.interfaces;
2 const Cc = Components.classes;
3 const Cr = Components.results;
4
5 var gIoService = Components.classes["@mozilla.org/network/io-service;1"]
6 .getService(Components.interfaces.nsIIOService);
7
8 function isParentProcess() {
9 let appInfo = Cc["@mozilla.org/xre/app-info;1"];
10 return (!appInfo || appInfo.getService(Ci.nsIXULRuntime).processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT);
11 }
12
13 function getPrincipalForURI(aURI) {
14 var uri = gIoService.newURI(aURI, null, null);
15 return Cc["@mozilla.org/scriptsecuritymanager;1"]
16 .getService(Ci.nsIScriptSecurityManager)
17 .getNoAppCodebasePrincipal(uri);
18 }
19
20 function run_test() {
21 if (isParentProcess()) {
22 var pm = Cc["@mozilla.org/permissionmanager;1"].getService(Ci.nsIPermissionManager);
23
24 // Permissions created before the child is present
25 pm.addFromPrincipal(getPrincipalForURI("http://mozilla.org"), "cookie1", pm.ALLOW_ACTION, pm.EXPIRE_NEVER, 0);
26 pm.addFromPrincipal(getPrincipalForURI("http://mozilla.com"), "cookie2", pm.DENY_ACTION, pm.EXPIRE_SESSION, 0);
27 pm.addFromPrincipal(getPrincipalForURI("http://mozilla.net"), "cookie3", pm.ALLOW_ACTION, pm.EXPIRE_TIME, Date.now() + 1000*60*60*24);
28
29 var mM = Cc["@mozilla.org/parentprocessmessagemanager;1"].
30 getService(Ci.nsIMessageBroadcaster);
31
32 var messageListener = {
33 receiveMessage: function(aMessage) {
34 switch(aMessage.name) {
35 case "TESTING:Stage2":
36 // Permissions created after the child is present
37 pm.addFromPrincipal(getPrincipalForURI("http://firefox.org"), "cookie1", pm.ALLOW_ACTION, pm.EXPIRE_NEVER, 0);
38 pm.addFromPrincipal(getPrincipalForURI("http://firefox.com"), "cookie2", pm.DENY_ACTION, pm.EXPIRE_SESSION, 0);
39 pm.addFromPrincipal(getPrincipalForURI("http://firefox.net"), "cookie3", pm.ALLOW_ACTION, pm.EXPIRE_TIME, Date.now() + 1000*60*60*24);
40 mM.broadcastAsyncMessage("TESTING:Stage2A");
41 break;
42
43 case "TESTING:Stage3":
44 do_test_finished();
45 break;
46 }
47 return true;
48 },
49 };
50
51 mM.addMessageListener("TESTING:Stage2", messageListener);
52 mM.addMessageListener("TESTING:Stage3", messageListener);
53
54 do_test_pending();
55 do_load_child_test_harness();
56 run_test_in_child("test_child.js");
57 }
58 }
59

mercurial