69 lines
1.7 KiB
HTML
69 lines
1.7 KiB
HTML
<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>
|