forked from github/cordova-android
fix for Issue #229: Deprecate FileMgr code in file.js
This commit is contained in:
parent
6fabcfc8d3
commit
362841008a
@ -11,8 +11,6 @@ PhoneGap.addResource("file");
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* This class provides some useful information about a file.
|
* This class provides some useful information about a file.
|
||||||
* This is the fields returned when navigator.fileMgr.getFileProperties()
|
|
||||||
* is called.
|
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
var FileProperties = function(filePath) {
|
var FileProperties = function(filePath) {
|
||||||
@ -32,9 +30,9 @@ var FileProperties = function(filePath) {
|
|||||||
* @param size {Number} size of the file in bytes
|
* @param size {Number} size of the file in bytes
|
||||||
*/
|
*/
|
||||||
var File = function(name, fullPath, type, lastModifiedDate, size) {
|
var File = function(name, fullPath, type, lastModifiedDate, size) {
|
||||||
this.name = name || null;
|
this.name = name || null;
|
||||||
this.fullPath = fullPath || null;
|
this.fullPath = fullPath || null;
|
||||||
this.type = type || null;
|
this.type = type || null;
|
||||||
this.lastModifiedDate = lastModifiedDate || null;
|
this.lastModifiedDate = lastModifiedDate || null;
|
||||||
this.size = size || 0;
|
this.size = size || 0;
|
||||||
};
|
};
|
||||||
@ -61,64 +59,9 @@ FileError.QUOTA_EXCEEDED_ERR = 10;
|
|||||||
FileError.TYPE_MISMATCH_ERR = 11;
|
FileError.TYPE_MISMATCH_ERR = 11;
|
||||||
FileError.PATH_EXISTS_ERR = 12;
|
FileError.PATH_EXISTS_ERR = 12;
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
// File manager
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/** @constructor */
|
|
||||||
var FileMgr = function() {
|
|
||||||
};
|
|
||||||
|
|
||||||
FileMgr.prototype.getFileProperties = function(filePath) {
|
|
||||||
return PhoneGap.exec(null, null, "File", "getFileProperties", [filePath]);
|
|
||||||
};
|
|
||||||
|
|
||||||
FileMgr.prototype.getFileBasePaths = function() {
|
|
||||||
};
|
|
||||||
|
|
||||||
FileMgr.prototype.testSaveLocationExists = function(successCallback, errorCallback) {
|
|
||||||
return PhoneGap.exec(successCallback, errorCallback, "File", "testSaveLocationExists", []);
|
|
||||||
};
|
|
||||||
|
|
||||||
FileMgr.prototype.testFileExists = function(fileName, successCallback, errorCallback) {
|
|
||||||
return PhoneGap.exec(successCallback, errorCallback, "File", "testFileExists", [fileName]);
|
|
||||||
};
|
|
||||||
|
|
||||||
FileMgr.prototype.testDirectoryExists = function(dirName, successCallback, errorCallback) {
|
|
||||||
return PhoneGap.exec(successCallback, errorCallback, "File", "testDirectoryExists", [dirName]);
|
|
||||||
};
|
|
||||||
|
|
||||||
FileMgr.prototype.getFreeDiskSpace = function(successCallback, errorCallback) {
|
|
||||||
return PhoneGap.exec(successCallback, errorCallback, "File", "getFreeDiskSpace", []);
|
|
||||||
};
|
|
||||||
|
|
||||||
FileMgr.prototype.write = function(fileName, data, position, successCallback, errorCallback) {
|
|
||||||
PhoneGap.exec(successCallback, errorCallback, "File", "write", [fileName, data, position]);
|
|
||||||
};
|
|
||||||
|
|
||||||
FileMgr.prototype.truncate = function(fileName, size, successCallback, errorCallback) {
|
|
||||||
PhoneGap.exec(successCallback, errorCallback, "File", "truncate", [fileName, size]);
|
|
||||||
};
|
|
||||||
|
|
||||||
FileMgr.prototype.readAsText = function(fileName, encoding, successCallback, errorCallback) {
|
|
||||||
PhoneGap.exec(successCallback, errorCallback, "File", "readAsText", [fileName, encoding]);
|
|
||||||
};
|
|
||||||
|
|
||||||
FileMgr.prototype.readAsDataURL = function(fileName, successCallback, errorCallback) {
|
|
||||||
PhoneGap.exec(successCallback, errorCallback, "File", "readAsDataURL", [fileName]);
|
|
||||||
};
|
|
||||||
|
|
||||||
PhoneGap.addConstructor(function() {
|
|
||||||
if (typeof navigator.fileMgr === "undefined") {
|
|
||||||
navigator.fileMgr = new FileMgr();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// File Reader
|
// File Reader
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// TODO: All other FileMgr function operate on the SD card as root. However,
|
|
||||||
// for FileReader & FileWriter the root is not SD card. Should this be changed?
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class reads the mobile device file system.
|
* This class reads the mobile device file system.
|
||||||
@ -188,11 +131,11 @@ FileReader.prototype.abort = function() {
|
|||||||
*/
|
*/
|
||||||
FileReader.prototype.readAsText = function(file, encoding) {
|
FileReader.prototype.readAsText = function(file, encoding) {
|
||||||
this.fileName = "";
|
this.fileName = "";
|
||||||
if (typeof file.fullPath === "undefined") {
|
if (typeof file.fullPath === "undefined") {
|
||||||
this.fileName = file;
|
this.fileName = file;
|
||||||
} else {
|
} else {
|
||||||
this.fileName = file.fullPath;
|
this.fileName = file.fullPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
// LOADING state
|
// LOADING state
|
||||||
this.readyState = FileReader.LOADING;
|
this.readyState = FileReader.LOADING;
|
||||||
@ -208,8 +151,7 @@ FileReader.prototype.readAsText = function(file, encoding) {
|
|||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
// Read file
|
// Read file
|
||||||
navigator.fileMgr.readAsText(this.fileName, enc,
|
PhoneGap.exec(
|
||||||
|
|
||||||
// Success callback
|
// Success callback
|
||||||
function(r) {
|
function(r) {
|
||||||
var evt;
|
var evt;
|
||||||
@ -235,89 +177,6 @@ FileReader.prototype.readAsText = function(file, encoding) {
|
|||||||
me.onloadend({"type":"loadend", "target":me});
|
me.onloadend({"type":"loadend", "target":me});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// Error callback
|
|
||||||
function(e) {
|
|
||||||
var evt;
|
|
||||||
// If DONE (cancelled), then don't do anything
|
|
||||||
if (me.readyState === FileReader.DONE) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save error
|
|
||||||
me.error = e;
|
|
||||||
|
|
||||||
// If onerror callback
|
|
||||||
if (typeof me.onerror === "function") {
|
|
||||||
me.onerror({"type":"error", "target":me});
|
|
||||||
}
|
|
||||||
|
|
||||||
// DONE state
|
|
||||||
me.readyState = FileReader.DONE;
|
|
||||||
|
|
||||||
// If onloadend callback
|
|
||||||
if (typeof me.onloadend === "function") {
|
|
||||||
me.onloadend({"type":"loadend", "target":me});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Read file and return data as a base64 encoded data url.
|
|
||||||
* A data url is of the form:
|
|
||||||
* data:[<mediatype>][;base64],<data>
|
|
||||||
*
|
|
||||||
* @param file {File} File object containing file properties
|
|
||||||
*/
|
|
||||||
FileReader.prototype.readAsDataURL = function(file) {
|
|
||||||
this.fileName = "";
|
|
||||||
if (typeof file.fullPath === "undefined") {
|
|
||||||
this.fileName = file;
|
|
||||||
} else {
|
|
||||||
this.fileName = file.fullPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
// LOADING state
|
|
||||||
this.readyState = FileReader.LOADING;
|
|
||||||
|
|
||||||
// If loadstart callback
|
|
||||||
if (typeof this.onloadstart === "function") {
|
|
||||||
this.onloadstart({"type":"loadstart", "target":this});
|
|
||||||
}
|
|
||||||
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
// Read file
|
|
||||||
navigator.fileMgr.readAsDataURL(this.fileName,
|
|
||||||
|
|
||||||
// Success callback
|
|
||||||
function(r) {
|
|
||||||
var evt;
|
|
||||||
|
|
||||||
// If DONE (cancelled), then don't do anything
|
|
||||||
if (me.readyState === FileReader.DONE) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save result
|
|
||||||
me.result = r;
|
|
||||||
|
|
||||||
// If onload callback
|
|
||||||
if (typeof me.onload === "function") {
|
|
||||||
me.onload({"type":"load", "target":me});
|
|
||||||
}
|
|
||||||
|
|
||||||
// DONE state
|
|
||||||
me.readyState = FileReader.DONE;
|
|
||||||
|
|
||||||
// If onloadend callback
|
|
||||||
if (typeof me.onloadend === "function") {
|
|
||||||
me.onloadend({"type":"loadend", "target":me});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// Error callback
|
// Error callback
|
||||||
function(e) {
|
function(e) {
|
||||||
var evt;
|
var evt;
|
||||||
@ -341,8 +200,86 @@ FileReader.prototype.readAsDataURL = function(file) {
|
|||||||
if (typeof me.onloadend === "function") {
|
if (typeof me.onloadend === "function") {
|
||||||
me.onloadend({"type":"loadend", "target":me});
|
me.onloadend({"type":"loadend", "target":me});
|
||||||
}
|
}
|
||||||
}
|
}, "File", "readAsText", [this.fileName, enc]);
|
||||||
);
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read file and return data as a base64 encoded data url.
|
||||||
|
* A data url is of the form:
|
||||||
|
* data:[<mediatype>][;base64],<data>
|
||||||
|
*
|
||||||
|
* @param file {File} File object containing file properties
|
||||||
|
*/
|
||||||
|
FileReader.prototype.readAsDataURL = function(file) {
|
||||||
|
this.fileName = "";
|
||||||
|
if (typeof file.fullPath === "undefined") {
|
||||||
|
this.fileName = file;
|
||||||
|
} else {
|
||||||
|
this.fileName = file.fullPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
// LOADING state
|
||||||
|
this.readyState = FileReader.LOADING;
|
||||||
|
|
||||||
|
// If loadstart callback
|
||||||
|
if (typeof this.onloadstart === "function") {
|
||||||
|
this.onloadstart({"type":"loadstart", "target":this});
|
||||||
|
}
|
||||||
|
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
// Read file
|
||||||
|
PhoneGap.exec(
|
||||||
|
// Success callback
|
||||||
|
function(r) {
|
||||||
|
var evt;
|
||||||
|
|
||||||
|
// If DONE (cancelled), then don't do anything
|
||||||
|
if (me.readyState === FileReader.DONE) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save result
|
||||||
|
me.result = r;
|
||||||
|
|
||||||
|
// If onload callback
|
||||||
|
if (typeof me.onload === "function") {
|
||||||
|
me.onload({"type":"load", "target":me});
|
||||||
|
}
|
||||||
|
|
||||||
|
// DONE state
|
||||||
|
me.readyState = FileReader.DONE;
|
||||||
|
|
||||||
|
// If onloadend callback
|
||||||
|
if (typeof me.onloadend === "function") {
|
||||||
|
me.onloadend({"type":"loadend", "target":me});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// Error callback
|
||||||
|
function(e) {
|
||||||
|
var evt;
|
||||||
|
// If DONE (cancelled), then don't do anything
|
||||||
|
if (me.readyState === FileReader.DONE) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save error
|
||||||
|
me.error = e;
|
||||||
|
|
||||||
|
// If onerror callback
|
||||||
|
if (typeof me.onerror === "function") {
|
||||||
|
me.onerror({"type":"error", "target":me});
|
||||||
|
}
|
||||||
|
|
||||||
|
// DONE state
|
||||||
|
me.readyState = FileReader.DONE;
|
||||||
|
|
||||||
|
// If onloadend callback
|
||||||
|
if (typeof me.onloadend === "function") {
|
||||||
|
me.onloadend({"type":"loadend", "target":me});
|
||||||
|
}
|
||||||
|
}, "File", "readAsDataURL", [this.fileName]);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -383,10 +320,10 @@ FileReader.prototype.readAsArrayBuffer = function(file) {
|
|||||||
var FileWriter = function(file) {
|
var FileWriter = function(file) {
|
||||||
this.fileName = "";
|
this.fileName = "";
|
||||||
this.length = 0;
|
this.length = 0;
|
||||||
if (file) {
|
if (file) {
|
||||||
this.fileName = file.fullPath || file;
|
this.fileName = file.fullPath || file;
|
||||||
this.length = file.size || 0;
|
this.length = file.size || 0;
|
||||||
}
|
}
|
||||||
// default is to write at the beginning of the file
|
// default is to write at the beginning of the file
|
||||||
this.position = 0;
|
this.position = 0;
|
||||||
|
|
||||||
@ -398,12 +335,12 @@ var FileWriter = function(file) {
|
|||||||
this.error = null;
|
this.error = null;
|
||||||
|
|
||||||
// Event handlers
|
// Event handlers
|
||||||
this.onwritestart = null; // When writing starts
|
this.onwritestart = null; // When writing starts
|
||||||
this.onprogress = null; // While writing the file, and reporting partial file data
|
this.onprogress = null; // While writing the file, and reporting partial file data
|
||||||
this.onwrite = null; // When the write has successfully completed.
|
this.onwrite = null; // When the write has successfully completed.
|
||||||
this.onwriteend = null; // When the request has completed (either in success or failure).
|
this.onwriteend = null; // When the request has completed (either in success or failure).
|
||||||
this.onabort = null; // When the write has been aborted. For instance, by invoking the abort() method.
|
this.onabort = null; // When the write has been aborted. For instance, by invoking the abort() method.
|
||||||
this.onerror = null; // When the write has failed (see errors).
|
this.onerror = null; // When the write has failed (see errors).
|
||||||
};
|
};
|
||||||
|
|
||||||
// States
|
// States
|
||||||
@ -416,9 +353,9 @@ FileWriter.DONE = 2;
|
|||||||
*/
|
*/
|
||||||
FileWriter.prototype.abort = function() {
|
FileWriter.prototype.abort = function() {
|
||||||
// check for invalid state
|
// check for invalid state
|
||||||
if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) {
|
if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) {
|
||||||
throw FileError.INVALID_STATE_ERR;
|
throw FileError.INVALID_STATE_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set error
|
// set error
|
||||||
var error = new FileError(), evt;
|
var error = new FileError(), evt;
|
||||||
@ -448,10 +385,10 @@ FileWriter.prototype.abort = function() {
|
|||||||
* @param text to be written
|
* @param text to be written
|
||||||
*/
|
*/
|
||||||
FileWriter.prototype.write = function(text) {
|
FileWriter.prototype.write = function(text) {
|
||||||
// Throw an exception if we are already writing a file
|
// Throw an exception if we are already writing a file
|
||||||
if (this.readyState === FileWriter.WRITING) {
|
if (this.readyState === FileWriter.WRITING) {
|
||||||
throw FileError.INVALID_STATE_ERR;
|
throw FileError.INVALID_STATE_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
// WRITING state
|
// WRITING state
|
||||||
this.readyState = FileWriter.WRITING;
|
this.readyState = FileWriter.WRITING;
|
||||||
@ -464,8 +401,7 @@ FileWriter.prototype.write = function(text) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Write file
|
// Write file
|
||||||
navigator.fileMgr.write(this.fileName, text, this.position,
|
PhoneGap.exec(
|
||||||
|
|
||||||
// Success callback
|
// Success callback
|
||||||
function(r) {
|
function(r) {
|
||||||
var evt;
|
var evt;
|
||||||
@ -492,7 +428,6 @@ FileWriter.prototype.write = function(text) {
|
|||||||
me.onwriteend({"type":"writeend", "target":me});
|
me.onwriteend({"type":"writeend", "target":me});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// Error callback
|
// Error callback
|
||||||
function(e) {
|
function(e) {
|
||||||
var evt;
|
var evt;
|
||||||
@ -517,9 +452,7 @@ FileWriter.prototype.write = function(text) {
|
|||||||
if (typeof me.onwriteend === "function") {
|
if (typeof me.onwriteend === "function") {
|
||||||
me.onwriteend({"type":"writeend", "target":me});
|
me.onwriteend({"type":"writeend", "target":me});
|
||||||
}
|
}
|
||||||
}
|
}, "File", "write", [this.fileName, text, this.position]);
|
||||||
);
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -543,18 +476,18 @@ FileWriter.prototype.seek = function(offset) {
|
|||||||
|
|
||||||
// See back from end of file.
|
// See back from end of file.
|
||||||
if (offset < 0) {
|
if (offset < 0) {
|
||||||
this.position = Math.max(offset + this.length, 0);
|
this.position = Math.max(offset + this.length, 0);
|
||||||
}
|
}
|
||||||
// Offset is bigger then file size so set position
|
// Offset is bigger then file size so set position
|
||||||
// to the end of the file.
|
// to the end of the file.
|
||||||
else if (offset > this.length) {
|
else if (offset > this.length) {
|
||||||
this.position = this.length;
|
this.position = this.length;
|
||||||
}
|
}
|
||||||
// Offset is between 0 and file size so set the position
|
// Offset is between 0 and file size so set the position
|
||||||
// to start writing.
|
// to start writing.
|
||||||
else {
|
else {
|
||||||
this.position = offset;
|
this.position = offset;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -563,10 +496,10 @@ FileWriter.prototype.seek = function(offset) {
|
|||||||
* @param size to chop the file at.
|
* @param size to chop the file at.
|
||||||
*/
|
*/
|
||||||
FileWriter.prototype.truncate = function(size) {
|
FileWriter.prototype.truncate = function(size) {
|
||||||
// Throw an exception if we are already writing a file
|
// Throw an exception if we are already writing a file
|
||||||
if (this.readyState === FileWriter.WRITING) {
|
if (this.readyState === FileWriter.WRITING) {
|
||||||
throw FileError.INVALID_STATE_ERR;
|
throw FileError.INVALID_STATE_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
// WRITING state
|
// WRITING state
|
||||||
this.readyState = FileWriter.WRITING;
|
this.readyState = FileWriter.WRITING;
|
||||||
@ -579,8 +512,7 @@ FileWriter.prototype.truncate = function(size) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Write file
|
// Write file
|
||||||
navigator.fileMgr.truncate(this.fileName, size,
|
PhoneGap.exec(
|
||||||
|
|
||||||
// Success callback
|
// Success callback
|
||||||
function(r) {
|
function(r) {
|
||||||
var evt;
|
var evt;
|
||||||
@ -606,7 +538,6 @@ FileWriter.prototype.truncate = function(size) {
|
|||||||
me.onwriteend({"type":"writeend", "target":me});
|
me.onwriteend({"type":"writeend", "target":me});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// Error callback
|
// Error callback
|
||||||
function(e) {
|
function(e) {
|
||||||
var evt;
|
var evt;
|
||||||
@ -630,8 +561,7 @@ FileWriter.prototype.truncate = function(size) {
|
|||||||
if (typeof me.onwriteend === "function") {
|
if (typeof me.onwriteend === "function") {
|
||||||
me.onwriteend({"type":"writeend", "target":me});
|
me.onwriteend({"type":"writeend", "target":me});
|
||||||
}
|
}
|
||||||
}
|
}, "File", "truncate", [this.fileName, size]);
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1050,10 +980,10 @@ LocalFileSystem.prototype._castDate = function(pluginResult) {
|
|||||||
* Add the FileSystem interface into the browser.
|
* Add the FileSystem interface into the browser.
|
||||||
*/
|
*/
|
||||||
PhoneGap.addConstructor(function() {
|
PhoneGap.addConstructor(function() {
|
||||||
var pgLocalFileSystem = new LocalFileSystem();
|
var pgLocalFileSystem = new LocalFileSystem();
|
||||||
// Needed for cast methods
|
// Needed for cast methods
|
||||||
if(typeof window.localFileSystem == "undefined") window.localFileSystem = pgLocalFileSystem;
|
if(typeof window.localFileSystem == "undefined") window.localFileSystem = pgLocalFileSystem;
|
||||||
if(typeof window.requestFileSystem == "undefined") window.requestFileSystem = pgLocalFileSystem.requestFileSystem;
|
if(typeof window.requestFileSystem == "undefined") window.requestFileSystem = pgLocalFileSystem.requestFileSystem;
|
||||||
if(typeof window.resolveLocalFileSystemURI == "undefined") window.resolveLocalFileSystemURI = pgLocalFileSystem.resolveLocalFileSystemURI;
|
if(typeof window.resolveLocalFileSystemURI == "undefined") window.resolveLocalFileSystemURI = pgLocalFileSystem.resolveLocalFileSystemURI;
|
||||||
});
|
});
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user