js/src/tests/ecma_5/Object/15.2.3.6-miscellaneous.js

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 // Any copyright is dedicated to the Public Domain.
     2 // http://creativecommons.org/licenses/publicdomain/
     4 //-----------------------------------------------------------------------------
     5 var BUGNUMBER = 430133;
     6 var summary = 'ES5 Object.defineProperty(O, P, Attributes)';
     8 print(BUGNUMBER + ": " + summary);
    10 /**************
    11  * BEGIN TEST *
    12  **************/
    14 var o = [];
    15 Object.defineProperty(o, 0, { value: 17 });
    16 var desc = Object.getOwnPropertyDescriptor(o, 0);
    17 assertEq(desc !== undefined, true);
    18 assertEq(desc.value, 17);
    19 assertEq(desc.enumerable, false);
    20 assertEq(desc.configurable, false);
    21 assertEq(desc.writable, false);
    23 desc = Object.getOwnPropertyDescriptor(o, "length");
    24 assertEq(desc !== undefined, true);
    25 assertEq(desc.enumerable, false);
    26 assertEq(desc.configurable, false);
    27 assertEq(desc.writable, true);
    28 assertEq(desc.value, 1);
    29 assertEq(o.length, 1);
    31 Object.defineProperty(o, "foobar",
    32                       { value: 42, enumerable: false, configurable: true });
    33 assertEq(o.foobar, 42);
    34 desc = Object.getOwnPropertyDescriptor(o, "foobar");
    35 assertEq(desc !== undefined, true);
    36 assertEq(desc.value, 42);
    37 assertEq(desc.configurable, true);
    38 assertEq(desc.enumerable, false);
    39 assertEq(desc.writable, false);
    41 var called = false;
    42 o = { set x(a) { called = true; } };
    43 Object.defineProperty(o, "x", { get: function() { return "get"; } });
    44 desc = Object.getOwnPropertyDescriptor(o, "x");
    45 assertEq("set" in desc, true);
    46 assertEq("get" in desc, true);
    47 assertEq(called, false);
    48 o.x = 13;
    49 assertEq(called, true);
    51 var toSource = Object.prototype.toSource || function() { };
    52 toSource.call(o); // a test for this not crashing
    54 var called = false;
    55 var o =
    56   Object.defineProperty({}, "foo",
    57                         { get: function() { return 17; },
    58                           set: function(v) { called = true; } });
    60 assertEq(o.foo, 17);
    61 o.foo = 42;
    62 assertEq(called, true);
    64 /*
    65  * XXX need tests for Object.defineProperty(array, "length", { ... }) when we
    66  * support it!
    67  */
    69 /******************************************************************************/
    71 if (typeof reportCompare === "function")
    72   reportCompare(true, true);
    74 print("All tests passed!");

mercurial