Index: chrome/test/data/extensions/api_test/extfs/test.js |
diff --git a/chrome/test/data/extensions/api_test/extfs/test.js b/chrome/test/data/extensions/api_test/extfs/test.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7603bbe608beb25fe97950854e035ddd6e3f2431 |
--- /dev/null |
+++ b/chrome/test/data/extensions/api_test/extfs/test.js |
@@ -0,0 +1,120 @@ |
+// Copyright 2013 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. |
+ |
+var globalFileSystem; |
+var globalEntries = []; |
+ |
+function errorCodeToString(code) { |
+ var message = ''; |
+ |
+ switch (code) { |
+ case FileError.QUOTA_EXCEEDED_ERR: |
+ return 'QUOTA_EXCEEDED_ERR'; |
+ case FileError.NOT_FOUND_ERR: |
+ return 'NOT_FOUND_ERR'; |
+ case FileError.SECURITY_ERR: |
+ return 'SECURITY_ERR'; |
+ case FileError.INVALID_MODIFICATION_ERR: |
+ return 'INVALID_MODIFICATION_ERR'; |
+ case FileError.INVALID_STATE_ERR: |
+ return 'INVALID_STATE_ERR'; |
+ }; |
+ |
+ return 'Unknown Error'; |
+} |
+ |
+var globalMountPointName = 'testfs'; |
+ |
+chrome.test.runTests([ |
+ // Request the access to the file system. |
+ function requestFileSystem() { |
+ chrome.fileBrowserPrivate.requestFileSystem( |
+ function(fileSystem) { |
+ chrome.test.assertTrue(!!fileSystem); |
+ chrome.test.succeed(); |
+ globalFileSystem = fileSystem; |
+ } |
+ ); |
+ }, |
+ |
+ // TODO(satorux): It's not guaranteed that the 'testfs' mount point is |
+ // already added. Should fix the race. |
+ |
+ // Collect all entries in the file system recursively. |
+ function collectEntries() { |
+ var root = globalFileSystem.root; |
+ // 'extfs' is mounted as 'extfs' in the root directory. |
+ // Get an entry for it. |
+ root.getDirectory( |
+ globalMountPointName, |
+ { create: false }, |
+ function(entry) { |
+ var numInflight = 1; |
+ // Try read the tree recursively. |
+ function onEntries(entries) { |
+ for (var i = 0; i < entries.length; i++) { |
+ globalEntries.push(entries[i]); |
+ if (entries[i].isDirectory) { |
+ var reader = entries[i].createReader(); |
+ numInflight++; |
+ reader.readEntries(onEntries); |
+ } |
+ } |
+ numInflight--; |
+ if (numInflight == 0) |
+ chrome.test.succeed(); |
+ } |
+ var reader = entry.createReader(); |
+ reader.readEntries(onEntries); |
+ }, |
+ function(error) { |
+ console.log('Failed to get directory entry: ' + |
+ errorCodeToString(error.code)); |
+ chrome.test.fail(); |
+ }); |
+ }, |
+ |
+ // Prints all file names. This will print: |
+ // Path: /extfs/file1 |
+ // Path: /extfs/dir1 |
+ // Path: /extfs/dir1/file2 |
+ // Path: /extfs/dir1/file3 |
+ // Path: /extfs/dir1/dir2 |
+ // Path: /extfs/dir1/dir2/file4 |
+ // Path: /extfs/dir1/dir2/dir3 |
+ function printFullPaths() { |
+ for (var i = 0; i < globalEntries.length; i++) { |
+ console.log('Path: ' + globalEntries[i].fullPath); |
+ } |
+ chrome.test.succeed(); |
+ }, |
+ |
+ // Print contents of all files. |
+ function printFileContents() { |
+ var numInflight = 0; |
+ for (var i = 0; i < globalEntries.length; i++) { |
+ var entry = globalEntries[i]; |
+ if (entry.isDirectory) |
+ continue; |
+ |
+ numInflight++; |
+ entry.file( |
+ function(file) { |
+ var reader = new FileReader(); |
+ reader.onloadend = function(e) { |
+ console.log(entry.fullPath + ': ' + this.result); |
+ numInflight--; |
+ if (numInflight == 0) |
+ chrome.test.succeed(); |
+ } |
+ reader.readAsText(file); |
+ }, |
+ function(error) { |
+ console.log('Failed to get the file object: ' + |
+ errorCodeToString(error.code)); |
+ chrome.test.fail(); |
+ }); |
+ } |
+ }, |
+]); |