tor-browser

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

symbol-props.window.js (2293B)


      1 ["localStorage", "sessionStorage"].forEach(function(name) {
      2    test(function() {
      3        var key = Symbol();
      4 
      5        var storage = window[name];
      6        storage.clear();
      7 
      8        storage[key] = "test";
      9        assert_equals(storage[key], "test");
     10    }, name + ": plain set + get (loose)");
     11 
     12    test(function() {
     13        "use strict";
     14        var key = Symbol();
     15 
     16        var storage = window[name];
     17        storage.clear();
     18 
     19        storage[key] = "test";
     20        assert_equals(storage[key], "test");
     21    }, name + ": plain set + get (strict)");
     22 
     23    test(function() {
     24        var key = Symbol();
     25 
     26        var storage = window[name];
     27        storage.clear();
     28 
     29        Object.defineProperty(storage, key, { "value": "test" });
     30        assert_equals(storage[key], "test");
     31    }, name + ": defineProperty + get");
     32 
     33    test(function() {
     34        var key = Symbol();
     35 
     36        var storage = window[name];
     37        storage.clear();
     38 
     39        Object.defineProperty(storage, key, { "value": "test", "configurable": false });
     40        assert_equals(storage[key], "test");
     41        var desc = Object.getOwnPropertyDescriptor(storage, key);
     42        assert_false(desc.configurable, "configurable");
     43 
     44        assert_false(delete storage[key]);
     45        assert_equals(storage[key], "test");
     46    }, name + ": defineProperty not configurable");
     47 
     48    test(function() {
     49        var key = Symbol();
     50        Storage.prototype[key] = "test";
     51        this.add_cleanup(function() { delete Storage.prototype[key]; });
     52 
     53        var storage = window[name];
     54        storage.clear();
     55 
     56        assert_equals(storage[key], "test");
     57        var desc = Object.getOwnPropertyDescriptor(storage, key);
     58        assert_equals(desc, undefined);
     59    }, name + ": get with symbol on prototype");
     60 
     61    test(function() {
     62        var key = Symbol();
     63 
     64        var storage = window[name];
     65        storage.clear();
     66 
     67        storage[key] = "test";
     68        assert_true(delete storage[key]);
     69        assert_equals(storage[key], undefined);
     70    }, name + ": delete existing property");
     71 
     72    test(function() {
     73        var key = Symbol();
     74 
     75        var storage = window[name];
     76        storage.clear();
     77 
     78        assert_true(delete storage[key]);
     79        assert_equals(storage[key], undefined);
     80    }, name + ": delete non-existent property");
     81 });