Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 // Debug.Object.prototype.defineProperties.
3 var g = newGlobal();
4 var dbg = new Debugger;
5 var gw = dbg.addDebuggee(g);
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);
13 var indirectEval = eval;
14 var obj = indirectEval("(" + objexpr + ");");
15 Object.defineProperties(obj, descs);
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 }
32 test("{}", {});
33 test("/abc/", {});
35 g.eval("var aglobal = newGlobal('same-compartment');");
36 var aglobal = newGlobal('same-compartment');
37 test("aglobal", {});
39 var adescs = {a: {enumerable: true, writable: true, value: 0}};
40 test("{}", adescs);
41 test("{a: 1}", adescs);
43 var arrdescs = [{value: 'a'}, {value: 'b'}, , {value: 'd'}];
44 test("{}", arrdescs);
45 test("[]", arrdescs);
46 test("[0, 1, 2, 3]", arrdescs);