tor-browser

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

redefine-length-accessor.js (1370B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 var absent = {};
      6 
      7 var getterValues = [absent, undefined, function(){}];
      8 var setterValues = [absent, undefined, function(){}];
      9 var configurableValues = [absent, true, false];
     10 var enumerableValues = [absent, true, false];
     11 
     12 function CreateDescriptor(getter, setter, enumerable, configurable) {
     13  var descriptor = {};
     14  if (getter !== absent)
     15    descriptor.get = getter;
     16  if (setter !== absent)
     17    descriptor.set = setter;
     18  if (configurable !== absent)
     19    descriptor.configurable = configurable;
     20  if (enumerable !== absent)
     21    descriptor.enumerable = enumerable;
     22  return descriptor;
     23 }
     24 
     25 getterValues.forEach(function(getter) {
     26  setterValues.forEach(function(setter) {
     27    enumerableValues.forEach(function(enumerable) {
     28      configurableValues.forEach(function(configurable) {
     29        var descriptor = CreateDescriptor(getter, setter, enumerable, configurable);
     30        if (!("get" in descriptor || "set" in descriptor))
     31          return;
     32 
     33        assertThrowsInstanceOf(function() {
     34          Object.defineProperty([], "length", descriptor);
     35        }, TypeError);
     36      });
     37    });
     38  });
     39 });
     40 
     41 if (typeof reportCompare === "function")
     42  reportCompare(0, 0);