From e828384b654a9c2f0e4e9a9e5a11409884651b8b Mon Sep 17 00:00:00 2001 From: Piotr Kosko Date: Wed, 4 Nov 2015 12:00:26 +0100 Subject: [PATCH] Revert "[Bookmark] Moved checking privileges to JS layer." This reverts commit 264642f333c79c3fd29d2b17bbb64a65ed59f8b0. This also applies changes from commit 86c0c989fa534be11b399ae72ca598cc75ff70cb [Verification] TCT passrate is 100% Change-Id: I0de29123073873501d23bc078e81026a63add1c2 Signed-off-by: Piotr Kosko --- src/bookmark/bookmark_api.js | 57 ++++++++++++++++++++------------------- src/bookmark/bookmark_instance.cc | 39 +++++++++++++-------------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/bookmark/bookmark_api.js b/src/bookmark/bookmark_api.js index fc3decd..7ccf8a1 100755 --- a/src/bookmark/bookmark_api.js +++ b/src/bookmark/bookmark_api.js @@ -15,7 +15,6 @@ */ var validator_ = xwalk.utils.validator; -var privilege_ = xwalk.utils.privilege; var types_ = validator_.Types; var native_ = new xwalk.utils.NativeManager(extension); @@ -36,8 +35,6 @@ var _edit = new EditManager(); function BookmarkManager() {} BookmarkManager.prototype.get = function() { - xwalk.utils.checkPrivilegeAccess(privilege_.BOOKMARK_READ); - var args = validator_.validateArgs(arguments, [ { name: 'parentFolder', @@ -71,8 +68,6 @@ BookmarkManager.prototype.get = function() { }; BookmarkManager.prototype.add = function() { - xwalk.utils.checkPrivilegeAccess(privilege_.BOOKMARK_WRITE); - var args = validator_.validateArgs(arguments, [ { name: 'bookmark', @@ -93,22 +88,18 @@ BookmarkManager.prototype.add = function() { if (args.bookmark.id) { throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR); } - if (!provider.addToFolder(args.bookmark, provider.getRootId())) { - throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR); - } + + provider.addToFolder(args.bookmark, provider.getRootId()); return; } if (!args.parentFolder.id) { throw new WebAPIException(WebAPIException.NOT_FOUND_ERR); } - if (!provider.addToFolder(args.bookmark, args.parentFolder.id)) { - throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR); - } + + provider.addToFolder(args.bookmark, args.parentFolder.id); }; BookmarkManager.prototype.remove = function() { - xwalk.utils.checkPrivilegeAccess(privilege_.BOOKMARK_WRITE); - var args = validator_.validateArgs(arguments, [ { name: 'bookmark', @@ -120,15 +111,22 @@ BookmarkManager.prototype.remove = function() { ]); if (!arguments.length || args.bookmark === null) { - if (native_.isFailure(native_.callSync('Bookmark_removeAll'))) - throw new WebAPIException(WebAPIException.SECURITY_ERR); + var result = native_.callSync('Bookmark_removeAll'); + if (native_.isFailure(result)) { + throw native_.getErrorObject(result); + } + return; } - if (!args.bookmark.id) - throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR); - if (native_.isFailure(native_.callSync('Bookmark_remove', { - id: args.bookmark.id}))) - throw new WebAPIException(WebAPIException.SECURITY_ERR); + + if (!args.bookmark.id) { + throw new WebAPIException(WebAPIException.UNKNOWN_ERR); + } + + var result = native_.isFailure(native_.callSync('Bookmark_remove', {id: args.bookmark.id})); + if (native_.isFailure(result)) { + throw native_.getErrorObject(result); + } _edit.allow(); args.bookmark.id = null; @@ -161,15 +159,16 @@ BookmarkProvider.prototype.addToFolder = function() { type: args.bookmark instanceof tizen.BookmarkFolder ? 1 : 0 } ); + if (native_.isFailure(ret)) { - return false; + throw native_.getErrorObject(ret); } + var ret_id = native_.getResultObject(ret); _edit.allow(); args.bookmark.id = ret_id; args.bookmark.parent = this.getFolder(args.parentId); _edit.disallow(); - return true; }; BookmarkProvider.prototype.getFolder = function() { @@ -192,12 +191,13 @@ BookmarkProvider.prototype.getFolder = function() { }); if (native_.isFailure(ret)) { - throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR); + throw native_.getErrorObject(ret); } var folder = native_.getResultObject(ret); - if (folder === undefined || folder === null) - throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR); + if (folder === undefined || folder === null) { + throw new WebAPIException(WebAPIException.UNKNOWN_ERR); + } var obj = new tizen.BookmarkFolder(folder[0].title); obj.id = folder[0].id; @@ -227,12 +227,13 @@ BookmarkProvider.prototype.getFolderItems = function() { }); if (native_.isFailure(ret)) { - throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR); + throw native_.getErrorObject(ret); } var folder = native_.getResultObject(ret); - if (folder === undefined) - throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR); + if (folder === undefined) { + throw new WebAPIException(WebAPIException.UNKNOWN_ERR); + } var item; var obj; diff --git a/src/bookmark/bookmark_instance.cc b/src/bookmark/bookmark_instance.cc index c17e0f3..7f8e4bd 100755 --- a/src/bookmark/bookmark_instance.cc +++ b/src/bookmark/bookmark_instance.cc @@ -22,6 +22,7 @@ #include "common/platform_exception.h" #include "common/converter.h" #include "common/logger.h" +#include "common/tools.h" using common::ErrorCode; using common::PlatformResult; @@ -35,6 +36,9 @@ namespace { const char kType[] = "type"; const char kParentId[] = "parentId"; const char kUrl[] = "url"; + + const std::string kPrivilegeBookmarkRead = "http://tizen.org/privilege/bookmark.read"; + const std::string kPrivilegeBookmarkWrite = "http://tizen.org/privilege/bookmark.write"; } // namespace BookmarkInstance::BookmarkInstance() { @@ -193,6 +197,7 @@ PlatformResult BookmarkInstance::BookmarkTitleExistsInParent(const char* title, void BookmarkInstance::BookmarkGet( const picojson::value& arg, picojson::object& o) { + CHECK_PRIVILEGE_ACCESS(kPrivilegeBookmarkRead, &o); LoggerD("Enter"); Context ctx = {0}; @@ -203,8 +208,7 @@ void BookmarkInstance::BookmarkGet( ctx.id = arg.get(kId).get(); if (!bookmark_foreach(ctx, info)) { - LoggerE("BookmarkGet error"); - ReportError(o); + LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to get bookmark"), &o); return; } @@ -228,6 +232,7 @@ void BookmarkInstance::BookmarkGet( void BookmarkInstance::BookmarkAdd( const picojson::value& arg, picojson::object& o) { + CHECK_PRIVILEGE_ACCESS(kPrivilegeBookmarkWrite, &o); LoggerD("Enter"); int saved_id =-1; @@ -244,7 +249,7 @@ void BookmarkInstance::BookmarkAdd( LogAndReportError(result, &o); return; } else if (exists) { - LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Bookmark already exists"), &o); + LogAndReportError(PlatformResult(ErrorCode::INVALID_VALUES_ERR, "Bookmark already exists"), &o); return; } } @@ -256,7 +261,7 @@ void BookmarkInstance::BookmarkAdd( LogAndReportError(result, &o); return; } else if (exists) { - LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Bookmark already exists"), &o); + LogAndReportError(PlatformResult(ErrorCode::INVALID_VALUES_ERR, "Bookmark already exists"), &o); return; } } @@ -265,40 +270,35 @@ void BookmarkInstance::BookmarkAdd( ntv_ret = bp_bookmark_adaptor_create(&saved_id); if (ntv_ret < 0) { - LoggerE("bp_bookmark_adaptor_create error: %d (%s)", ntv_ret, get_error_message(ntv_ret)); - ReportError(o); + LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to create adaptor"), &o); return; } ntv_ret = bp_bookmark_adaptor_set_title(saved_id, title.c_str()); if (ntv_ret < 0) { bp_bookmark_adaptor_delete(saved_id); - LoggerE("bp_bookmark_adaptor_set_title error: %d (%s)", ntv_ret, get_error_message(ntv_ret)); - ReportError(o); + LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to set title"), &o); return; } ntv_ret = bp_bookmark_adaptor_set_parent_id(saved_id, parent); if (ntv_ret < 0) { bp_bookmark_adaptor_delete(saved_id); - LoggerE("bp_bookmark_adaptor_set_parent_id error: %d (%s)", ntv_ret, get_error_message(ntv_ret)); - ReportError(o); + LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to set parent id"), &o); return; } ntv_ret = bp_bookmark_adaptor_set_type(saved_id, type); if (ntv_ret < 0) { bp_bookmark_adaptor_delete(saved_id); - LoggerE("bp_bookmark_adaptor_set_type error: %d (%s)", ntv_ret, get_error_message(ntv_ret)); - ReportError(o); + LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to set type"), &o); return; } ntv_ret = bp_bookmark_adaptor_set_url(saved_id, url.c_str()); if (ntv_ret < 0) { bp_bookmark_adaptor_delete(saved_id); - LoggerE("bp_bookmark_adaptor_set_url error: %d (%s)", ntv_ret, get_error_message(ntv_ret)); - ReportError(o); + LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to set url"), &o); return; } ReportSuccess(picojson::value(std::to_string(saved_id)), o); @@ -306,6 +306,7 @@ void BookmarkInstance::BookmarkAdd( void BookmarkInstance::BookmarkRemove( const picojson::value& arg, picojson::object& o) { + CHECK_PRIVILEGE_ACCESS(kPrivilegeBookmarkWrite, &o); LoggerD("Enter"); int id = common::stol( @@ -313,8 +314,7 @@ void BookmarkInstance::BookmarkRemove( int ntv_ret = bp_bookmark_adaptor_delete(id); if (ntv_ret < 0) { - LoggerE("bp_bookmark_adaptor_delete error: %d (%s)", ntv_ret, get_error_message(ntv_ret)); - ReportError(o); + LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to remove bookmark"), &o); return; } ReportSuccess(o); @@ -322,12 +322,12 @@ void BookmarkInstance::BookmarkRemove( void BookmarkInstance::BookmarkRemoveAll( const picojson::value& msg, picojson::object& o) { + CHECK_PRIVILEGE_ACCESS(kPrivilegeBookmarkWrite, &o); LoggerD("Enter"); int ntv_ret = bp_bookmark_adaptor_reset(); if (ntv_ret < 0) { - LoggerE("bp_bookmark_adaptor_reset error: %d (%s)", ntv_ret, get_error_message(ntv_ret)); - ReportError(o); + LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to remove bookmark"), &o); return; } ReportSuccess(o); @@ -340,8 +340,7 @@ void BookmarkInstance::BookmarkGetRootId( int rootId(0); int ntv_ret = bp_bookmark_adaptor_get_root(&rootId); if (ntv_ret < 0) { - LoggerE("bp_bookmark_adaptor_get_root error: %d (%s)", ntv_ret, get_error_message(ntv_ret)); - ReportError(o); + LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to remove bookmark"), &o); return; } ReportSuccess(picojson::value(std::to_string(rootId)), o); -- 2.7.4