From 3092582afc7f2ce211654b8fa2f807b1cdf42448 Mon Sep 17 00:00:00 2001 From: Pawel Kaczmarczyk Date: Tue, 13 Feb 2018 09:12:38 +0100 Subject: [PATCH] [Media] Error handling caused by lacking storage privileges added ACR: http://suprem.sec.samsung.net/jira/browse/TWDAPI-187 [Verification] Tested in Chromium console tct-media-cordova-tests passrate: 100% Change-Id: I462b78104d6b9be583540192c5e93e2f97f56b5a Signed-off-by: Pawel Kaczmarczyk --- .../plugins/cordova-plugin-media/tizen/Media.js | 31 +++++++++++++++++----- 1 file changed, 25 insertions(+), 6 deletions(-) mode change 100755 => 100644 src/lib/plugins/cordova-plugin-media/tizen/Media.js diff --git a/src/lib/plugins/cordova-plugin-media/tizen/Media.js b/src/lib/plugins/cordova-plugin-media/tizen/Media.js old mode 100755 new mode 100644 index 9dff36b..132826f --- a/src/lib/plugins/cordova-plugin-media/tizen/Media.js +++ b/src/lib/plugins/cordova-plugin-media/tizen/Media.js @@ -351,6 +351,7 @@ cordova.define(plugin_name, function(require, exports, module) { audioObjects[id].isReady = true; if (!audioObjects[id].src) { + var setSrc = function(id, src) { //assigning src sets playbackRate to default value equal to 1 //so if playbackRate was set before first run of play() function @@ -362,11 +363,21 @@ cordova.define(plugin_name, function(require, exports, module) { }; if(RegExp('^((file\:\/\/)|(/)).*').test(src)) { - setSrc(id,src); + try { + tizen.filesystem.resolve(src, function() { + setSrc(id, src); + }, function(error) { + console.log('Filesystem resolve failed'); + Media.onStatus(id, Media.MEDIA_ERROR, new MediaError(MediaError.MEDIA_ERR_ABORTED, error.message)); + }, 'r'); + } catch (error) { + console.log('Error during filesystem resolve'); + Media.onStatus(id, Media.MEDIA_ERROR, new MediaError(MediaError.MEDIA_ERR_ABORTED, error.message)); + } return; } - if(!RegExp('.*!(\/\/).*').test(src)) { + if(RegExp('.*!(\/\/).*').test(src)) { try { tizen.filesystem.resolve('documents', function(dir) { setSrc(id, dir.toURI() + '/' + src); @@ -379,9 +390,9 @@ cordova.define(plugin_name, function(require, exports, module) { Media.onStatus(id, Media.MEDIA_ERROR, new MediaError(MediaError.MEDIA_ERR_ABORTED, error.message)); } return; - } else { - setSrc(id, src); } + setSrc(id, src); + return; } audioObjects[id].play(); @@ -426,8 +437,16 @@ cordova.define(plugin_name, function(require, exports, module) { startRecordingAudio: function(successCallback, errorCallback, args) { var id = args[0]; console.log('media::startRecordingAudio()'); - - recorder.rec(); + try { + tizen.filesystem.resolve('documents', function() { + recorder.rec(); + }, function (error) { + Media.onStatus(id, Media.MEDIA_ERROR, new MediaError(MediaError.MEDIA_ERR_ABORTED, error.message)); + }, 'rw'); + } catch (error) { + Media.onStatus(id, Media.MEDIA_ERROR, new MediaError(MediaError.MEDIA_ERR_ABORTED, error.message)); + return; + } }, stopRecordingAudio: function(successCallback, errorCallback, args) { var id = args[0]; -- 2.7.4