From: Pawel Kaczmarczyk Date: Thu, 18 Jan 2018 12:36:11 +0000 (+0100) Subject: [Content] Synchronously checking access to file X-Git-Tag: submit/tizen/20180427.125243~8^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8edd2a91d3466ebdffe524df9f1019ef4407f7bc;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Content] Synchronously checking access to file ACR: http://suprem.sec.samsung.net/jira/browse/TWDAPI-187 Change-Id: I09c965191cd752835cfe4ac2f6ac4fc547541bdb Signed-off-by: Pawel Kaczmarczyk --- diff --git a/src/content/content_instance.cc b/src/content/content_instance.cc index 6f3673ee..736b8698 100644 --- a/src/content/content_instance.cc +++ b/src/content/content_instance.cc @@ -510,6 +510,11 @@ void ContentInstance::ContentManagerScanfile(const picojson::value& args, picojs CHECK_EXIST(args, "callbackId", out) CHECK_EXIST(args, "contentURI", out) + const std::string& contentURI = args.get("contentURI").get(); + const std::string& real_path = common::FilesystemProvider::Create().GetRealPath(contentURI); + + CHECK_STORAGE_ACCESS(real_path, &out); + double callbackId = args.get("callbackId").get(); auto cbData = std::shared_ptr(new ReplyCallbackData); cbData->callbackId = callbackId; @@ -532,6 +537,11 @@ void ContentInstance::ContentManagerScanDirectory(const picojson::value& args, CHECK_EXIST(args, "contentDirURI", out) CHECK_EXIST(args, "recursive", out) + const std::string& contentURI = args.get("contentDirURI").get(); + const std::string& real_path = common::FilesystemProvider::Create().GetRealPath(contentURI); + + CHECK_STORAGE_ACCESS(real_path, &out); + ReplyCallbackData* cbData = new ReplyCallbackData; cbData->callbackId = args.get("callbackId").get(); cbData->instance = this; @@ -878,6 +888,11 @@ void ContentInstance::ContentManagerAudioGetLyrics(const picojson::value& args, picojson::object& out) { ScopeLogger(); + const std::string& contentURI = args.get("contentURI").get(); + const std::string& real_path = common::FilesystemProvider::Create().GetRealPath(contentURI); + + CHECK_STORAGE_ACCESS(real_path, &out); + picojson::object lyrics; if (ContentManager::getInstance()->isConnected()) { int ret = ContentManager::getInstance()->getLyrics(args, lyrics); @@ -946,6 +961,10 @@ void ContentInstance::PlaylistSetThumbnailUri(const picojson::value& args, picoj CHECK_EXIST(args, "uri", out) int id = static_cast(args.get("id").get()); std::string uri = args.get("uri").get(); + const std::string& real_path = common::FilesystemProvider::Create().GetRealPath(uri); + + CHECK_STORAGE_ACCESS(real_path, &out); + ret = ContentManager::getInstance()->setThumbnailUri(id, uri); if (ret != MEDIA_CONTENT_ERROR_NONE) { LogAndReportError(ContentManager::getInstance()->convertError(ret), &out); diff --git a/src/content/js/datatypes.js b/src/content/js/datatypes.js index adb826d9..f632dedc 100755 --- a/src/content/js/datatypes.js +++ b/src/content/js/datatypes.js @@ -479,6 +479,10 @@ function AudioContent(data) { if (native_.isFailure(result)) { utils_.log('Getting lyrics failed for ' + data.contentURI); + var error_object = native_.getErrorObject(result); + if (WebAPIException.SECURITY_ERR == error_object.code) { + throw error_object; + } return; }