From 855a0e8ddc273b58066530a1b55a946021dfc56e Mon Sep 17 00:00:00 2001 From: PliablePixels Date: Wed, 24 Jun 2015 18:47:42 -0400 Subject: Cleaned up code, commented, preparing for HTTPS via CordovaHTTP --- .../www/blackberry10/DirectoryEntry.js | 112 +++++++++++++++++++ .../www/blackberry10/DirectoryReader.js | 54 ++++++++++ .../www/blackberry10/Entry.js | 120 +++++++++++++++++++++ .../www/blackberry10/File.js | 56 ++++++++++ .../www/blackberry10/FileEntry.js | 49 +++++++++ .../www/blackberry10/FileReader.js | 90 ++++++++++++++++ .../www/blackberry10/FileSystem.js | 27 +++++ .../www/blackberry10/FileWriter.js | 120 +++++++++++++++++++++ .../www/blackberry10/fileUtils.js | 52 +++++++++ .../www/blackberry10/requestFileSystem.js | 44 ++++++++ .../www/blackberry10/resolveLocalFileSystemURI.js | 55 ++++++++++ 11 files changed, 779 insertions(+) create mode 100644 plugins/org.apache.cordova.file/www/blackberry10/DirectoryEntry.js create mode 100644 plugins/org.apache.cordova.file/www/blackberry10/DirectoryReader.js create mode 100644 plugins/org.apache.cordova.file/www/blackberry10/Entry.js create mode 100644 plugins/org.apache.cordova.file/www/blackberry10/File.js create mode 100644 plugins/org.apache.cordova.file/www/blackberry10/FileEntry.js create mode 100644 plugins/org.apache.cordova.file/www/blackberry10/FileReader.js create mode 100644 plugins/org.apache.cordova.file/www/blackberry10/FileSystem.js create mode 100644 plugins/org.apache.cordova.file/www/blackberry10/FileWriter.js create mode 100644 plugins/org.apache.cordova.file/www/blackberry10/fileUtils.js create mode 100644 plugins/org.apache.cordova.file/www/blackberry10/requestFileSystem.js create mode 100644 plugins/org.apache.cordova.file/www/blackberry10/resolveLocalFileSystemURI.js (limited to 'plugins/org.apache.cordova.file/www/blackberry10') diff --git a/plugins/org.apache.cordova.file/www/blackberry10/DirectoryEntry.js b/plugins/org.apache.cordova.file/www/blackberry10/DirectoryEntry.js new file mode 100644 index 00000000..cb6628d5 --- /dev/null +++ b/plugins/org.apache.cordova.file/www/blackberry10/DirectoryEntry.js @@ -0,0 +1,112 @@ +/* + * + * 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; diff --git a/plugins/org.apache.cordova.file/www/blackberry10/DirectoryReader.js b/plugins/org.apache.cordova.file/www/blackberry10/DirectoryReader.js new file mode 100644 index 00000000..6aa3d730 --- /dev/null +++ b/plugins/org.apache.cordova.file/www/blackberry10/DirectoryReader.js @@ -0,0 +1,54 @@ +/* + * + * 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 FileError = require('./FileError'), + fileUtils = require('./BB10Utils'); + +function DirectoryReader(path) { + this.path = path; + this.nativeReader = null; +} + +DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) { + var self = this, + win = typeof successCallback !== 'function' ? null : function(result) { + var retVal = []; + for (var i=0; i= 1000000000000000) { + fail(new FileError(FileError.QUOTA_EXCEEDED_ERR)); + } else if (type !== 1 && type !== 0) { + fail(new FileError(FileError.SYNTAX_ERR)); + } else { + window.webkitRequestFileSystem(type, size, function (fs) { + cordovaFsRoot = fileUtils.createEntry(fs.root); + cordovaFs = new FileSystem(fileUtils.getFileSystemName(fs), cordovaFsRoot); + cordovaFsRoot.filesystem = cordovaFs; + cordovaFs._size = size; + success(cordovaFs); + }, function (error) { + fail(new FileError(error)); + }); + } +}; diff --git a/plugins/org.apache.cordova.file/www/blackberry10/resolveLocalFileSystemURI.js b/plugins/org.apache.cordova.file/www/blackberry10/resolveLocalFileSystemURI.js new file mode 100644 index 00000000..4d5af613 --- /dev/null +++ b/plugins/org.apache.cordova.file/www/blackberry10/resolveLocalFileSystemURI.js @@ -0,0 +1,55 @@ +/* + * + * 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 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"); + + 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) { + fail(e); + }); + }); + cordova.exec(null, null, "org.apache.cordova.file", "setSandbox", [sandboxState]); +}; -- cgit v1.2.3