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 /*
2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/licenses/publicdomain/
4 * Contributor:
5 * Jeff Walden <jwalden+code@mit.edu>
6 */
8 //-----------------------------------------------------------------------------
9 var BUGNUMBER = 858381;
10 var summary = "No-op array length redefinition";
12 print(BUGNUMBER + ": " + summary);
14 /**************
15 * BEGIN TEST *
16 **************/
18 var arr;
20 // initializedLength == capacity == length
21 // 6 == 6 == 6
22 arr = Object.defineProperty([0, 1, 2, 3, 4, 5], "length", { writable: false });
23 Object.defineProperty(arr, "length", { value: 6 });
24 Object.defineProperty(arr, "length", { writable: false });
25 Object.defineProperty(arr, "length", { configurable: false });
26 Object.defineProperty(arr, "length", { writable: false, configurable: false });
27 Object.defineProperty(arr, "length", { writable: false, value: 6 });
28 Object.defineProperty(arr, "length", { configurable: false, value: 6 });
29 Object.defineProperty(arr, "length", { writable: false, configurable: false, value: 6 });
31 // initializedLength == capacity < length
32 // 6 == 6 < 8
33 arr = Object.defineProperty([0, 1, 2, 3, 4, 5], "length", { value: 8, writable: false });
34 Object.defineProperty(arr, "length", { value: 8 });
35 Object.defineProperty(arr, "length", { writable: false });
36 Object.defineProperty(arr, "length", { configurable: false });
37 Object.defineProperty(arr, "length", { writable: false, configurable: false });
38 Object.defineProperty(arr, "length", { writable: false, value: 8 });
39 Object.defineProperty(arr, "length", { configurable: false, value: 8 });
40 Object.defineProperty(arr, "length", { writable: false, configurable: false, value: 8 });
42 // initializedLength < capacity == length
43 // 7 < 8 == 8
44 arr = Object.defineProperty([0, 1, 2, 3, 4, 5, 6, /* hole */, ], "length",
45 { value: 8, writable: false });
46 Object.defineProperty(arr, "length", { value: 8 });
47 Object.defineProperty(arr, "length", { writable: false });
48 Object.defineProperty(arr, "length", { configurable: false });
49 Object.defineProperty(arr, "length", { writable: false, configurable: false });
50 Object.defineProperty(arr, "length", { writable: false, value: 8 });
51 Object.defineProperty(arr, "length", { configurable: false, value: 8 });
52 Object.defineProperty(arr, "length", { writable: false, configurable: false, value: 8 });
54 // initializedLength < capacity < length
55 // 3 < 6 < 8
56 arr = Object.defineProperty([0, 1, 2], "length", { value: 8, writable: false });
57 Object.defineProperty(arr, "length", { value: 8 });
58 Object.defineProperty(arr, "length", { writable: false });
59 Object.defineProperty(arr, "length", { configurable: false });
60 Object.defineProperty(arr, "length", { writable: false, configurable: false });
61 Object.defineProperty(arr, "length", { writable: false, value: 8 });
62 Object.defineProperty(arr, "length", { configurable: false, value: 8 });
63 Object.defineProperty(arr, "length", { writable: false, configurable: false, value: 8 });
65 /******************************************************************************/
67 if (typeof reportCompare === "function")
68 reportCompare(true, true);
70 print("Tests complete");