Revert "[Bookmark] Moved checking privileges to JS layer."
authorPiotr Kosko <p.kosko@samsung.com>
Wed, 4 Nov 2015 11:00:26 +0000 (12:00 +0100)
committerTomasz Marciniak <t.marciniak@samsung.com>
Fri, 4 Dec 2015 08:08:12 +0000 (09:08 +0100)
This reverts commit 264642f333c79c3fd29d2b17bbb64a65ed59f8b0.
This also applies changes from commit 86c0c989fa534be11b399ae72ca598cc75ff70cb

[Verification] TCT passrate is 100%

Change-Id: I0de29123073873501d23bc078e81026a63add1c2
Signed-off-by: Piotr Kosko <p.kosko@samsung.com>
src/bookmark/bookmark_api.js
src/bookmark/bookmark_instance.cc

index fc3decd..7ccf8a1 100755 (executable)
@@ -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;
index c17e0f3..7f8e4bd 100755 (executable)
@@ -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<double>();
 
   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);