content/base/test/test_messagemanager_principal.html

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4   <title>Test for Principal in MessageManager</title>
     5   <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
     6   <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
     7 </head>
     8 <body>
    10   <script type="application/javascript;version=1.7">
    11     "use strict";
    13     const Ci = Components.interfaces;
    14     const Cc = Components.classes;
    15     const Cu = Components.utils;
    17     var permManager = Cc["@mozilla.org/permissionmanager;1"]
    18                         .getService(Ci.nsIPermissionManager);
    20     SimpleTest.waitForExplicitFinish();
    22     const childFrameURL =
    23       "data:text/html,<!DOCTYPE HTML><html><body></body></html>";
    25     function childFrameScript() {
    26       "use strict";
    28       addMessageListener("test:ipcMessage", function(message) {
    29         sendAsyncMessage(message.name, "principal: " + (message.principal ? "OK" : "KO"));
    31         sendAsyncMessage(message.name, "principal.appId: " +
    32                          ("appId" in message.principal ? "OK" : "KO"));
    34         sendAsyncMessage(message.name, "principal.origin: " +
    35                          ("origin" in message.principal ? "OK" : "KO"));
    37         sendAsyncMessage(message.name, "principal.isInBrowserElement: " +
    38                          ("isInBrowserElement" in message.principal ? "OK" : "KO"));
    40         sendAsyncMessage(message.name, "DONE");
    41       });
    42     }
    44     function runTests() {
    45       ok("Browser prefs set.");
    47       let iframe = document.createElement("iframe");
    48       SpecialPowers.wrap(iframe).mozbrowser = true;
    49       iframe.id = "iframe";
    50       iframe.src = childFrameURL;
    52       iframe.addEventListener("mozbrowserloadend", function() {
    53         ok(true, "Got iframe load event.");
    55         let mm = SpecialPowers.getBrowserFrameMessageManager(iframe);
    56         mm.addMessageListener("test:ipcMessage", function(message) {
    57           // We need to wrap to access message.json, and unwrap to do the
    58           // identity check.
    59           var msg = SpecialPowers.unwrap(SpecialPowers.wrap(message).json);
    60           if (/OK$/.exec(msg)) {
    61             ok(true, msg);
    62           } else if(/KO$/.exec(msg)) {
    63             ok(true, false);
    64           } else if (/DONE/.exec(msg)) {
    65             permManager.removeFromPrincipal(window.document.nodePrincipal, "browser",
    66                                             Ci.nsIPermissionManager.ALLOW_ACTION);
    67             SimpleTest.finish();
    68           }
    69         });
    70         mm.loadFrameScript("data:,(" + childFrameScript.toString() + ")();",
    71                            false);
    73         mm.sendAsyncMessage("test:ipcMessage", 42, null, window.document.nodePrincipal);
    74       });
    76       document.body.appendChild(iframe);
    77     }
    79     addEventListener("load", function() {
    80       info("Got load event.");
    82       permManager.addFromPrincipal(window.document.nodePrincipal, "browser",
    83                                    Ci.nsIPermissionManager.ALLOW_ACTION);
    85       SpecialPowers.pushPrefEnv({
    86         "set": [
    87           ["dom.mozBrowserFramesEnabled", true],
    88           ["browser.pagethumbnails.capturing_disabled", true]
    89         ]
    90       }, runTests);
    91     });
    92   </script>
    93 </body>
    94 </html>

mercurial