1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/extensions/cookie/test/unit_ipc/test_child.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,58 @@ 1.4 +const Ci = Components.interfaces; 1.5 +const Cc = Components.classes; 1.6 +const Cr = Components.results; 1.7 + 1.8 +var gIoService = Components.classes["@mozilla.org/network/io-service;1"] 1.9 + .getService(Components.interfaces.nsIIOService); 1.10 + 1.11 +function isParentProcess() { 1.12 + let appInfo = Cc["@mozilla.org/xre/app-info;1"]; 1.13 + return (!appInfo || appInfo.getService(Ci.nsIXULRuntime).processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT); 1.14 +} 1.15 + 1.16 +function getPrincipalForURI(aURI) { 1.17 + var uri = gIoService.newURI(aURI, null, null); 1.18 + return Components.classes["@mozilla.org/scriptsecuritymanager;1"] 1.19 + .getService(Ci.nsIScriptSecurityManager) 1.20 + .getNoAppCodebasePrincipal(uri); 1.21 +} 1.22 + 1.23 +function run_test() { 1.24 + if (!isParentProcess()) { 1.25 + const Ci = Components.interfaces; 1.26 + const Cc = Components.classes; 1.27 + 1.28 + var mM = Cc["@mozilla.org/childprocessmessagemanager;1"]. 1.29 + getService(Ci.nsISyncMessageSender); 1.30 + 1.31 + var messageListener = { 1.32 + receiveMessage: function(aMessage) { 1.33 + switch(aMessage.name) { 1.34 + case "TESTING:Stage2A": 1.35 + // Permissions created after the child is present 1.36 + do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.org"), "cookie1"), pm.ALLOW_ACTION); 1.37 + do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.com"), "cookie2"), pm.DENY_ACTION); 1.38 + do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.net"), "cookie3"), pm.ALLOW_ACTION); 1.39 + do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://firefox.org"), "cookie1"), pm.ALLOW_ACTION); 1.40 + do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://firefox.com"), "cookie2"), pm.DENY_ACTION); 1.41 + do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://firefox.net"), "cookie3"), pm.ALLOW_ACTION); 1.42 + 1.43 + mM.sendAsyncMessage("TESTING:Stage3"); 1.44 + break; 1.45 + 1.46 + } 1.47 + return true; 1.48 + }, 1.49 + }; 1.50 + 1.51 + mM.addMessageListener("TESTING:Stage2A", messageListener); 1.52 + 1.53 + var pm = Cc["@mozilla.org/permissionmanager;1"].getService(Ci.nsIPermissionManager); 1.54 + do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.org"), "cookie1"), pm.ALLOW_ACTION); 1.55 + do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.com"), "cookie2"), pm.DENY_ACTION); 1.56 + do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.net"), "cookie3"), pm.ALLOW_ACTION); 1.57 + 1.58 + mM.sendAsyncMessage("TESTING:Stage2"); 1.59 + } 1.60 +} 1.61 +