| // 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.'); |
| } |
| } |