[File] Added filesystems methods implementation.
authorTomasz Marciniak <t.marciniak@samsung.com>
Mon, 2 Nov 2015 09:12:41 +0000 (10:12 +0100)
committerTomasz Marciniak <t.marciniak@samsung.com>
Thu, 5 Nov 2015 07:51:15 +0000 (08:51 +0100)
[Verification] Code compiles without errors.

Change-Id: I579c66de4328e41c643e139f52a4d3ad9471beab
Signed-off-by: Tomasz Marciniak <t.marciniak@samsung.com>
src/file/js/fileSystemPaths.js
src/file/js/requestFileSystem.js
src/file/js/resolveLocalFileSystemURI.js

index 9de990cda4d0098a9e107201568f3c30980084df..95c2452c7d7714ca924d3057e0a5d422eb5a6be8 100644 (file)
@@ -19,14 +19,44 @@ cordova.define('cordova-plugin-file.tizen.fileSystemPaths', function(require, ex
 // TODO: remove -> end
 
 var pathsPrefix = {
-  // TODO: add other directories
-  // Read-only directory where the application is installed.
-  applicationDirectory: 'wgt-package/'
+  applicationDirectory: 'wgt-package/',
+  dataDirectory: 'wgt-private/',
+  cacheDirectory:'wgt-private-tmp/',
+  sharedDirectory: '/opt/usr/media/',
 };
 
+function setExternalStorage(successCallback, errorCallback) {
+  var onSuccess = function(storages) {
+    for (var i = 0; i < storages.length; i++) {
+      if (storages[i].type === 'EXTERNAL' && storages[i].state === 'MOUNTED') {
+        pathsPrefix.externalRootDirectory = storages[i].label + '/';
+        successCallback && successCallback(pathsPrefix);
+        return;
+      }
+    }
+  }
+
+  var onError = function(error) {
+    console.error("Failed to get external storage: " + error.message);
+    errorCallback && errorCallback(ConvErrorCode(error.code));
+  }
+
+  tizen.filesystem.listStorages(onSuccess, onError);
+}
+
+function setApplicationStorageDirectory(successCallback, errorCallback) {
+  try {
+    var app = tizen.application.getCurrentApplication();
+    pathsPrefix.applicationStorageDirectory = '/opt/usr/apps/' + app.appInfo.packageId + '/';
+    setExternalStorage(successCallback, errorCallback);
+  } catch(error) {
+    errorCallback && errorCallback(ConvErrorCode(error.code));
+  }
+}
+
 module.exports = {
   requestAllPaths: function(successCallback, errorCallback, args) {
-    successCallback(pathsPrefix);
+    setApplicationStorageDirectory(successCallback, errorCallback);
   }
 };
 
index 6c3e774af790538ee19c264a7a8b31462daeecb4..66d12d0d24b36dfeb57648ecd661ad6c459554ab 100644 (file)
@@ -19,7 +19,33 @@ cordova.define('cordova-plugin-file.tizen.requestFileSystem', function(require,
 // TODO: remove -> end
 
 module.exports = {
-  requestFileSystem: function(successCallback, errorCallback, args) {}
+  requestFileSystem: function(successCallback, errorCallback, args) {
+    var type = args[0];
+
+    //TEMPORARY = 0 PERSISTENT = 1 cordova layer checks only if type is less than 0
+    if (type >= 2) {
+      errorCallback && errorCallback(FileError.TYPE_MISMATCH_ERR);
+      return;
+    }
+
+    var path = type === LocalFileSystem.PERSISTENT ?
+        cordova.file.dataDirectory : cordova.file.cacheDirectory;
+
+    var filesystem = rootsUtils.findFilesystem(path.substr(0, path.length-1));
+
+    if (filesystem.filesystemName !== 'temporary' && filesystem.filesystemName !== 'persistent') {
+      errorCallback && errorCallback(FileError.NOT_FOUND_ERR);
+      return;
+    }
+
+    var root = {
+      'name' : filesystem.name,
+      'fullPath' : filesystem.fullPath,
+      'nativeURL' : filesystem.nativeURL,
+    };
+
+    successCallback({'name' : filesystem.filesystemName, 'root' : root});
+  }
 };
 
 //TODO: remove when added to public cordova repository -> begin
index 1918101f4c56e3de1cabd32bfde196f94101e92e..f6830cc933d38fb5d8d1707963a141fe58cf5d4b 100644 (file)
@@ -19,7 +19,28 @@ cordova.define('cordova-plugin-file.tizen.resolveLocalFileSystemURI', function(r
 // TODO: remove -> end
 
 module.exports = {
-  resolveLocalFileSystemURI: function(successCallback, errorCallback, args) {}
+  resolveLocalFileSystemURI: function(successCallback, errorCallback, args) {
+    var path = args[0];
+
+    function onResolve(file) {
+      var filesystem = rootsUtils.findFilesystem(file.toURI());
+
+      var entry = {
+        'filesystemName' : filesystem.filesystemName,
+        'name' : file.name,
+        'fullPath' : file.fullPath,
+        'isDirectory' : file.isDirectory,
+        'nativeURL' : file.toURI(),
+      };
+      successCallback(entry);
+    }
+
+    function onError(error) {
+      errorCallback && errorCallback(ConvErrorCode(error.code));
+    }
+
+    tizen.filesystem.resolve(path, onResolve, onError, 'r');
+  }
 };
 
 //TODO: remove when added to public cordova repository -> begin