You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by rk...@apache.org on 2015/11/13 02:39:23 UTC
cordova-plugin-file git commit: CB-9891: Fix permission errors due to
URI encoding inconsistency on Android
Repository: cordova-plugin-file
Updated Branches:
refs/heads/master 70247c066 -> ef93b58ce
CB-9891: Fix permission errors due to URI encoding inconsistency on Android
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/ef93b58c
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/tree/ef93b58c
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/diff/ef93b58c
Branch: refs/heads/master
Commit: ef93b58cecc433382f125702934e3ed30d995eb3
Parents: 70247c0
Author: Jason Ginchereau <ja...@microsoft.com>
Authored: Wed Nov 11 12:05:32 2015 -0800
Committer: Jason Ginchereau <ja...@microsoft.com>
Committed: Wed Nov 11 16:11:23 2015 -0800
----------------------------------------------------------------------
www/android/FileSystem.js | 27 ++++++++++++++++++++-------
1 file changed, 20 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/ef93b58c/www/android/FileSystem.js
----------------------------------------------------------------------
diff --git a/www/android/FileSystem.js b/www/android/FileSystem.js
index 518e4c4..09b3b2d 100644
--- a/www/android/FileSystem.js
+++ b/www/android/FileSystem.js
@@ -23,14 +23,27 @@ FILESYSTEM_PROTOCOL = "cdvfile";
module.exports = {
__format__: function(fullPath, nativeUrl) {
- var path = '/' + this.name + '/' + encodeURI(fullPath);
- path = path.replace('//','/');
- var ret = FILESYSTEM_PROTOCOL + '://localhost' + path;
- var m = /\?.*/.exec(nativeUrl);
- if (m) {
- ret += m[0];
+ var path;
+ var contentUrlMatch = /^content:\/\//.exec(nativeUrl);
+ if (contentUrlMatch) {
+ // When available, use the path from a native content URL, which was already encoded by Android.
+ // This is necessary because JavaScript's encodeURI() does not encode as many characters as
+ // Android, which can result in permission exceptions when the encoding of a content URI
+ // doesn't match the string for which permission was originally granted.
+ path = nativeUrl.substring(contentUrlMatch[0].length - 1);
+ } else {
+ path = encodeURI(fullPath);
+ if (!/^\//.test(path)) {
+ path = '/' + path;
+ }
+
+ var m = /\?.*/.exec(nativeUrl);
+ if (m) {
+ path += m[0];
+ }
}
- return ret;
+
+ return FILESYSTEM_PROTOCOL + '://localhost/' + this.name + path;
}
};
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org