| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <div>This verifies File.size (for a file from FileSystem API) always returns the fresh size even after the file is modified.</div> |
| <div id='console'></div> |
| <script> |
| |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| var fileEntryForCleanup; |
| var testFile; |
| var testText1 = '1234567890'; |
| var testText2 = 'abcdefghijklmnopqrstuvwxyz'; |
| |
| webkitRequestFileSystem( |
| window.TEMPORARY, 100, function(fs) { |
| fs.root.getFile('test', {create:true}, function(entry) { |
| fileEntryForCleanup = entry; |
| writeTextToFile(entry, testText1, function() { |
| log('Write succeeded.'); |
| entry.file(onWrittenFile.bind(this, entry), onError); |
| }); |
| }, onError); |
| }, onError); |
| |
| function onWrittenFile(entry, file) { |
| testFile = file; |
| shouldBe('testFile.size', 'testText1.length'); |
| // Write into this file again. |
| writeTextToFile(entry, testText2, function() { |
| log('Write succeeded.'); |
| entry.file(function() { |
| // The file size should be updated. |
| shouldBe('testFile.size', 'testText2.length'); |
| cleanup(); |
| }, onError); |
| }); |
| } |
| |
| function writeTextToFile(entry, contents, successCallback) |
| { |
| log('Writing ' + contents + ' to the file...'); |
| entry.createWriter(function(writer) { |
| log('Created a writer.'); |
| writer.write(new Blob([contents], {type:'plain/text'})); |
| writer.onwriteend = successCallback; |
| writer.onerror = onError; |
| }); |
| } |
| |
| function log(text) |
| { |
| var console = document.getElementById('console'); |
| console.appendChild(document.createTextNode(text)); |
| console.appendChild(document.createElement('br')); |
| } |
| |
| function onError(e) |
| { |
| log('ERROR: ' + e.code); |
| console.log(e); |
| cleanup(); |
| } |
| |
| function cleanup() |
| { |
| if (fileEntryForCleanup) { |
| fileEntryForCleanup.remove(endTest, endTest); |
| return; |
| } |
| endTest(); |
| } |
| |
| function endTest() |
| { |
| if (testRunner) |
| testRunner.notifyDone(); |
| } |
| |
| </script> |
| </body> |
| </html> |