tor-browser

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

Object-defineProperties-01.js (1521B)


      1 // Debug.Object.prototype.defineProperties.
      2 
      3 var g = newGlobal({newCompartment: true});
      4 var dbg = new Debugger;
      5 var gw = dbg.addDebuggee(g);
      6 
      7 var descProps = ['configurable', 'enumerable', 'writable', 'value', 'get', 'set'];
      8 function test(objexpr, descs) {
      9    g.eval("obj = (" + objexpr + ");");
     10    var gobjw = gw.getOwnPropertyDescriptor("obj").value;
     11    gobjw.defineProperties(descs);
     12 
     13    var indirectEval = eval;
     14    var obj = indirectEval("(" + objexpr + ");");
     15    Object.defineProperties(obj, descs);
     16 
     17    var ids = Object.keys(descs);
     18    for (var i = 0; i < ids.length; i++) {
     19        var actual = gobjw.getOwnPropertyDescriptor(ids[i]);
     20        var expected = Object.getOwnPropertyDescriptor(obj, ids[i]);
     21        assertEq(Object.getPrototypeOf(actual), Object.prototype);
     22        assertEq(actual.configurable, expected.configurable);
     23        assertEq(actual.enumerable, expected.enumerable);
     24        for (var j = 0; j < descProps; j++) {
     25            var prop = descProps[j];
     26            assertEq(prop in actual, prop in expected);
     27            assertEq(actual[prop], expected[prop]);
     28        }
     29    }
     30 }
     31 
     32 test("{}", {});
     33 test("/abc/", {});
     34 
     35 g.eval("var aglobal = newGlobal('same-compartment');");
     36 var aglobal = newGlobal('same-compartment');
     37 test("aglobal", {});
     38 
     39 var adescs = {a: {enumerable: true, writable: true, value: 0}};
     40 test("{}", adescs);
     41 test("{a: 1}", adescs);
     42 
     43 var arrdescs = [{value: 'a'}, {value: 'b'}, , {value: 'd'}];
     44 test("{}", arrdescs);
     45 test("[]", arrdescs);
     46 test("[0, 1, 2, 3]", arrdescs);