Revert change in location of FileSystem

This commit is contained in:
macdonst 2012-02-29 12:38:35 -05:00
parent 79935d31ef
commit 21b7346277
2 changed files with 110 additions and 98 deletions

186
framework/assets/js/cordova.android.js Executable file → Normal file
View File

@ -2216,7 +2216,7 @@ var utils = require('cordova/utils'),
/** /**
* An interface representing a directory on the file system. * An interface representing a directory on the file system.
* *
* {boolean} isFile always false (readonly) * {boolean} isFile always false (readonly)
* {boolean} isDirectory always true (readonly) * {boolean} isDirectory always true (readonly)
* {DOMString} name of the directory, excluding the path leading to it (readonly) * {DOMString} name of the directory, excluding the path leading to it (readonly)
@ -2245,11 +2245,11 @@ DirectoryEntry.prototype.createReader = function() {
* @param {Function} errorCallback is called with a FileError * @param {Function} errorCallback is called with a FileError
*/ */
DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) { DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) {
var win = function(result) { var win = typeof successCallback !== 'function' ? null : function(result) {
var entry = new DirectoryEntry(result.name, result.fullPath); var entry = new DirectoryEntry(result.name, result.fullPath);
successCallback(entry); successCallback(entry);
}; };
var fail = function(code) { var fail = typeof errorCallback !== 'function' ? null : function(code) {
errorCallback(new FileError(code)); errorCallback(new FileError(code));
}; };
exec(win, fail, "File", "getDirectory", [this.fullPath, path, options]); exec(win, fail, "File", "getDirectory", [this.fullPath, path, options]);
@ -2262,7 +2262,7 @@ DirectoryEntry.prototype.getDirectory = function(path, options, successCallback,
* @param {Function} errorCallback is called with a FileError * @param {Function} errorCallback is called with a FileError
*/ */
DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) { DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) {
var fail = function(code) { var fail = typeof errorCallback !== 'function' ? null : function(code) {
errorCallback(new FileError(code)); errorCallback(new FileError(code));
}; };
exec(successCallback, fail, "File", "removeRecursively", [this.fullPath]); exec(successCallback, fail, "File", "removeRecursively", [this.fullPath]);
@ -2277,12 +2277,12 @@ DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCall
* @param {Function} errorCallback is called with a FileError * @param {Function} errorCallback is called with a FileError
*/ */
DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) { DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) {
var win = function(result) { var win = typeof successCallback !== 'function' ? null : function(result) {
var FileEntry = require('cordova/plugin/FileEntry'); var FileEntry = require('cordova/plugin/FileEntry');
var entry = new FileEntry(result.name, result.fullPath); var entry = new FileEntry(result.name, result.fullPath);
successCallback(entry); successCallback(entry);
}; };
var fail = function(code) { var fail = typeof errorCallback !== 'function' ? null : function(code) {
errorCallback(new FileError(code)); errorCallback(new FileError(code));
}; };
exec(win, fail, "File", "getFile", [this.fullPath, path, options]); exec(win, fail, "File", "getFile", [this.fullPath, path, options]);
@ -2309,7 +2309,7 @@ function DirectoryReader(path) {
* @param {Function} errorCallback is called with a FileError * @param {Function} errorCallback is called with a FileError
*/ */
DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) { DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) {
var win = function(result) { var win = typeof successCallback !== 'function' ? null : function(result) {
var retVal = []; var retVal = [];
for (var i=0; i<result.length; i++) { for (var i=0; i<result.length; i++) {
var entry = null; var entry = null;
@ -2327,7 +2327,7 @@ DirectoryReader.prototype.readEntries = function(successCallback, errorCallback)
} }
successCallback(retVal); successCallback(retVal);
}; };
var fail = function(code) { var fail = typeof errorCallback !== 'function' ? null : function(code) {
errorCallback(new FileError(code)); errorCallback(new FileError(code));
}; };
exec(win, fail, "File", "readEntries", [this.path]); exec(win, fail, "File", "readEntries", [this.path]);
@ -2344,7 +2344,7 @@ var exec = require('cordova/exec'),
/** /**
* Represents a file or directory on the local file system. * Represents a file or directory on the local file system.
* *
* @param isFile * @param isFile
* {boolean} true if Entry is a file (readonly) * {boolean} true if Entry is a file (readonly)
* @param isDirectory * @param isDirectory
@ -2366,26 +2366,27 @@ function Entry(isFile, isDirectory, name, fullPath, fileSystem) {
/** /**
* Look up the metadata of the entry. * Look up the metadata of the entry.
* *
* @param successCallback * @param successCallback
* {Function} is called with a Metadata object * {Function} is called with a Metadata object
* @param errorCallback * @param errorCallback
* {Function} is called with a FileError * {Function} is called with a FileError
*/ */
Entry.prototype.getMetadata = function(successCallback, errorCallback) { Entry.prototype.getMetadata = function(successCallback, errorCallback) {
var success = function(lastModified) { var success = typeof successCallback !== 'function' ? null : function(lastModified) {
var metadata = new Metadata(lastModified); var metadata = new Metadata(lastModified);
successCallback(metadata); successCallback(metadata);
}; };
var fail = function(code) { var fail = typeof errorCallback !== 'function' ? null : function(code) {
errorCallback(new FileError(code)); errorCallback(new FileError(code));
}; };
exec(success, fail, "File", "getMetadata", [this.fullPath]); exec(success, fail, "File", "getMetadata", [this.fullPath]);
}; };
/** /**
* Move a file or directory to a new location. * Move a file or directory to a new location.
* *
* @param parent * @param parent
* {DirectoryEntry} the directory to which to move this entry * {DirectoryEntry} the directory to which to move this entry
* @param newName * @param newName
@ -2396,50 +2397,49 @@ Entry.prototype.getMetadata = function(successCallback, errorCallback) {
* {Function} called with a FileError * {Function} called with a FileError
*/ */
Entry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) { Entry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) {
var fail = function(code) {
if (typeof errorCallback === 'function') {
errorCallback(new FileError(code));
}
};
// user must specify parent Entry // user must specify parent Entry
if (!parent) { if (!parent) {
errorCallback(new FileError(FileError.NOT_FOUND_ERR)); fail(FileError.NOT_FOUND_ERR);
return; return;
} }
// source path // source path
var srcPath = this.fullPath, var srcPath = this.fullPath,
// entry name // entry name
name = newName || this.name, name = newName || this.name,
// destination path
dstPath,
success = function(entry) { success = function(entry) {
var result;
if (entry) { if (entry) {
// create appropriate Entry object if (typeof successCallback === 'function') {
result = (entry.isDirectory) ? new (require('cordova/plugin/DirectoryEntry'))(entry.name, entry.fullPath) : new (require('cordova/plugin/FileEntry'))(entry.name, entry.fullPath); // create appropriate Entry object
try { var result = (entry.isDirectory) ? new (require('cordova/plugin/DirectoryEntry'))(entry.name, entry.fullPath) : new (require('cordova/plugin/FileEntry'))(entry.name, entry.fullPath);
successCallback(result); try {
successCallback(result);
}
catch (e) {
console.log('Error invoking callback: ' + e);
}
} }
catch (e) { }
console.log('Error invoking callback: ' + e);
}
}
else { else {
// no Entry object returned // no Entry object returned
errorCallback(new FileError(FileError.NOT_FOUND_ERR)); fail(FileError.NOT_FOUND_ERR);
} }
},
fail = function(code) {
errorCallback(new FileError(code));
}; };
// copy // copy
exec(success, fail, "File", "moveTo", [srcPath, parent.fullPath, name]); exec(success, fail, "File", "moveTo", [srcPath, parent.fullPath, name]);
}; };
/** /**
* Copy a directory to a different location. * Copy a directory to a different location.
* *
* @param parent * @param parent
* {DirectoryEntry} the directory to which to copy the entry * {DirectoryEntry} the directory to which to copy the entry
* @param newName * @param newName
* {DOMString} new name of the entry, defaults to the current name * {DOMString} new name of the entry, defaults to the current name
* @param successCallback * @param successCallback
* {Function} called with the new Entry object * {Function} called with the new Entry object
@ -2447,9 +2447,15 @@ Entry.prototype.moveTo = function(parent, newName, successCallback, errorCallbac
* {Function} called with a FileError * {Function} called with a FileError
*/ */
Entry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) { Entry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) {
var fail = function(code) {
if (typeof errorCallback === 'function') {
errorCallback(new FileError(code));
}
};
// user must specify parent Entry // user must specify parent Entry
if (!parent) { if (!parent) {
errorCallback(new FileError(FileError.NOT_FOUND_ERR)); fail(FileError.NOT_FOUND_ERR);
return; return;
} }
@ -2459,25 +2465,22 @@ Entry.prototype.copyTo = function(parent, newName, successCallback, errorCallbac
name = newName || this.name, name = newName || this.name,
// success callback // success callback
success = function(entry) { success = function(entry) {
var result;
if (entry) { if (entry) {
// create appropriate Entry object if (typeof successCallback === 'function') {
result = (entry.isDirectory) ? new (require('cordova/plugin/DirectoryEntry'))(entry.name, entry.fullPath) : new (require('cordova/plugin/FileEntry'))(entry.name, entry.fullPath); // create appropriate Entry object
try { var result = (entry.isDirectory) ? new (require('cordova/plugin/DirectoryEntry'))(entry.name, entry.fullPath) : new (require('cordova/plugin/FileEntry'))(entry.name, entry.fullPath);
successCallback(result); try {
} successCallback(result);
catch (e) { }
console.log('Error invoking callback: ' + e); catch (e) {
console.log('Error invoking callback: ' + e);
}
} }
} }
else { else {
// no Entry object returned // no Entry object returned
errorCallback(new FileError(FileError.NOT_FOUND_ERR)); fail(FileError.NOT_FOUND_ERR);
} }
},
fail = function(code) {
errorCallback(new FileError(code));
}; };
// copy // copy
@ -2508,13 +2511,13 @@ Entry.prototype.toURI = function(mimeType) {
* Remove a file or directory. It is an error to attempt to delete a * Remove a file or directory. It is an error to attempt to delete a
* directory that is not empty. It is an error to attempt to delete a * directory that is not empty. It is an error to attempt to delete a
* root directory of a file system. * root directory of a file system.
* *
* @param successCallback {Function} called with no parameters * @param successCallback {Function} called with no parameters
* @param errorCallback {Function} called with a FileError * @param errorCallback {Function} called with a FileError
*/ */
Entry.prototype.remove = function(successCallback, errorCallback) { Entry.prototype.remove = function(successCallback, errorCallback) {
var fail = function(code) { var fail = typeof errorCallback !== 'function' ? null : function(code) {
errorCallback(new FileError(code)); errorCallback(new FileError(code));
}; };
exec(successCallback, fail, "File", "remove", [this.fullPath]); exec(successCallback, fail, "File", "remove", [this.fullPath]);
}; };
@ -2526,7 +2529,7 @@ Entry.prototype.remove = function(successCallback, errorCallback) {
* @param errorCallback {Function} called with a FileError * @param errorCallback {Function} called with a FileError
*/ */
Entry.prototype.getParent = function(successCallback, errorCallback) { Entry.prototype.getParent = function(successCallback, errorCallback) {
var fail = function(code) { var fail = typeof errorCallback !== 'function' ? null : function(code) {
errorCallback(new FileError(code)); errorCallback(new FileError(code));
}; };
exec(successCallback, fail, "File", "getParent", [this.fullPath]); exec(successCallback, fail, "File", "getParent", [this.fullPath]);
@ -2568,7 +2571,7 @@ var utils = require('cordova/utils'),
/** /**
* An interface representing a file on the file system. * An interface representing a file on the file system.
* *
* {boolean} isFile always true (readonly) * {boolean} isFile always true (readonly)
* {boolean} isDirectory always false (readonly) * {boolean} isDirectory always false (readonly)
* {DOMString} name of the file, excluding the path leading to it (readonly) * {DOMString} name of the file, excluding the path leading to it (readonly)
@ -2610,12 +2613,12 @@ FileEntry.prototype.createWriter = function(successCallback, errorCallback) {
* @param {Function} errorCallback is called with a FileError * @param {Function} errorCallback is called with a FileError
*/ */
FileEntry.prototype.file = function(successCallback, errorCallback) { FileEntry.prototype.file = function(successCallback, errorCallback) {
var win = function(f) { var win = typeof successCallback !== 'function' ? null : function(f) {
var file = new File(f.name, f.fullPath, f.type, f.lastModifiedDate, f.size); var file = new File(f.name, f.fullPath, f.type, f.lastModifiedDate, f.size);
successCallback(file); successCallback(file);
}; };
var fail = function(e) { var fail = typeof errorCallback !== 'function' ? null : function(code) {
errorCallback(new FileError(e)); errorCallback(new FileError(code));
}; };
exec(win, fail, "File", "getFileMetadata", [this.fullPath]); exec(win, fail, "File", "getFileMetadata", [this.fullPath]);
}; };
@ -2857,7 +2860,6 @@ FileReader.prototype.readAsDataURL = function(file) {
}, },
// Error callback // Error callback
function(e) { function(e) {
var evt;
// If DONE (cancelled), then don't do anything // If DONE (cancelled), then don't do anything
if (me.readyState === FileReader.DONE) { if (me.readyState === FileReader.DONE) {
return; return;
@ -2920,7 +2922,7 @@ var DirectoryEntry = require('cordova/plugin/DirectoryEntry');
var FileSystem = function(name, root) { var FileSystem = function(name, root) {
this.name = name || null; this.name = name || null;
if (root) { if (root) {
this.root = new DirectoryEntry(name, root); this.root = new DirectoryEntry(root.name, root.fullPath);
} }
}; };
@ -3149,7 +3151,6 @@ FileWriter.prototype.write = function(text) {
exec( exec(
// Success callback // Success callback
function(r) { function(r) {
var evt;
// If DONE (cancelled), then don't do anything // If DONE (cancelled), then don't do anything
if (me.readyState === FileWriter.DONE) { if (me.readyState === FileWriter.DONE) {
return; return;
@ -3948,28 +3949,31 @@ var FileError = require('cordova/plugin/FileError'),
* @param errorCallback invoked if error occurs retrieving file system * @param errorCallback invoked if error occurs retrieving file system
*/ */
var requestFileSystem = function(type, size, successCallback, errorCallback) { var requestFileSystem = function(type, size, successCallback, errorCallback) {
if (type < 0 || type > 3) { var fail = function(code) {
if (typeof errorCallback === "function") { if (typeof errorCallback === 'function') {
errorCallback(new FileError(FileError.SYNTAX_ERR)); errorCallback(new FileError(code));
} }
} else {
// if successful, return a FileSystem object
var success = function(file_system) {
if (file_system) {
// grab the name and root from the file system object
var result = new FileSystem(file_system.name, file_system.root);
successCallback(result);
}
else {
// no FileSystem object returned
errorCallback(new FileError(FileError.NOT_FOUND_ERR));
}
}; };
var fail = function(e) {
errorCallback(new FileError(e)); if (type < 0 || type > 3) {
}; fail(FileError.SYNTAX_ERR);
exec(success, fail, "File", "requestFileSystem", [type, size]); } else {
} // if successful, return a FileSystem object
var success = function(file_system) {
if (file_system) {
if (typeof successCallback === 'function') {
// grab the name and root from the file system object
var result = new FileSystem(file_system.name, file_system.root);
successCallback(result);
}
}
else {
// no FileSystem object returned
fail(FileError.NOT_FOUND_ERR);
}
};
exec(success, fail, "File", "requestFileSystem", [type, size]);
}
}; };
module.exports = requestFileSystem; module.exports = requestFileSystem;
@ -3983,27 +3987,31 @@ var DirectoryEntry = require('cordova/plugin/DirectoryEntry'),
/** /**
* Look up file system Entry referred to by local URI. * Look up file system Entry referred to by local URI.
* @param {DOMString} uri URI referring to a local file or directory * @param {DOMString} uri URI referring to a local file or directory
* @param successCallback invoked with Entry object corresponding to URI * @param successCallback invoked with Entry object corresponding to URI
* @param errorCallback invoked if error occurs retrieving file system entry * @param errorCallback invoked if error occurs retrieving file system entry
*/ */
module.exports = function(uri, successCallback, errorCallback) { module.exports = function(uri, successCallback, errorCallback) {
// error callback // error callback
var fail = function(error) { var fail = function(error) {
errorCallback(new FileError(error)); if (typeof errorCallback === 'function') {
errorCallback(new FileError(error));
}
}; };
// if successful, return either a file or directory entry // if successful, return either a file or directory entry
var success = function(entry) { var success = function(entry) {
var result; var result;
if (entry) { if (entry) {
// create appropriate Entry object if (typeof successCallback === 'function') {
result = (entry.isDirectory) ? new DirectoryEntry(entry.name, entry.fullPath) : new FileEntry(entry.name, entry.fullPath); // create appropriate Entry object
try { result = (entry.isDirectory) ? new DirectoryEntry(entry.name, entry.fullPath) : new FileEntry(entry.name, entry.fullPath);
successCallback(result); try {
} successCallback(result);
catch (e) { }
console.log('Error invoking callback: ' + e); catch (e) {
console.log('Error invoking callback: ' + e);
}
} }
} }
else { else {

View File

@ -815,27 +815,31 @@ public class FileUtils extends Plugin {
File fp; File fp;
fs.put("name", "temporary"); fs.put("name", "temporary");
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
fs.put("root", "file://" + Environment.getExternalStorageDirectory().getAbsolutePath() +
"/Android/data/" + ctx.getPackageName() + "/cache/");
// Create the cache dir if it doesn't exist.
fp = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + fp = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +
"/Android/data/" + ctx.getPackageName() + "/cache/"); "/Android/data/" + ctx.getPackageName() + "/cache/");
} else {
fs.put("root", "file:///data/data/" + ctx.getPackageName() + "/cache/");
// Create the cache dir if it doesn't exist. // Create the cache dir if it doesn't exist.
fp.mkdirs();
fs.put("root", getEntry(Environment.getExternalStorageDirectory().getAbsolutePath() +
"/Android/data/" + ctx.getPackageName() + "/cache/"));
} else {
fp = new File("/data/data/" + ctx.getPackageName() + "/cache/"); fp = new File("/data/data/" + ctx.getPackageName() + "/cache/");
// Create the cache dir if it doesn't exist.
fp.mkdirs();
fs.put("root", getEntry("/data/data/" + ctx.getPackageName() + "/cache/"));
} }
fp.mkdirs();
} }
else if (type == PERSISTENT) { else if (type == PERSISTENT) {
fs.put("name", "persistent"); fs.put("name", "persistent");
fs.put("root", "file:///data/data/" + ctx.getPackageName()); if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
fs.put("root", getEntry(Environment.getExternalStorageDirectory()));
} else {
fs.put("root", getEntry("/data/data/" + ctx.getPackageName()));
}
} }
else { else {
throw new IOException("No filesystem of type requested"); throw new IOException("No filesystem of type requested");
} }
return fs; return fs;
} }