Index: chrome/test/data/file_manager/unit_tests/mocks/mock_entry.js |
diff --git a/chrome/test/data/file_manager/unit_tests/mocks/mock_entry.js b/chrome/test/data/file_manager/unit_tests/mocks/mock_entry.js |
index c8f68848ad94a453e76f5dacddafe82b19c580e5..311203965733d94e71b07b03411c29018c85a373 100644 |
--- a/chrome/test/data/file_manager/unit_tests/mocks/mock_entry.js |
+++ b/chrome/test/data/file_manager/unit_tests/mocks/mock_entry.js |
@@ -30,6 +30,41 @@ MockFileSystem.prototype = { |
}; |
/** |
+ * Creates a new mock filesystem with a root dir and the given volume ID. |
+ * @param {string} volumeId |
+ * @return {!MockFileSystem} |
+ */ |
+MockFileSystem.create = function(volumeId) { |
hirono
2014/12/04 04:44:23
It looks convenient. Could you please move the lin
Ben Kwa
2014/12/04 19:53:01
Done.
|
+ var fileSystem = new MockFileSystem(volumeId, 'filesystem:' + volumeId); |
+ fileSystem.entries['/'] = new MockDirectoryEntry(fileSystem, '/'); |
+ return fileSystem; |
+}; |
+ |
+/** |
+ * Creates file and directory entries for all the given paths. Paths ending in |
+ * slashes are interpreted as directories. All intermediate directories leading |
+ * up to the files/directories to be created, are also created. |
+ * @param {!Array<string>} paths An array of file paths to populate in this file |
+ * system. |
+ */ |
+MockFileSystem.prototype.populate = function(paths) { |
+ paths.forEach(function(path) { |
+ var pathElements = path.split('/'); |
+ pathElements.forEach(function(_, i) { |
+ var subpath = pathElements.slice(0, i).join('/'); |
+ if (subpath && !(subpath in this.entries)) { |
hirono
2014/12/04 04:44:24
nit: Please drop {}
Ben Kwa
2014/12/04 19:53:01
Done.
|
+ this.entries[subpath] = new MockDirectoryEntry(this, subpath); |
+ } |
+ }.bind(this)); |
+ |
+ // If the path doesn't end in a slash, create a file. |
+ if (!/\/$/.test(path)) { |
hirono
2014/12/04 04:44:24
nit: Please drop {}
Ben Kwa
2014/12/04 19:53:01
Done.
|
+ this.entries[path] = new MockFileEntry(this, path); |
hirono
2014/12/04 04:44:23
Entry should take metadata.
Ben Kwa
2014/12/04 19:53:01
Done.
|
+ } |
+ }.bind(this)); |
+}; |
+ |
+/** |
* Base class of mock entries. |
* |
* @param {TestFileSystem} filesystem File system where the entry is localed. |
@@ -207,12 +242,23 @@ MockDirectoryEntry.prototype.getFile = function( |
MockDirectoryEntry.prototype.getDirectory = |
function(path, option, onSuccess, onError) { |
var fullPath = path[0] === '/' ? path : joinPath(this.fullPath, path); |
- if (!this.filesystem.entries[fullPath]) |
- onError({name: util.FileError.NOT_FOUND_ERR}); |
- else if (!(this.filesystem.entries[fullPath] instanceof MockDirectoryEntry)) |
- onError({name: util.FileError.TYPE_MISMATCH_ERR}); |
- else |
- onSuccess(this.filesystem.entries[fullPath]); |
+ var result = this.filesystem.entries[fullPath]; |
hirono
2014/12/04 04:44:23
Thank you for implementing this!
Ben Kwa
2014/12/04 19:53:01
Acknowledged.
|
+ if (result) { |
+ if (!(result instanceof MockDirectoryEntry)) |
+ onError({name: util.FileError.TYPE_MISMATCH_ERR}); |
+ else if (option['create'] && option['exclusive']) |
+ onError({name: util.FileError.PATH_EXISTS_ERR}); |
+ else |
+ onSuccess(result); |
+ } else { |
+ if (!option['create']) { |
+ onError({name: util.FileError.NOT_FOUND_ERR}); |
+ } else { |
+ var newEntry = new MockDirectoryEntry(this.filesystem, fullPath); |
+ this.filesystem.entries[fullPath] = newEntry; |
+ onSuccess(newEntry); |
+ } |
+ } |
}; |
/** |