// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
function truncateFailByQuota(fs) {
fs.root.getFile('fd', {create: false, exclusive: false}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
var failedInTruncate = false;
fileWriter.onerror = function(e) {
failedInTruncate = true;
};
fileWriter.onwriteend = function(e) {
if (failedInTruncate) {
fail(e.currentTarget.error);
} else {
done();
}
};
fileWriter.truncate(2500 * 1024);
}, unexpectedErrorCallback)
}, function(e) { fail('Open for 2nd truncate:' + fileErrorToString(e)); } );
}
function requestFileSystemSuccess(fs) {
fs.root.getFile('fd', {create: true, exclusive: false}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
var failedInTruncate = false;
fileWriter.onerror = function(e) {
debug(e.currentTarget.error);
failedInTruncate = true;
};
fileWriter.onwriteend = function() {
if (failedInTruncate) {
truncateFailByQuota(fs);
} else {
fail('Unexpectedly succeeded to truncate. It should fail by quota.');
}
};
fileWriter.truncate(10000 * 1024);
}, unexpectedErrorCallback)
}, function(e) { fail('Open for 1st truncate:' + fileErrorToString(e)); } );
}
function quotaSuccess(usage, quota) {
if (usage != 0)
fail('Usage is not zero: ' + usage);
if (quota != 5000 * 1024)
fail('Quota is not 5000KiB: ' + quota);
window.webkitRequestFileSystem(
window.TEMPORARY,
1024 * 1024,
requestFileSystemSuccess,
unexpectedErrorCallback);
}
function test() {
if (window.webkitStorageInfo) {
debug('Querying usage and quota.');
webkitStorageInfo.queryUsageAndQuota(webkitStorageInfo.TEMPORARY,
quotaSuccess,
unexpectedErrorCallback);
} else {
debug('This test requires window.webkitStorageInfo.');
}
}