blob: cb6628d5dc5a345984d5b50079e9c7085f818bcd [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
var argscheck = require('cordova/argscheck'),
utils = require('cordova/utils'),
Entry = require('./BB10Entry'),
FileError = require('./FileError'),
DirectoryReader = require('./BB10DirectoryReader'),
fileUtils = require('./BB10Utils'),
DirectoryEntry = function (name, fullPath, fileSystem) {
DirectoryEntry.__super__.constructor.call(this, false, true, name, fullPath, fileSystem);
};
utils.extend(DirectoryEntry, Entry);
function err(sandboxState, errorCallback) {
return function (e) {
cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [sandboxState]);
errorCallback(e);
}
};
DirectoryEntry.prototype.createReader = function () {
return new DirectoryReader(this.fullPath);
};
DirectoryEntry.prototype.getDirectory = function (path, options, successCallback, errorCallback) {
var sandboxState,
currentPath = this.nativeEntry.fullPath;
cordova.exec(function (sandboxed) {
sandboxState = sandboxed;
}, function (e) {
console.log("[ERROR]: Could not retrieve sandbox state ", e);
}, "org.apache.cordova.file", "isSandboxed");
argscheck.checkArgs('sOFF', 'DirectoryEntry.getDirectory', arguments);
if (fileUtils.isOutsideSandbox(path)) {
cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [false]);
window.webkitRequestFileSystem(window.PERSISTENT, this.filesystem._size, function (fs) {
cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [sandboxState]);
fs.root.getDirectory(currentPath + '/' + path, options, function (entry) {
successCallback(fileUtils.createEntry(entry));
}, err(sandboxState, errorCallback));
}, err(sandboxState, errorCallback));
} else {
cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [true]);
window.webkitRequestFileSystem(fileUtils.getFileSystemName(this.filesystem) === "persistent" ? window.PERSISTENT : window.TEMPORARY, this.filesystem._size, function (fs) {
cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [sandboxState]);
fs.root.getDirectory(currentPath + '/' + path, options, function (entry) {
successCallback(fileUtils.createEntry(entry));
}, err(sandboxState, errorCallback));
}, err(sandboxState, errorCallback));
}
};
DirectoryEntry.prototype.removeRecursively = function (successCallback, errorCallback) {
argscheck.checkArgs('FF', 'DirectoryEntry.removeRecursively', arguments);
this.nativeEntry.removeRecursively(successCallback, errorCallback);
};
DirectoryEntry.prototype.getFile = function (path, options, successCallback, errorCallback) {
var sandboxState,
currentPath = this.nativeEntry.fullPath;
cordova.exec(function (sandboxed) {
sandboxState = sandboxed;
}, function (e) {
console.log("[ERROR]: Could not retrieve sandbox state ", e);
}, "org.apache.cordova.file", "isSandboxed");
argscheck.checkArgs('sOFF', 'DirectoryEntry.getFile', arguments);
if (fileUtils.isOutsideSandbox(path)) {
cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [false]);
window.webkitRequestFileSystem(window.PERSISTENT, this.filesystem._size, function (fs) {
cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [sandboxState]);
fs.root.getFile(currentPath + '/' + path, options, function (entry) {
successCallback(fileUtils.createEntry(entry));
}, err(sandboxState, errorCallback));
}, err(sandboxState, errorCallback));
} else {
cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [true]);
window.webkitRequestFileSystem(fileUtils.getFileSystemName(this.filesystem) === "persistent" ? window.PERSISTENT: window.TEMPORARY, this.filesystem._size, function (fs) {
cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [sandboxState]);
fs.root.getFile(currentPath + '/' + path, options, function (entry) {
successCallback(fileUtils.createEntry(entry));
}, err(sandboxState, errorCallback));
}, err(sandboxState, errorCallback));
}
};
module.exports = DirectoryEntry;