1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/base/test/test_messagemanager_principal.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,94 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<head> 1.7 + <title>Test for Principal in MessageManager</title> 1.8 + <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 1.9 + <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?> 1.10 +</head> 1.11 +<body> 1.12 + 1.13 + <script type="application/javascript;version=1.7"> 1.14 + "use strict"; 1.15 + 1.16 + const Ci = Components.interfaces; 1.17 + const Cc = Components.classes; 1.18 + const Cu = Components.utils; 1.19 + 1.20 + var permManager = Cc["@mozilla.org/permissionmanager;1"] 1.21 + .getService(Ci.nsIPermissionManager); 1.22 + 1.23 + SimpleTest.waitForExplicitFinish(); 1.24 + 1.25 + const childFrameURL = 1.26 + "data:text/html,<!DOCTYPE HTML><html><body></body></html>"; 1.27 + 1.28 + function childFrameScript() { 1.29 + "use strict"; 1.30 + 1.31 + addMessageListener("test:ipcMessage", function(message) { 1.32 + sendAsyncMessage(message.name, "principal: " + (message.principal ? "OK" : "KO")); 1.33 + 1.34 + sendAsyncMessage(message.name, "principal.appId: " + 1.35 + ("appId" in message.principal ? "OK" : "KO")); 1.36 + 1.37 + sendAsyncMessage(message.name, "principal.origin: " + 1.38 + ("origin" in message.principal ? "OK" : "KO")); 1.39 + 1.40 + sendAsyncMessage(message.name, "principal.isInBrowserElement: " + 1.41 + ("isInBrowserElement" in message.principal ? "OK" : "KO")); 1.42 + 1.43 + sendAsyncMessage(message.name, "DONE"); 1.44 + }); 1.45 + } 1.46 + 1.47 + function runTests() { 1.48 + ok("Browser prefs set."); 1.49 + 1.50 + let iframe = document.createElement("iframe"); 1.51 + SpecialPowers.wrap(iframe).mozbrowser = true; 1.52 + iframe.id = "iframe"; 1.53 + iframe.src = childFrameURL; 1.54 + 1.55 + iframe.addEventListener("mozbrowserloadend", function() { 1.56 + ok(true, "Got iframe load event."); 1.57 + 1.58 + let mm = SpecialPowers.getBrowserFrameMessageManager(iframe); 1.59 + mm.addMessageListener("test:ipcMessage", function(message) { 1.60 + // We need to wrap to access message.json, and unwrap to do the 1.61 + // identity check. 1.62 + var msg = SpecialPowers.unwrap(SpecialPowers.wrap(message).json); 1.63 + if (/OK$/.exec(msg)) { 1.64 + ok(true, msg); 1.65 + } else if(/KO$/.exec(msg)) { 1.66 + ok(true, false); 1.67 + } else if (/DONE/.exec(msg)) { 1.68 + permManager.removeFromPrincipal(window.document.nodePrincipal, "browser", 1.69 + Ci.nsIPermissionManager.ALLOW_ACTION); 1.70 + SimpleTest.finish(); 1.71 + } 1.72 + }); 1.73 + mm.loadFrameScript("data:,(" + childFrameScript.toString() + ")();", 1.74 + false); 1.75 + 1.76 + mm.sendAsyncMessage("test:ipcMessage", 42, null, window.document.nodePrincipal); 1.77 + }); 1.78 + 1.79 + document.body.appendChild(iframe); 1.80 + } 1.81 + 1.82 + addEventListener("load", function() { 1.83 + info("Got load event."); 1.84 + 1.85 + permManager.addFromPrincipal(window.document.nodePrincipal, "browser", 1.86 + Ci.nsIPermissionManager.ALLOW_ACTION); 1.87 + 1.88 + SpecialPowers.pushPrefEnv({ 1.89 + "set": [ 1.90 + ["dom.mozBrowserFramesEnabled", true], 1.91 + ["browser.pagethumbnails.capturing_disabled", true] 1.92 + ] 1.93 + }, runTests); 1.94 + }); 1.95 + </script> 1.96 +</body> 1.97 +</html>