Fix iOS build after r243337
[WebKit-https.git] / LayoutTests / http / tests / IndexedDB / storage-limit-1.https.html
1 <html>
2 <head>
3 <script src="/js-test-resources/js-test.js"></script>
4 <script src="resources/shared.js"></script>
5 </head>
6 <body>
7 <script>
8 if (window.testRunner)
9     testRunner.setAllowStorageQuotaIncrease(false);
10
11 description("This test makes sure that storage of indexedDB  and Cache API do not grow unboundedly.");
12
13 window.caches.open("test").then(cache => {
14     return cache.put(new Request("/test"), new Response(new Uint8Array(200 * 1024)));
15 }).then(async() => {
16     // Let's terminate the network process so that all the opened quota users are gone for IDB quota check.
17     if (window.testRunner)
18         testRunner.terminateNetworkProcess();
19     while (true) {
20         try {
21             await fetch(".");
22             break;
23         } catch (e) { }
24     }
25     indexedDBTest(prepareDatabase, onOpenSuccess, {'suffix': '-1'});
26 }).catch(e => {
27     testFailed("Cache API store operation failed: " + e);
28     finishJSTest();
29 });
30
31 function prepareDatabase(event)
32 {
33     evalAndLog("db = event.target.result");
34     evalAndLog("store = db.createObjectStore('store')");
35 }
36
37 // Quota for test is 400ko, but IDB is eating some of it when initializing files.
38 // Let's make sure that 200ko is fine but 300ko after 200ko is not fine.
39 async function onOpenSuccess(event)
40 {
41     evalAndLog("db = event.target.result");
42     evalAndLog("store = db.transaction('store', 'readwrite').objectStore('store')");
43     evalAndLog("request = store.add(new Uint8Array(300 * 1024), 'key')");
44     request.onerror = function(event) {
45         shouldBeTrue("'error' in request");
46         shouldBe("request.error.code", "DOMException.QUOTA_EXCEEDED_ERR");
47         shouldBeEqualToString("request.error.name", "QuotaExceededError");
48         finishJSTest();
49     }
50
51     request.onsuccess = function(event) {
52         testFailed("Add operation should fail because storage limit is reached, but succeeded.");
53         finishJSTest();
54     }
55 }</script>
56 </body>
57 </html>