dom/tests/mochitest/bugs/test_bug260264_nested.html

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 <!DOCTYPE HTML>
     2 <html>
     3 <!--
     4 https://bugzilla.mozilla.org/show_bug.cgi?id=260264
     5 -->
     6 <head>
     7   <title>Test for Bug 260264</title>
     8   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
     9   <script type="application/javascript" src="utils_bug260264.js"></script>
    10   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
    11 </head>
    12 <body>
    13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=260264">Mozilla Bug 260264</a>
    14 <p id="display"></p>
    15 <div id="content" style="display: none">
    17 </div>
    18 <pre id="test">
    19 <script type="application/javascript">
    21 /** Test for Bug 260264 **/
    23 SimpleTest.waitForExplicitFinish();
    25 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    26 var popupEvents = makePrefAccessor("dom.popup_allowed_events"),
    27     blockPopups = makePrefAccessor("dom.disable_open_during_load"),
    28     ownPopupPriv = makePopupPrivAccessor(location.href),
    29     ecPopupPriv = makePopupPrivAccessor("http://example.com");
    31 function test_nested_frames() {
    33   var savedBlockPopups = blockPopups(true);
    35   // Grandchild will use this name to refer to the current window:
    36   window.name = "parent260264";
    38   function performer(event) {
    39     $("display").appendChild(document.createElement("iframe")).src =
    40       alter_file(alter_host(location.href, "example.com"),
    41                              "child_bug260264.html#" + event);
    42   }
    44   function finisher(old) {
    45     popupEvents(old.events);
    46     ownPopupPriv(old.ownPriv);
    47     ecPopupPriv(old.ecPriv);
    48   }
    50   function should_have_blocked(popup) {
    51     ok(!popup, "popup should have been blocked");
    52   }
    54   function should_not_have_blocked(popup) {
    55     ok(popup, "popup should not have been blocked");
    56   }
    58   /**
    59    * The example_priv parameter controls whether or not the child frame has
    60    * popup clearance.  Neither the top window nor the grandchild frame have
    61    * this clearance.  The point of these tests is to make sure the child's
    62    * clearance (or lack thereof) is properly considered when opening a popup
    63    * from the grandchild.
    64    */
    65   function makeTest(event, example_priv, reporter, allowed_events) {
    66     return {
    67       event: event,
    68       setup: function(old) {
    69         old.events = popupEvents(allowed_events || "click mouseup");
    70         old.ownPriv = ownPopupPriv(DENY_ACTION);
    71         old.ecPriv = ecPopupPriv(example_priv);
    72       },
    73       report: reporter,
    74       perform: performer,
    75       finish: finisher
    76     };
    77   };
    79   var tests = [
    80     makeTest("mouseup",    DENY_ACTION, should_not_have_blocked),
    81     makeTest("mouseup",   ALLOW_ACTION, should_not_have_blocked),
    82     makeTest("mouseup",   ALLOW_ACTION, should_not_have_blocked, "click"),
    83     makeTest("mouseup",    DENY_ACTION, should_have_blocked, "click"),
    84     makeTest("mouseover",  DENY_ACTION, should_have_blocked),
    85     makeTest("mouseover", ALLOW_ACTION, should_not_have_blocked),
    86     makeTest("click",      DENY_ACTION, should_not_have_blocked),
    87     makeTest("click",     ALLOW_ACTION, should_not_have_blocked)
    88   ];
    90   function resume() {
    91     var options = tests[0];
    92     if (options) {
    93       netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    94       options.setup(tests[0].old = {});
    95       options.perform(options.event);
    96     } else {
    97       blockPopups(savedBlockPopups);
    98       SimpleTest.finish();
    99     }
   100   }
   102   // Visible to child windows:
   103   window.report = function(popup) {
   104     netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
   105     try { tests[0].report(popup) }
   106     finally {
   107       tests[0].finish(tests[0].old);
   108       tests.shift();
   109       resume();
   110     }
   111   }
   113   resume();
   115 }
   117 test_nested_frames();
   119 </script>
   120 </pre>
   121 </body>
   122 </html>

mercurial