1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5function truncateFailByQuota(fs) { 6 fs.root.getFile('fd', {create: false, exclusive: false}, function(fileEntry) { 7 fileEntry.createWriter(function(fileWriter) { 8 var failedInTruncate = false; 9 fileWriter.onerror = function(e) { 10 failedInTruncate = true; 11 }; 12 fileWriter.onwriteend = function(e) { 13 if (failedInTruncate) { 14 fail(e.currentTarget.error); 15 } else { 16 done(); 17 } 18 }; 19 fileWriter.truncate(2500 * 1024); 20 }, unexpectedErrorCallback) 21 }, function(e) { fail('Open for 2nd truncate:' + fileErrorToString(e)); } ); 22} 23 24function requestFileSystemSuccess(fs) { 25 fs.root.getFile('fd', {create: true, exclusive: false}, function(fileEntry) { 26 fileEntry.createWriter(function(fileWriter) { 27 var failedInTruncate = false; 28 fileWriter.onerror = function(e) { 29 debug(e.currentTarget.error); 30 failedInTruncate = true; 31 }; 32 fileWriter.onwriteend = function() { 33 if (failedInTruncate) { 34 truncateFailByQuota(fs); 35 } else { 36 fail('Unexpectedly succeeded to truncate. It should fail by quota.'); 37 } 38 }; 39 fileWriter.truncate(10000 * 1024); 40 }, unexpectedErrorCallback) 41 }, function(e) { fail('Open for 1st truncate:' + fileErrorToString(e)); } ); 42} 43 44function quotaSuccess(usage, quota) { 45 if (usage != 0) 46 fail('Usage is not zero: ' + usage); 47 if (quota != 5000 * 1024) 48 fail('Quota is not 5000KiB: ' + quota); 49 50 window.webkitRequestFileSystem( 51 window.TEMPORARY, 52 1024 * 1024, 53 requestFileSystemSuccess, 54 unexpectedErrorCallback); 55} 56 57function test() { 58 if (window.webkitStorageInfo) { 59 debug('Querying usage and quota.'); 60 webkitStorageInfo.queryUsageAndQuota(webkitStorageInfo.TEMPORARY, 61 quotaSuccess, 62 unexpectedErrorCallback); 63 } else { 64 debug('This test requires window.webkitStorageInfo.'); 65 } 66} 67