blob: e09db68a4d7c8e6384c8bff396a98edf1e1f167b [file] [log] [blame]
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body onload="runTest()">
<script>
description("Check that a quota increase is granted, even if the provided expected size is too low.");
jsTestIsAsync = true;
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.clearAllDatabases();
testRunner.dumpDatabaseCallbacks();
testRunner.databaseDefaultQuota = 0.1 * 1024 * 1024;
testRunner.databaseMaxQuota = 50 * 1024 * 1024;
}
let db;
const dataSize = 0.5 * 1024 * 1024; // 0.5 MB.
let largeData = "";
for (let i = 0; i < dataSize; i++)
largeData += "x";
let isFirstAttempt = true;
function writeData()
{
db.transaction((tx) => {
let id = 1;
tx.executeSql('INSERT INTO foo (id, text) VALUES (?, ?)', [id, largeData]);
}, (error) => {
if (isFirstAttempt && error.code == SQLError.QUOTA_ERR) {
isFirstAttempt = false;
setTimeout(writeData, 0);
return;
}
testFailed("Failed to write data: " + error.code + ": " + error.message);
finishJSTest();
}, () => {
testPassed("Successfully wrote data");
finishJSTest();
});
}
function runTest() {
try {
db = openDatabase('ExpandedQuotaTransaction', '', '', 0.2 * 1024 * 1024);
} catch (err) {
testFailed("Failed to open the database");
finishJSTest();
return;
}
db.transaction((tx) => {
tx.executeSql('CREATE TABLE foo (id unique, text)');
}, (error) => {
testFailed("Failed to create table: " + error.code + ": " + error.message);
finishJSTest();
}, () => {
writeData();
});
}
onload = runTest;
</script>
</body>
</html>