From: Pawel Andruszkiewicz Date: Tue, 10 Nov 2015 15:06:02 +0000 (+0100) Subject: [File] Allow to read 0 bytes. X-Git-Tag: submit/tizen/20151221.111205^2~38 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a1e5edf0f621525a85fcf7b21dd701e02fecd027;p=platform%2Fcore%2Fapi%2Fcordova-plugins.git [File] Allow to read 0 bytes. [Verification] Code compiles, pass rate: 137/140. Change-Id: I2050469e99ee83a94fd39faf6b4919bbb35f6bdf Signed-off-by: Pawel Andruszkiewicz --- diff --git a/src/file/js/FileReader.js b/src/file/js/FileReader.js index 0d6fe9c..1651082 100644 --- a/src/file/js/FileReader.js +++ b/src/file/js/FileReader.js @@ -22,21 +22,29 @@ function read(operation, url, start, end, successCallback, errorCallback, encodi var fail = function(e) { errorCallback && errorCallback(ConvertTizenFileError(e)); } + var win = function(size) { + successCallback && successCallback(size); + } try { tizen.filesystem.resolve(url, function(file) { - try { - file.openStream('r', function(stream) { - try { - stream.position = start; - var r = stream[operation](end - start); - stream.close(); - successCallback && successCallback(r); - } catch (e) { - fail(e); - } - }, fail, encoding); - } catch (e) { - fail(e); + if (0 === end - start) { + // nothing to read, report success + win(); + } else { + try { + file.openStream('r', function(stream) { + try { + stream.position = start; + var r = stream[operation](end - start); + stream.close(); + win(r); + } catch (e) { + fail(e); + } + }, fail, encoding); + } catch (e) { + fail(e); + } } }, fail, 'r'); } catch (e) { @@ -46,16 +54,19 @@ function read(operation, url, start, end, successCallback, errorCallback, encodi module.exports = { readAsText: function(successCallback, errorCallback, args) { - read('read', args[0], args[2], args[3], successCallback, errorCallback, args[1]); + read('read', args[0], args[2], args[3], function(r) { + successCallback && successCallback(r || ''); + }, errorCallback, args[1]); }, readAsDataURL: function(successCallback, errorCallback, args) { read('readBase64', args[0], args[1], args[2], function(r) { - r = 'data:;base64,' + r; // MIME is missing because it's not passed to exec() + r = 'data:;base64,' + (r || ''); // MIME is missing because it's not passed to exec() successCallback && successCallback(r); }, errorCallback); }, readAsBinaryString: function(successCallback, errorCallback, args) { read('readBytes', args[0], args[1], args[2], function(r) { + r = r || []; var str = ''; // this may be not so efficient, but // String.fromCharCode.apply(null, r); @@ -67,7 +78,9 @@ module.exports = { }, errorCallback); }, readAsArrayBuffer: function(successCallback, errorCallback, args) { - read('readBytes', args[0], args[1], args[2], successCallback, errorCallback); + read('readBytes', args[0], args[1], args[2], function(r) { + successCallback && successCallback(r || []); + }, errorCallback); }, };