summaryrefslogtreecommitdiffstats
path: root/LayoutTests/storage/domstorage/script-tests/quota.js
blob: ad9afe92ea9aa2182995422d0476f74458c1d605 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
description("Test the DOM Storage quota code.");

function testQuota(storageString)
{
    storage = eval(storageString);
    if (!storage) {
        testFailed(storageString + " DOES NOT exist");
        return;
    }

    debug("Testing " + storageString);

    evalAndLog("storage.clear()");
    shouldBe("storage.length", "0");

    debug("Creating 'data' which contains 64K of data");
    data = "X";
    for (var i=0; i<16; i++)
        data += data;
    shouldBe("data.length", "65536");

    debug("Putting 'data' into 39 " + storageString + " buckets.");
    for (var i=0; i<39; i++)
        storage[i] = data;

    debug("Putting 'data' into another bucket.h");
    try {
        storage[39] = data;
        testFailed("Did not hit quota error.");
    } catch (e) {
        testPassed("Hit exception as expected");
    }

    debug("Verify that data was never inserted.");
    shouldBeNull("storage.getItem(39)");

    debug("Removing bucket 38.");
    storage.removeItem('38');

    debug("Adding 'Hello!' into a new bucket.");
    try {
        storage['foo'] = "Hello!";
        testPassed("Insertion worked.");
    } catch (e) {
        testFailed("Exception: " + e);
    }
}

function testNoQuota(storageString)
{
    storage = eval(storageString);
    if (!storage) {
        testFailed(storageString + " DOES NOT exist");
        return;
    }

    debug("Testing " + storageString);

    evalAndLog("storage.clear()");
    shouldBe("storage.length", "0");

    debug("Creating 'data' which contains 64K of data");
    data = "X";
    for (var i=0; i<16; i++)
        data += data;
    shouldBe("data.length", "65536");

    debug("Putting 'data' into 40 " + storageString + " buckets.");
    for (var i=0; i<40; i++)
        storage[i] = data;

    debug("Putting 'data' into another bucket.h");
    try {
        storage[40] = data;
        testPassed("Insertion worked.");
    } catch (e) {
        testFailed("Exception: " + e);
    }
}

testNoQuota("sessionStorage");
debug("");
debug("");
testQuota("localStorage");

window.successfullyParsed = true;
isSuccessfullyParsed();