js/src/tests/js1_8_5/extensions/clone-transferables.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 // |reftest| skip-if(!xulRuntime.shell)
     2 // Any copyright is dedicated to the Public Domain.
     3 // http://creativecommons.org/licenses/publicdomain/
     5 function test() {
     6     // Note: -8 and -200 will trigger asm.js link failures because 8 and 200
     7     // bytes are below the minimum allowed size, and the buffer will not
     8     // actually be converted to an asm.js buffer.
     9     for (var size of [0, 8, 16, 200, 1000, 4096, -8, -200, -8192, -65536]) {
    10         var buffer_ctor = (size < 0) ? AsmJSArrayBuffer : ArrayBuffer;
    11         size = Math.abs(size);
    13         var old = new buffer_ctor(size);
    14         var copy = deserialize(serialize(old, [old]));
    15         assertEq(old.byteLength, 0);
    16         assertEq(copy.byteLength, size);
    18         var constructors = [ Int8Array,
    19                              Uint8Array,
    20                              Int16Array,
    21                              Uint16Array,
    22                              Int32Array,
    23                              Uint32Array,
    24                              Float32Array,
    25                              Float64Array,
    26                              Uint8ClampedArray ];
    28         for (var ctor of constructors) {
    29             var buf = new buffer_ctor(size);
    30             var old_arr = new ctor(buf);
    31             assertEq(buf.byteLength, size);
    32             assertEq(buf, old_arr.buffer);
    33             assertEq(old_arr.length, size / old_arr.BYTES_PER_ELEMENT);
    35             var copy_arr = deserialize(serialize(old_arr, [ buf ]));
    36             assertEq(buf.byteLength, 0, "donor array buffer should be neutered");
    37             assertEq(old_arr.length, 0, "donor typed array should be neutered");
    38             assertEq(copy_arr.buffer.byteLength == size, true);
    39             assertEq(copy_arr.length, size / old_arr.BYTES_PER_ELEMENT);
    41             buf = null;
    42             old_arr = null;
    43             gc(); // Tickle the ArrayBuffer -> view management
    44         }
    46         for (var ctor of constructors) {
    47             var buf = new buffer_ctor(size);
    48             var old_arr = new ctor(buf);
    49             var dv = new DataView(buf); // Second view
    50             var copy_arr = deserialize(serialize(old_arr, [ buf ]));
    51             assertEq(buf.byteLength, 0, "donor array buffer should be neutered");
    52             assertEq(old_arr.length, 0, "donor typed array should be neutered");
    53             assertEq(dv.byteLength, 0, "all views of donor array buffer should be neutered");
    55             buf = null;
    56             old_arr = null;
    57             gc(); // Tickle the ArrayBuffer -> view management
    58         }
    60         // Mutate the buffer during the clone operation. The modifications should be visible.
    61         if (size >= 4) {
    62             old = new buffer_ctor(size);
    63             var view = new Int32Array(old);
    64             view[0] = 1;
    65             var mutator = { get foo() { view[0] = 2; } };
    66             var copy = deserialize(serialize([ old, mutator ], [old]));
    67             var viewCopy = new Int32Array(copy[0]);
    68             assertEq(view.length, 0); // Neutered
    69             assertEq(viewCopy[0], 2);
    70         }
    72         // Neuter the buffer during the clone operation. Should throw an exception.
    73         if (size >= 4) {
    74             old = new buffer_ctor(size);
    75             var mutator = {
    76                 get foo() {
    77                     deserialize(serialize(old, [old]));
    78                 }
    79             };
    80             // The throw is not yet implemented, bug 919259.
    81             //var copy = deserialize(serialize([ old, mutator ], [old]));
    82         }
    83     }
    84 }
    86 test();
    87 reportCompare(0, 0, 'ok');

mercurial