summaryrefslogtreecommitdiffstats
path: root/extensions/cookie/test/unit_ipc/test_child.js
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/cookie/test/unit_ipc/test_child.js')
-rw-r--r--extensions/cookie/test/unit_ipc/test_child.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/extensions/cookie/test/unit_ipc/test_child.js b/extensions/cookie/test/unit_ipc/test_child.js
new file mode 100644
index 000000000..40a48d8b8
--- /dev/null
+++ b/extensions/cookie/test/unit_ipc/test_child.js
@@ -0,0 +1,59 @@
+var Ci = Components.interfaces;
+var Cc = Components.classes;
+var Cr = Components.results;
+
+var gIoService = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+
+function isParentProcess() {
+ let appInfo = Cc["@mozilla.org/xre/app-info;1"];
+ return (!appInfo || appInfo.getService(Ci.nsIXULRuntime).processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT);
+}
+
+function getPrincipalForURI(aURI) {
+ var uri = gIoService.newURI(aURI, null, null);
+ var ssm = Cc["@mozilla.org/scriptsecuritymanager;1"]
+ .getService(Ci.nsIScriptSecurityManager);
+ return ssm.createCodebasePrincipal(uri, {});
+}
+
+function run_test() {
+ if (!isParentProcess()) {
+ const Ci = Components.interfaces;
+ const Cc = Components.classes;
+
+ var mM = Cc["@mozilla.org/childprocessmessagemanager;1"].
+ getService(Ci.nsISyncMessageSender);
+
+ var messageListener = {
+ receiveMessage: function(aMessage) {
+ switch(aMessage.name) {
+ case "TESTING:Stage2A":
+ // Permissions created after the child is present
+ do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.org"), "cookie1"), pm.ALLOW_ACTION);
+ do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.com"), "cookie2"), pm.DENY_ACTION);
+ do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.net"), "cookie3"), pm.ALLOW_ACTION);
+ do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://firefox.org"), "cookie1"), pm.ALLOW_ACTION);
+ do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://firefox.com"), "cookie2"), pm.DENY_ACTION);
+ do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://firefox.net"), "cookie3"), pm.ALLOW_ACTION);
+
+ mM.sendAsyncMessage("TESTING:Stage3");
+ break;
+
+ }
+ return true;
+ },
+ };
+
+ mM.addMessageListener("TESTING:Stage2A", messageListener);
+
+ // Permissions created before the child is present
+ var pm = Cc["@mozilla.org/permissionmanager;1"].getService(Ci.nsIPermissionManager);
+ do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.org"), "cookie1"), pm.ALLOW_ACTION);
+ do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.com"), "cookie2"), pm.DENY_ACTION);
+ do_check_eq(pm.testPermissionFromPrincipal(getPrincipalForURI("http://mozilla.net"), "cookie3"), pm.ALLOW_ACTION);
+
+ mM.sendAsyncMessage("TESTING:Stage2");
+ }
+}
+