tor-browser

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

storage_setitem.window.js (7417B)


      1 ["localStorage", "sessionStorage"].forEach(function(name) {
      2    var test_error = { name: "test" };
      3    var interesting_strs = ["\uD7FF", "\uD800", "\uDBFF", "\uDC00",
      4                            "\uDFFF", "\uE000", "\uFFFD", "\uFFFE", "\uFFFF",
      5                            "\uD83C\uDF4D", "\uD83Ca", "a\uDF4D",
      6                            "\uDBFF\uDFFF"];
      7 
      8    for (var i = 0; i <= 0xFF; i++) {
      9        interesting_strs.push(String.fromCharCode(i));
     10    }
     11 
     12    test(function() {
     13        var storage = window[name];
     14        storage.clear();
     15 
     16        storage.setItem("name", "user1");
     17        assert_equals(storage.length, 1, "localStorage.setItem")
     18    }, name + ".setItem()");
     19 
     20    test(function() {
     21        var storage = window[name];
     22        storage.clear();
     23 
     24        storage["name"] = "user1";
     25        assert_true("name" in storage);
     26        assert_equals(storage.length, 1, "storage.length")
     27        assert_equals(storage.getItem("name"), "user1");
     28        assert_equals(storage["name"], "user1");
     29    }, name + "[]");
     30 
     31    test(function() {
     32        var storage = window[name];
     33        storage.clear();
     34 
     35        storage["name"] = "user1";
     36        storage["name"] = "user2";
     37        assert_true("name" in storage);
     38        assert_equals(storage.length, 1, "storage.length")
     39        assert_equals(storage.getItem("name"), "user2");
     40        assert_equals(storage["name"], "user2");
     41    }, name + "[] update");
     42 
     43    test(function() {
     44        var storage = window[name];
     45        storage.clear();
     46 
     47        storage.setItem("age", null);
     48        assert_true("age" in storage);
     49        assert_equals(storage.length, 1, "storage.length")
     50        assert_equals(storage.getItem("age"), "null");
     51        assert_equals(storage["age"], "null");
     52    }, name + ".setItem(_, null)");
     53 
     54    test(function() {
     55        var storage = window[name];
     56        storage.clear();
     57 
     58        storage["age"] = null;
     59        assert_true("age" in storage);
     60        assert_equals(storage.length, 1, "storage.length")
     61        assert_equals(storage.getItem("age"), "null");
     62        assert_equals(storage["age"], "null");
     63    }, name + "[] = null");
     64 
     65    test(function() {
     66        var storage = window[name];
     67        storage.clear();
     68 
     69        storage.setItem("age", undefined);
     70        assert_true("age" in storage);
     71        assert_equals(storage.length, 1, "storage.length")
     72        assert_equals(storage.getItem("age"), "undefined");
     73        assert_equals(storage["age"], "undefined");
     74    }, name + ".setItem(_, undefined)");
     75 
     76    test(function() {
     77        var storage = window[name];
     78        storage.clear();
     79 
     80        storage["age"] = undefined;
     81        assert_true("age" in storage);
     82        assert_equals(storage.length, 1, "storage.length")
     83        assert_equals(storage.getItem("age"), "undefined");
     84        assert_equals(storage["age"], "undefined");
     85    }, name + "[] = undefined");
     86 
     87    test(function() {
     88        var storage = window[name];
     89        storage.clear();
     90 
     91        storage.setItem("age", "10");
     92        assert_throws_exactly(test_error, function() {
     93            storage.setItem("age",
     94                { toString: function() { throw test_error; } });
     95        });
     96        assert_true("age" in storage);
     97        assert_equals(storage.length, 1, "storage.length")
     98        assert_equals(storage.getItem("age"), "10");
     99        assert_equals(storage["age"], "10");
    100    }, name + ".setItem({ throws })");
    101 
    102    test(function() {
    103        var storage = window[name];
    104        storage.clear();
    105 
    106        storage.setItem("age", "10");
    107        assert_throws_exactly(test_error, function() {
    108            storage["age"] =
    109                { toString: function() { throw test_error; } };
    110        });
    111        assert_true("age" in storage);
    112        assert_equals(storage.length, 1, "storage.length")
    113        assert_equals(storage.getItem("age"), "10");
    114        assert_equals(storage["age"], "10");
    115    }, name + "[] = { throws }");
    116 
    117    test(function() {
    118        var storage = window[name];
    119        storage.clear();
    120 
    121        storage.setItem(undefined, "test");
    122        assert_true("undefined" in storage);
    123        assert_equals(storage.length, 1, "storage.length")
    124        assert_equals(storage.getItem("undefined"), "test");
    125        assert_equals(storage["undefined"], "test");
    126    }, name + ".setItem(undefined, _)");
    127 
    128    test(function() {
    129        var storage = window[name];
    130        storage.clear();
    131 
    132        storage[undefined] = "test2";
    133        assert_true("undefined" in storage);
    134        assert_equals(storage.length, 1, "storage.length")
    135        assert_equals(storage.getItem("undefined"), "test2");
    136        assert_equals(storage["undefined"], "test2");
    137    }, name + "[undefined]");
    138 
    139    test(function() {
    140        var storage = window[name];
    141        storage.clear();
    142 
    143        storage.setItem(null, "test");
    144        assert_true("null" in storage);
    145        assert_equals(storage.length, 1, "storage.length")
    146        assert_equals(storage.getItem("null"), "test");
    147        assert_equals(storage["null"], "test");
    148    }, name + ".setItem(null, _)");
    149 
    150    test(function() {
    151        var storage = window[name];
    152        storage.clear();
    153 
    154        storage[null] = "test2";
    155        assert_true("null" in storage);
    156        assert_equals(storage.length, 1, "storage.length")
    157        assert_equals(storage.getItem("null"), "test2");
    158        assert_equals(storage["null"], "test2");
    159    }, name + "[null]");
    160 
    161    test(function() {
    162        var storage = window[name];
    163        storage.clear();
    164 
    165        storage["foo\0bar"] = "user1";
    166        assert_true("foo\0bar" in storage);
    167        assert_false("foo\0" in storage);
    168        assert_false("foo\0baz" in storage);
    169        assert_false("foo" in storage);
    170        assert_equals(storage.length, 1, "storage.length")
    171        assert_equals(storage.getItem("foo\0bar"), "user1");
    172        assert_equals(storage.getItem("foo\0"), null);
    173        assert_equals(storage.getItem("foo\0baz"), null);
    174        assert_equals(storage.getItem("foo"), null);
    175        assert_equals(storage["foo\0bar"], "user1");
    176        assert_equals(storage["foo\0"], undefined);
    177        assert_equals(storage["foo\0baz"], undefined);
    178        assert_equals(storage["foo"], undefined);
    179    }, name + " key containing null");
    180 
    181    test(function() {
    182        var storage = window[name];
    183        storage.clear();
    184 
    185        storage["name"] = "foo\0bar";
    186        assert_true("name" in storage);
    187        assert_equals(storage.length, 1, "storage.length")
    188        assert_equals(storage.getItem("name"), "foo\0bar");
    189        assert_equals(storage["name"], "foo\0bar");
    190    }, name + " value containing null");
    191 
    192    for (i = 0; i < interesting_strs.length; i++) {
    193        var str = interesting_strs[i];
    194        test(function() {
    195            var storage = window[name];
    196            storage.clear();
    197 
    198            storage[str] = "user1";
    199            assert_true(str in storage);
    200            assert_equals(storage.length, 1, "storage.length")
    201            assert_equals(storage.getItem(str), "user1");
    202            assert_equals(storage[str], "user1");
    203        }, name + "[" + format_value(str) + "]");
    204 
    205        test(function() {
    206            var storage = window[name];
    207            storage.clear();
    208 
    209            storage["name"] = str;
    210            assert_equals(storage.length, 1, "storage.length")
    211            assert_equals(storage.getItem("name"), str);
    212            assert_equals(storage["name"], str);
    213        }, name + "[] = " + format_value(str));
    214    }
    215 });