incubator-callback-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From macdo...@apache.org
Subject git commit: Allow internal SD Card to be used as storage
Date Wed, 25 Jan 2012 21:35:59 GMT
Updated Branches:
  refs/heads/master 9206dca74 -> 6e82ec415


Allow internal SD Card to be used as storage


Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/6e82ec41
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/6e82ec41
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/6e82ec41

Branch: refs/heads/master
Commit: 6e82ec41523353532ca4301a09f584ebbb42a26b
Parents: 9206dca
Author: macdonst <simon.macdonald@gmail.com>
Authored: Thu Jan 12 15:54:25 2012 -0500
Committer: macdonst <simon.macdonald@gmail.com>
Committed: Wed Jan 25 16:34:46 2012 -0500

----------------------------------------------------------------------
 framework/assets/js/file.js                      |    4 --
 framework/src/com/phonegap/DirectoryManager.java |   32 ++++++++++------
 framework/src/com/phonegap/FileUtils.java        |   27 ++++++--------
 3 files changed, 31 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/6e82ec41/framework/assets/js/file.js
----------------------------------------------------------------------
diff --git a/framework/assets/js/file.js b/framework/assets/js/file.js
index 256aa0c..de6b672 100755
--- a/framework/assets/js/file.js
+++ b/framework/assets/js/file.js
@@ -928,11 +928,9 @@ LocalFileSystem.prototype._castFS = function(pluginResult) {
 LocalFileSystem.prototype._castEntry = function(pluginResult) {
     var entry = null;
     if (pluginResult.message.isDirectory) {
-        console.log("This is a dir");
         entry = new DirectoryEntry();
     }
     else if (pluginResult.message.isFile) {
-        console.log("This is a file");
         entry = new FileEntry();
     }
     entry.isDirectory = pluginResult.message.isDirectory;
@@ -956,11 +954,9 @@ LocalFileSystem.prototype._castEntries = function(pluginResult) {
 LocalFileSystem.prototype._createEntry = function(castMe) {
     var entry = null;
     if (castMe.isDirectory) {
-        console.log("This is a dir");
         entry = new DirectoryEntry();
     }
     else if (castMe.isFile) {
-        console.log("This is a file");
         entry = new FileEntry();
     }
     entry.isDirectory = castMe.isDirectory;

http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/6e82ec41/framework/src/com/phonegap/DirectoryManager.java
----------------------------------------------------------------------
diff --git a/framework/src/com/phonegap/DirectoryManager.java b/framework/src/com/phonegap/DirectoryManager.java
index 62247a9..ba3122e 100644
--- a/framework/src/com/phonegap/DirectoryManager.java
+++ b/framework/src/com/phonegap/DirectoryManager.java
@@ -57,33 +57,41 @@ public class DirectoryManager {
 	}
 	
 	/**
-	 * Get the free disk space on the SD card
+	 * Get the free disk space
 	 * 
 	 * @return 		Size in KB or -1 if not available
 	 */
-	protected static long getFreeDiskSpace() {
+	protected static long getFreeDiskSpace(boolean checkInternal) {
 		String status = Environment.getExternalStorageState();
 		long freeSpace = 0;
 		
 		// If SD card exists
 		if (status.equals(Environment.MEDIA_MOUNTED)) {
-			try {
-				File path = Environment.getExternalStorageDirectory();
-				StatFs stat = new StatFs(path.getPath());
-				long blockSize = stat.getBlockSize();
-				long availableBlocks = stat.getAvailableBlocks();
-				freeSpace = availableBlocks*blockSize/1024;
-			} catch (Exception e) {e.printStackTrace(); }
+			freeSpace = freeSpaceCalculation(Environment.getExternalStorageDirectory().getPath());
 		} 
-		
-		// If no SD card, then return -1
+		else if (checkInternal) {
+		    freeSpace = freeSpaceCalculation("/");
+		}		
+		// If no SD card and we haven't been asked to check the internal directory then return
-1
 		else { 
 			return -1; 
 		}
 		
-		return (freeSpace);
+		return freeSpace;
 	}	
 	
+	/**
+	 * Given a path return the number of free KB
+	 * 
+	 * @param path to the file system
+	 * @return free space in KB
+	 */
+	private static long freeSpaceCalculation(String path) {
+        StatFs stat = new StatFs(path);
+        long blockSize = stat.getBlockSize();
+        long availableBlocks = stat.getAvailableBlocks();
+        return availableBlocks*blockSize/1024;
+	}
 	
 	/**
 	 * Determine if SD card exists.

http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/6e82ec41/framework/src/com/phonegap/FileUtils.java
----------------------------------------------------------------------
diff --git a/framework/src/com/phonegap/FileUtils.java b/framework/src/com/phonegap/FileUtils.java
index 9bc0d0a..b20652a 100755
--- a/framework/src/com/phonegap/FileUtils.java
+++ b/framework/src/com/phonegap/FileUtils.java
@@ -101,7 +101,7 @@ public class FileUtils extends Plugin {
                     return new PluginResult(status, b);
                 }
                 else if (action.equals("getFreeDiskSpace")) {
-                    long l = DirectoryManager.getFreeDiskSpace();
+                    long l = DirectoryManager.getFreeDiskSpace(false);
                     return new PluginResult(status, l);
                 }
                 else if (action.equals("testFileExists")) {
@@ -131,7 +131,7 @@ public class FileUtils extends Plugin {
                 else if (action.equals("requestFileSystem")) {
                     long size = args.optLong(1);
                     if (size != 0) {
-                        if (size > (DirectoryManager.getFreeDiskSpace()*1024)) {
+                        if (size > (DirectoryManager.getFreeDiskSpace(true)*1024)) {
                             JSONObject error = new JSONObject().put("code", FileUtils.QUOTA_EXCEEDED_ERR);
                             return new PluginResult(PluginResult.Status.ERROR, error);
                         }
@@ -793,35 +793,30 @@ public class FileUtils extends Plugin {
     private JSONObject requestFileSystem(int type) throws IOException, JSONException {
         JSONObject fs = new JSONObject();
         if (type == TEMPORARY) {
+            File fp;
+            fs.put("name", "temporary");
             if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
-                fs.put("name", "temporary");
                 fs.put("root", getEntry(Environment.getExternalStorageDirectory().getAbsolutePath()
+
                         "/Android/data/" + ctx.getPackageName() + "/cache/"));
 
                 // Create the cache dir if it doesn't exist.
-                File fp = new File(Environment.getExternalStorageDirectory().getAbsolutePath()
+
+                fp = new File(Environment.getExternalStorageDirectory().getAbsolutePath()
+
                     "/Android/data/" + ctx.getPackageName() + "/cache/");
-                fp.mkdirs();
             } else {
-                throw new IOException("SD Card not mounted");
+                fs.put("root", getEntry("/data/data/" + ctx.getPackageName() + "/cache/"));
+                // Create the cache dir if it doesn't exist.
+                fp = new File("/data/data/" + ctx.getPackageName() + "/cache/");
             }
+            fp.mkdirs();
         }
         else if (type == PERSISTENT) {
+            fs.put("name", "persistent");
             if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
-                fs.put("name", "persistent");
                 fs.put("root", getEntry(Environment.getExternalStorageDirectory()));
             } else {
-                throw new IOException("SD Card not mounted");
+                fs.put("root", getEntry("/data/data/" + ctx.getPackageName()));
             }
         }
-        else if (type == RESOURCE) {
-            fs.put("name", "resource");
-
-        }
-        else if (type == APPLICATION) {
-            fs.put("name", "application");
-
-        }
         else {
             throw new IOException("No filesystem of type requested");
         }


Mime
View raw message