tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_symbols_as_weak_keys.js (1517B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 function run_test()
      5 {
      6  if (!Services.prefs.getBoolPref("javascript.options.experimental.symbols_as_weakmap_keys")) {
      7    return;
      8  }
      9 
     10  var strKey = new String("strKey");
     11  var symKey = Symbol("symKey");
     12 
     13  var weakset = new WeakSet([strKey, symKey]);
     14  var weakmap = new WeakMap();
     15  weakmap.set(strKey, 23);
     16  weakmap.set(symKey, "oh no");
     17 
     18  var keys = ChromeUtils.nondeterministicGetWeakMapKeys(weakmap);
     19  equal(keys.length, 2, "length of nondeterministicGetWeakMapKeys");
     20  equal(weakmap.get(strKey), 23, "check strKey in weakmap");
     21  equal(weakmap.get(symKey), "oh no", "check symKey in weakmap");
     22 
     23  keys = ChromeUtils.nondeterministicGetWeakSetKeys(weakset);
     24  equal(keys.length, 2, "length of nondeterministicGetWeakSetKeys");
     25  ok(weakset.has(strKey), "check strKey in weakset");
     26  ok(weakset.has(symKey), "check symKey in weakset");
     27 
     28  strKey = null;
     29  keys = null;
     30 
     31  Cu.forceGC();
     32 
     33  keys = ChromeUtils.nondeterministicGetWeakMapKeys(weakmap);
     34  equal(keys.length, 1, "length of nondeterministicGetWeakMapKeys after GC");
     35  equal(weakmap.get(symKey), "oh no", "check symKey still in weakmap");
     36 
     37  keys = ChromeUtils.nondeterministicGetWeakSetKeys(weakset);
     38  equal(keys.length, 1, "length of nondeterministicGetWeakSetKeys after GC");
     39  ok(weakset.has(symKey), "check symKey still in weakset");
     40 }