You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bh...@apache.org on 2014/01/02 19:08:49 UTC

git commit: CB-5699 [BlackBerry10] Update resolveLocalFileSystemURI implementation

Updated Branches:
  refs/heads/dev a76de41b6 -> b7882772b


CB-5699 [BlackBerry10] Update resolveLocalFileSystemURI implementation

The native webkitResolveLocalFileSystemURI does not support accessing URIs
outside of the application sandbox.


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/commit/b7882772
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/tree/b7882772
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/diff/b7882772

Branch: refs/heads/dev
Commit: b7882772b329c0690e0eaef264a21661c3e2f659
Parents: a76de41
Author: Bryan Higgins <bh...@blackberry.com>
Authored: Tue Dec 24 10:59:12 2013 -0500
Committer: Bryan Higgins <bh...@blackberry.com>
Committed: Tue Dec 24 11:43:58 2013 -0500

----------------------------------------------------------------------
 src/blackberry10/index.js                     |  2 +-
 www/blackberry10/fileUtils.js                 |  2 +-
 www/blackberry10/resolveLocalFileSystemURI.js | 58 +++++++++++-----------
 3 files changed, 31 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/b7882772/src/blackberry10/index.js
----------------------------------------------------------------------
diff --git a/src/blackberry10/index.js b/src/blackberry10/index.js
index 914d966..9e4cfd3 100644
--- a/src/blackberry10/index.js
+++ b/src/blackberry10/index.js
@@ -1,7 +1,7 @@
 module.exports = {
     setSandbox : function (success, fail, args, env) {
         require("lib/webview").setSandbox(JSON.parse(decodeURIComponent(args[0])));
-        new PluginResult(args, env).noResult(false);
+        new PluginResult(args, env).ok();
     },
 
     isSandboxed : function (success, fail, args, env) {

http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/b7882772/www/blackberry10/fileUtils.js
----------------------------------------------------------------------
diff --git a/www/blackberry10/fileUtils.js b/www/blackberry10/fileUtils.js
index 06e676d..740669c 100644
--- a/www/blackberry10/fileUtils.js
+++ b/www/blackberry10/fileUtils.js
@@ -47,6 +47,6 @@ module.exports = {
     },
 
     isOutsideSandbox: function (path) {
-        return (path.indexOf("accounts/1000/") === 0 || path.indexOf("/accounts/1000/") === 0);
+        return (path.indexOf("accounts/1000") !== -1);
     }
 };

http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/b7882772/www/blackberry10/resolveLocalFileSystemURI.js
----------------------------------------------------------------------
diff --git a/www/blackberry10/resolveLocalFileSystemURI.js b/www/blackberry10/resolveLocalFileSystemURI.js
index 3ede22c..f447a42 100644
--- a/www/blackberry10/resolveLocalFileSystemURI.js
+++ b/www/blackberry10/resolveLocalFileSystemURI.js
@@ -22,36 +22,36 @@
 var fileUtils = require('./BB10Utils'),
     FileError = require('./FileError');
 
-function stripURI(uri) {
-    var rmFsLocal = uri.substring("filesystem:local:///".length);
-    return rmFsLocal.substring(rmFsLocal.indexOf('/') + 1);
-}
-
 module.exports = function (uri, success, fail) {
-    var sandboxState,
-        decodedURI = decodeURI(uri);
 
-    cordova.exec(function (sandboxed) {
-        sandboxState = sandboxed;
-    }, function (e) {
-        console.log("[ERROR]: Could not retrieve sandbox state ", e);
-    }, "org.apache.cordova.file", "isSandboxed");
+    var decodedURI = decodeURI(uri).replace(/filesystem:/, '').replace(/local:\/\//, '').replace(/file:\/\//, ''),
+        failNotFound = function () {
+            fail(FileError.NOT_FOUND_ERR);
+        },
+        resolveURI = function () {
+            window.webkitRequestFileSystem(
+                window.PERSISTENT,
+                //todo: match app quota (this is only used for sandboxed fs)
+                50*1024*1024,
+                function (fs) {
+                    fs.root.getFile(
+                        decodedURI,
+                        { create: false },
+                        function (entry) {
+                            success(fileUtils.createEntry(entry));
+                        },
+                        failNotFound
+                    );
+                },
+                failNotFound
+            );
+        };
 
-    if (fileUtils.isOutsideSandbox(stripURI(decodedURI))) {
-        cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [false]);
-    } else {
-        cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [true]);
-    }
-    window.webkitResolveLocalFileSystemURL(decodedURI, function (entry) {
-        success(fileUtils.createEntry(entry));
-    }, function (e) {
-        window.webkitResolveLocalFileSystemURL(decodedURI + '/', function (entry) {
-            success(fileUtils.createEntry(entry));
-        }, function (e) {
-            if (typeof fail === "function") {
-                fail(e);
-            }
-        });
-    });
-    cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [sandboxState]);
+    cordova.exec(
+        resolveURI, 
+        failNotFound, 
+        'org.apache.cordova.file', 
+        'setSandbox', 
+        [!fileUtils.isOutsideSandbox(decodedURI)]
+    );
 };