From 67ada1ba73ddb0fe9d69b4ea63219ad7cb7acb84 Mon Sep 17 00:00:00 2001 From: kwkofler Date: Sat, 29 Mar 2014 13:23:51 -0400 Subject: [PATCH 1/3] Issue #136 - Added more verbose errors for situations where Private Browsing prevents DB access --- src/providers/indexeddb.js | 3 ++- src/providers/websql.js | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/providers/indexeddb.js b/src/providers/indexeddb.js index 2658163..4975d60 100644 --- a/src/providers/indexeddb.js +++ b/src/providers/indexeddb.js @@ -9,6 +9,7 @@ define(function(require) { var IDB_RW = require('src/constants').IDB_RW; var IDB_RO = require('src/constants').IDB_RO; + var Errors = require('src/errors'); function IndexedDBContext(db, mode) { var transaction = db.transaction(FILE_STORE_NAME, mode); @@ -112,7 +113,7 @@ define(function(require) { callback(null, firstAccess); }; openRequest.onerror = function onerror(error) { - callback(error); + callback(new Errors.EINVAL('IndexedDB cannot be accessed. If private browsing is enabled, disable it.')); }; }; IndexedDB.prototype.getReadOnlyContext = function() { diff --git a/src/providers/websql.js b/src/providers/websql.js index 4101de1..1b84deb 100644 --- a/src/providers/websql.js +++ b/src/providers/websql.js @@ -5,6 +5,7 @@ define(function(require) { var WSQL_SIZE = require('src/constants').WSQL_SIZE; var WSQL_DESC = require('src/constants').WSQL_DESC; var u8toArray = require('src/shared').u8toArray; + var Errors = require('src/errors'); function WebSQLContext(db, isReadOnly) { var that = this; @@ -116,6 +117,9 @@ define(function(require) { } function onError(transaction, error) { + if (error.code === 5) { + callback(new Errors.EINVAL('WebSQL access not authorized. If private browsing is enabled, disable it.')); + } callback(error); } function onSuccess(transaction, result) { From ea88e78df297457d12bd4a06097f042be2b27ac5 Mon Sep 17 00:00:00 2001 From: Petr Bouianov Date: Sun, 30 Mar 2014 00:13:25 -0400 Subject: [PATCH 2/3] Fixed issues as per pull request conversation --- README.md | 2 +- src/shell/shell.js | 45 ++++++++++++++++++++++----------------------- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index fec7d2d..5aee862 100644 --- a/README.md +++ b/README.md @@ -1323,7 +1323,7 @@ sh.tempDir(function(err, tmp) { }); ``` -#### sh.mkdirp(callback) +#### sh.mkdirp(path, callback) Recursively creates the directory at the provided path. If the directory already exists, no error is returned. All parents must diff --git a/src/shell/shell.js b/src/shell/shell.js index bccd9f8..0913f2d 100644 --- a/src/shell/shell.js +++ b/src/shell/shell.js @@ -365,19 +365,32 @@ define(function(require) { callback = callback || function(){}; if(!path) { - callback(new Errors.EINVAL('missing path argument')); + callback(new Errors.EINVAL("Missing path argument")); return; } - else if (path === '/'){ + else if (path === '/') { callback(); return; } - function _mkdirp(path, callback){ + function _mkdirp(path, callback) { fs.stat(path, function (err, stat) { - //doesn't exist - if (err && err.code === 'ENOENT') { + if(stat) { + if(stat.isDirectory()) { + callback(); + return; + } + else if (stat.isFile()) { + callback(new Errors.ENOTDIR()); + return; + } + } + else if (err && err.code !== 'ENOENT') { + callback(err); + return; + } + else { var parent = Path.dirname(path); - if(parent === '/'){ //parent is root + if(parent === '/') { fs.mkdir(path, function (err) { if (err && err.code != 'EEXIST') { callback(err); @@ -387,10 +400,10 @@ define(function(require) { return; }); } - else { //parent is not root, make parent first + else { _mkdirp(parent, function (err) { if (err) return callback(err); - fs.mkdir(path, function (err) { //then make dir + fs.mkdir(path, function (err) { if (err && err.code != 'EEXIST') { callback(err); return; @@ -401,21 +414,7 @@ define(function(require) { }); } } - //other error - else if (err){ - callback(err); - return; - } - //already exists - else if (stat.type === 'DIRECTORY') { - callback(); - return; - } - //not a directory - else if (stat.type === 'FILE') { - callback(new Errors.ENOTDIR()); - return; - } + }); } From e925ec3556071ace78056e704931712d53005b53 Mon Sep 17 00:00:00 2001 From: kwkofler Date: Sun, 30 Mar 2014 12:48:04 -0400 Subject: [PATCH 3/3] Changed WebSQL error to be more in line with IndexedDB error. --- src/providers/websql.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/providers/websql.js b/src/providers/websql.js index 1b84deb..c765f8a 100644 --- a/src/providers/websql.js +++ b/src/providers/websql.js @@ -118,7 +118,7 @@ define(function(require) { function onError(transaction, error) { if (error.code === 5) { - callback(new Errors.EINVAL('WebSQL access not authorized. If private browsing is enabled, disable it.')); + callback(new Errors.EINVAL('WebSQL cannot be accessed. If private browsing is enabled, disable it.')); } callback(error); }