47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
if (this.importScripts) {
|
|
importScripts('../../../resources/js-test.js');
|
|
importScripts('shared.js');
|
|
}
|
|
|
|
if (window.testRunner)
|
|
testRunner.setAllowStorageQuotaIncrease(false);
|
|
|
|
var quota = 400 * 1024; // default quota for testing.
|
|
description("This test makes sure that storage of indexedDB does not grow unboundedly.");
|
|
|
|
indexedDBTest(prepareDatabase, onOpenSuccess);
|
|
|
|
function prepareDatabase(event)
|
|
{
|
|
preamble(event);
|
|
evalAndLog("db = event.target.result");
|
|
evalAndLog("store = db.createObjectStore('store')");
|
|
}
|
|
|
|
function onOpenSuccess(event)
|
|
{
|
|
preamble(event);
|
|
evalAndLog("db = event.target.result");
|
|
evalAndLog("store = db.transaction('store', 'readwrite').objectStore('store')");
|
|
|
|
// Small add should succeed.
|
|
evalAndLog("addCount = 0");
|
|
for (var i = 1; i <= 10; i ++)
|
|
evalAndLog("store.add(new Uint8Array(1), " + i + ").onsuccess = ()=> { ++addCount; }");
|
|
|
|
// Big add should fail.
|
|
evalAndLog("request = store.add(new Uint8Array(" + (quota + 1) + "), 0)");
|
|
request.onerror = function(event) {
|
|
shouldBe("addCount", "10");
|
|
shouldBeTrue("'error' in request");
|
|
shouldBe("request.error.code", "DOMException.QUOTA_EXCEEDED_ERR");
|
|
shouldBeEqualToString("request.error.name", "QuotaExceededError");
|
|
finishJSTest();
|
|
}
|
|
|
|
request.onsuccess = function(event) {
|
|
testFailed("Add operation should fail because storage limit is reached, but succeeded.");
|
|
finishJSTest();
|
|
}
|
|
}
|