51c15b8494ede61323c1de63b5d0f16c1663eb1c
[WebKit-https.git] / LayoutTests / http / tests / IndexedDB / resources / storage-limit.js
1 if (window.testRunner)
2     testRunner.setAllowStorageQuotaIncrease(false);
3
4 description("This test makes sure that storage of indexedDB does not grow unboundedly.");
5
6 window.caches.open("test").then(cache => {
7     return cache.put(new Request("/test"), new Response(new Uint8Array(204800)));
8 }).then(() => {
9     indexedDBTest(prepareDatabase, onOpenSuccess, {'suffix': '-1'});
10 }).catch(e => {
11     testFailed("Cache API store operation failed: " + e);
12     finishJSTest();
13 });
14
15 function prepareDatabase(event)
16 {
17     evalAndLog("db = event.target.result");
18     evalAndLog("store = db.createObjectStore('store')");
19 }
20
21 // Quota for test is 400ko, but IDB is eating some of it when initializing files.
22 // Let's make sure that 200ko is fine but 200ko after 200ko is not fine.
23 async function onOpenSuccess(event)
24 {
25     evalAndLog("db = event.target.result");
26     evalAndLog("store = db.transaction('store', 'readwrite').objectStore('store')");
27     evalAndLog("request = store.add(new Uint8Array(204800), 'key')");
28     request.onerror = function(event) {
29         shouldBeTrue("'error' in request");
30         shouldBe("request.error.code", "DOMException.QUOTA_EXCEEDED_ERR");
31         shouldBeEqualToString("request.error.name", "QuotaExceededError");
32         finishJSTest();
33     }
34
35     request.onsuccess = function(event) {
36         testFailed("Add operation should fail because storage limit is reached, but succeeded.");
37         finishJSTest();
38     }
39 }