tor-browser

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

defineProperty.window.js (2081B)


      1 ["localStorage", "sessionStorage"].forEach(function(name) {
      2    [9, "x"].forEach(function(key) {
      3        test(function() {
      4            var desc = {
      5                value: "value",
      6            };
      7 
      8            var storage = window[name];
      9            storage.clear();
     10 
     11            assert_equals(storage[key], undefined);
     12            assert_equals(storage.getItem(key), null);
     13            assert_equals(Object.defineProperty(storage, key, desc), storage);
     14            assert_equals(storage[key], "value");
     15            assert_equals(storage.getItem(key), "value");
     16        }, "Defining data property for key " + key + " on " + name);
     17 
     18        test(function() {
     19            var desc1 = {
     20                value: "value",
     21            };
     22            var desc2 = {
     23                value: "new value",
     24            };
     25 
     26            var storage = window[name];
     27            storage.clear();
     28 
     29            assert_equals(storage[key], undefined);
     30            assert_equals(storage.getItem(key), null);
     31            assert_equals(Object.defineProperty(storage, key, desc1), storage);
     32            assert_equals(storage[key], "value");
     33            assert_equals(storage.getItem(key), "value");
     34 
     35            assert_equals(Object.defineProperty(storage, key, desc2), storage);
     36            assert_equals(storage[key], "new value");
     37            assert_equals(storage.getItem(key), "new value");
     38        }, "Defining data property for key " + key + " on " + name + " twice");
     39 
     40        test(function() {
     41            var desc = {
     42                value: {
     43                    toString: function() { return "value"; }
     44                },
     45            };
     46 
     47            var storage = window[name];
     48            storage.clear();
     49 
     50            assert_equals(storage[key], undefined);
     51            assert_equals(storage.getItem(key), null);
     52            assert_equals(Object.defineProperty(storage, key, desc), storage);
     53            assert_equals(storage[key], "value");
     54            assert_equals(storage.getItem(key), "value");
     55        }, "Defining data property with toString for key " + key + " on " + name);
     56    });
     57 });