js/xpconnect/tests/chrome/test_watchpoints.xul

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 <?xml version="1.0"?>
     2 <?xml-stylesheet type="text/css" href="chrome://global/skin"?>
     3 <?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
     4 <!--
     5 https://bugzilla.mozilla.org/show_bug.cgi?id=693527
     6 -->
     7 <window title="Mozilla Bug "
     8         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
     9   <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
    11   <!-- test results are displayed in the html:body -->
    12   <body xmlns="http://www.w3.org/1999/xhtml">
    13   <a href="https://bugzilla.mozilla.org/show_bug.cgi?id="
    14      target="_blank">Mozilla Bug 693527</a>
    15   </body>
    17   <!-- test code goes here -->
    18   <script type="application/javascript">
    19   <![CDATA[
    20   /** Test for Bug 693527 **/
    22   let Cu = Components.utils;
    23   let Ci = Components.interfaces;
    25   /* Create a weak reference, with a single-element weak map. */
    26   let make_weak_ref = function (obj) {
    27     let m = new WeakMap;
    28     m.set(obj, {});
    29     return m;
    30   };
    32   /* Check to see if a weak reference is dead. */
    33   let weak_ref_dead = function (r) {
    34     return Cu.nondeterministicGetWeakMapKeys(r).length == 0;
    35   }
    38   let make_cycle = function () {
    39     var p = document.createElement("p");
    40     p.children.x = p;
    41     var f = function() { };
    42     p.watch("y", f);
    43     var d = document.createElement("div");
    44     d.appendChild(p);
    45     f.loop = d;
    46     f.bar = {}; // observing f directly makes the leak go away even without the CC somehow
    47     return make_weak_ref(f.bar);
    48   };
    50   var cycle_ref = make_cycle();
    53   /* set up for running precise GC/CC then checking the results */
    55   SimpleTest.waitForExplicitFinish();
    57   Cu.schedulePreciseGC(function () {
    58     window.QueryInterface(Ci.nsIInterfaceRequestor)
    59          .getInterface(Ci.nsIDOMWindowUtils)
    60          .cycleCollect();
    61     window.QueryInterface(Ci.nsIInterfaceRequestor)
    62          .getInterface(Ci.nsIDOMWindowUtils)
    63          .garbageCollect();
    64     window.QueryInterface(Ci.nsIInterfaceRequestor)
    65          .getInterface(Ci.nsIDOMWindowUtils)
    66          .garbageCollect();
    68     ok(weak_ref_dead(cycle_ref), "Garbage gray watchpoint cycle should be collected.");
    70     SimpleTest.finish();
    71   });
    73   ]]>
    74   </script>
    75 </window>

mercurial