diff options
Diffstat (limited to 'content/test/data/fileapi/quota_test.js')
-rw-r--r-- | content/test/data/fileapi/quota_test.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/content/test/data/fileapi/quota_test.js b/content/test/data/fileapi/quota_test.js new file mode 100644 index 0000000..382d623 --- /dev/null +++ b/content/test/data/fileapi/quota_test.js @@ -0,0 +1,66 @@ +// 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.'); + } +} |