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