| 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 afdb197bde1cfa18d619ecfcee46735e28fab7e4..9c0b5924ec5845346d19439d5de0b9a0ec268831 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
|
| @@ -3,39 +3,129 @@
|
| // found in the LICENSE file.
|
|
|
| /**
|
| + * Joins paths so that the two paths are connected by only 1 '/'.
|
| + * @param {string} a Path.
|
| + * @param {string} b Path.
|
| + * @return {string} Joined path.
|
| + */
|
| +function joinPath(a, b) {
|
| + return a.replace(/\/+$/, '') + '/' + b.replace(/^\/+/, '');
|
| +};
|
| +
|
| +/**
|
| + * Test file system.
|
| + *
|
| + * @param {string} fileSystemId File system ID.
|
| + * @constructor
|
| + */
|
| +function TestFileSystem(fileSystemId) {
|
| + this.fileSystemId = fileSystemId;
|
| + this.entries = {};
|
| +};
|
| +
|
| +TestFileSystem.prototype = {
|
| + get root() { return this.entries['/']; }
|
| +};
|
| +
|
| +/**
|
| * Base class of mock entries.
|
| *
|
| - * @param {string} volumeId ID of the volume that contains the entry.
|
| + * @param {TestFileSystem} filesystem File system where the entry is localed.
|
| * @param {string} fullpath Full path of the entry.
|
| * @constructor
|
| */
|
| -function MockEntry(volumeId, fullPath) {
|
| - this.volumeId = volumeId;
|
| +function MockEntry(filesystem, fullPath) {
|
| + this.filesystem = filesystem;
|
| this.fullPath = fullPath;
|
| }
|
|
|
| +MockEntry.prototype = {
|
| + /**
|
| + * @return {string} Name of the entry.
|
| + */
|
| + get name() {
|
| + return this.fullPath.replace(/^.*\//, '');
|
| + }
|
| +};
|
| +
|
| /**
|
| * Returns fake URL.
|
| *
|
| * @return {string} Fake URL.
|
| */
|
| MockEntry.prototype.toURL = function() {
|
| - return 'filesystem:' + this.volumeId + this.fullPath;
|
| + return 'filesystem:' + this.filesystem.fileSystemId + this.fullPath;
|
| +};
|
| +
|
| +/**
|
| + * Obtains parent directory.
|
| + *
|
| + * @param {function(MockDirectoryEntry)} onSuccess Callback invoked with
|
| + * the parent directory.
|
| + * @param {function(Object)} onError Callback invoked with an error
|
| + * object.
|
| + */
|
| +MockEntry.prototype.getParent = function(
|
| + onSuccess, onError) {
|
| + var path = this.fullPath.replace(/\/[^\/]+$/, '') || '/';
|
| + if (this.filesystem.entries[path])
|
| + onSuccess(this.filesystem.entries[path]);
|
| + else
|
| + onError({name: util.FileError.NOT_FOUND_ERR});
|
| +};
|
| +
|
| +/**
|
| + * Moves the entry to the directory.
|
| + *
|
| + * @param {MockDirectoryEntry} parent Destination directory.
|
| + * @param {string=} opt_newName New name.
|
| + * @param {function(MockDirectoryEntry)} onSuccess Callback invoked with the
|
| + * moved entry.
|
| + * @param {function(Object)} onError Callback invoked with an error object.
|
| + */
|
| +MockEntry.prototype.moveTo = function(parent, opt_newName, onSuccess, onError) {
|
| + Promise.resolve().then(function() {
|
| + this.filesystem.entries[this.fullPath] = null;
|
| + return this.clone(joinPath(parent.fullPath, opt_newName || this.name));
|
| + }.bind(this)).then(onSuccess, onError);
|
| +};
|
| +
|
| +/**
|
| + * Removes the entry.
|
| + *
|
| + * @param {function()} onSuccess Success callback.
|
| + * @param {function(Object)} onError Callback invoked with an error object.
|
| + */
|
| +MockEntry.prototype.remove = function(onSuccess, onError) {
|
| + Promise.resolve().then(function() {
|
| + this.filesystem.entries[this.fullPath] = null;
|
| + }.bind(this)).then(onSuccess, onError);
|
| +};
|
| +
|
| +/**
|
| + * Clones the entry with the new fullpath.
|
| + *
|
| + * @param {string} fullpath New fullpath.
|
| + * @return {MockEntry} Cloned entry.
|
| + */
|
| +MockEntry.prototype.clone = function(fullpath) {
|
| + throw new Error('Not implemented.');
|
| };
|
|
|
| /**
|
| * Mock class for FileEntry.
|
| *
|
| - * @param {string} volumeId Id of the volume containing the entry.
|
| + * @param {FileSystem} filesystem File system where the entry is localed.
|
| * @param {string} fullPath Full path for the entry.
|
| + * @param {Object} metadata Metadata.
|
| * @extends {MockEntry}
|
| * @constructor
|
| */
|
| -function MockFileEntry(volumeId, fullPath, metadata) {
|
| - MockEntry.call(this, volumeId, fullPath);
|
| - this.volumeId = volumeId;
|
| - this.fullPath = fullPath;
|
| +function MockFileEntry(filesystem, fullPath, metadata) {
|
| + MockEntry.call(this, filesystem, fullPath);
|
| this.metadata_ = metadata;
|
| + this.isFile = true;
|
| + this.isDirectory = false;
|
| }
|
|
|
| MockFileEntry.prototype = {
|
| @@ -54,18 +144,24 @@ MockFileEntry.prototype.getMetadata = function(callback) {
|
| };
|
|
|
| /**
|
| + * @override
|
| + */
|
| +MockFileEntry.prototype.clone = function(path) {
|
| + return new MockFileEntry(this.filesystem, path, this.metadata);
|
| +};
|
| +
|
| +/**
|
| * Mock class for DirectoryEntry.
|
| *
|
| - * @param {string} volumeId Id of the volume containing the entry.
|
| + * @param {FileSystem} filesystem File system where the entry is localed.
|
| * @param {string} fullPath Full path for the entry.
|
| - * @param {Object.<String, MockFileEntry|MockDirectoryEntry>} contents Map of
|
| - * path and MockEntry contained in the directory.
|
| * @extends {MockEntry}
|
| * @constructor
|
| */
|
| -function MockDirectoryEntry(volumeId, fullPath, contents) {
|
| - MockEntry.call(this, volumeId, fullPath);
|
| - this.contents_ = contents;
|
| +function MockDirectoryEntry(filesystem, fullPath) {
|
| + MockEntry.call(this, filesystem, fullPath);
|
| + this.isFile = false;
|
| + this.isDirectory = true;
|
| }
|
|
|
| MockDirectoryEntry.prototype = {
|
| @@ -73,21 +169,29 @@ MockDirectoryEntry.prototype = {
|
| };
|
|
|
| /**
|
| + * @override
|
| + */
|
| +MockDirectoryEntry.prototype.clone = function(path) {
|
| + return new MockDirectoryEntry(this.filesystem, path);
|
| +};
|
| +
|
| +/**
|
| * Returns a file under the directory.
|
| *
|
| * @param {string} path Path.
|
| * @param {Object} option Option.
|
| - * @param {callback(MockFileEntry)} successCallback Success callback.
|
| - * @param {callback(Object)} failureCallback Failure callback;
|
| + * @param {callback(MockFileEntry)} onSuccess Success callback.
|
| + * @param {callback(Object)} onError Failure callback;
|
| */
|
| MockDirectoryEntry.prototype.getFile = function(
|
| - path, option, successCallback, failureCallback) {
|
| - if (!this.contents_[path])
|
| - failureCallback({name: util.FileError.NOT_FOUND_ERR});
|
| - else if (!(this.contents_[path] instanceof MockFileEntry))
|
| - failureCallback({name: util.FileError.TYPE_MISMATCH_ERR});
|
| + 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 MockFileEntry))
|
| + onError({name: util.FileError.TYPE_MISMATCH_ERR});
|
| else
|
| - successCallback(this.contents_[path]);
|
| + onSuccess(this.filesystem.entries[fullPath]);
|
| };
|
|
|
| /**
|
| @@ -95,15 +199,16 @@ MockDirectoryEntry.prototype.getFile = function(
|
| *
|
| * @param {string} path Path.
|
| * @param {Object} option Option.
|
| - * @param {callback(MockDirectoryEntry)} successCallback Success callback.
|
| - * @param {callback(Object)} failureCallback Failure callback;
|
| + * @param {callback(MockDirectoryEntry)} onSuccess Success callback.
|
| + * @param {callback(Object)} onError Failure callback;
|
| */
|
| MockDirectoryEntry.prototype.getDirectory =
|
| - function(path, option, successCallback, failureCallback) {
|
| - if (!this.contents_[path])
|
| - failureCallback({name: util.FileError.NOT_FOUND_ERR});
|
| - else if (!(this.contents_[path] instanceof MockDirectoryEntry))
|
| - failureCallback({name: util.FileError.TYPE_MISMATCH_ERR});
|
| + 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
|
| - successCallback(this.contents_[path]);
|
| + onSuccess(this.filesystem.entries[fullPath]);
|
| };
|
|
|