From: Piotr Kosko
Date: Wed, 4 Nov 2015 12:59:30 +0000 (+0100)
Subject: Revert "[CallHistory] Privilege checks moved to JS."
X-Git-Tag: submit/tizen_mobile/20151215.080542^2~20^2
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=812df8498bf6ab9c2aec99f4c40d8f500c6fc466;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
Revert "[CallHistory] Privilege checks moved to JS."
This reverts commit 5d7a7ee7edb9e6dfb29dd880bb437282280dc962.
This also applies changes from commit 825a2472318d80cb21fcd058d2ace35d1d227bf1
[Verification] Code compiles.
Change-Id: Iecc69c205fb549267162073276d13b220d3cfbef
Signed-off-by: Piotr Kosko
---
diff --git a/src/callhistory/callhistory_api.js b/src/callhistory/callhistory_api.js
index d12b5ab3..a31abd89 100755
--- a/src/callhistory/callhistory_api.js
+++ b/src/callhistory/callhistory_api.js
@@ -14,10 +14,12 @@
* limitations under the License.
*/
-var validator_ = xwalk.utils.validator;
-var converter_ = xwalk.utils.converter;
+var privUtils_ = xwalk.utils;
+var privilege_ = privUtils_.privilege;
+var validator_ = privUtils_.validator;
+var converter_ = privUtils_.converter;
var types_ = validator_.Types;
-var T_ = xwalk.utils.type;
+var T_ = privUtils_.type;
var native_ = new xwalk.utils.NativeManager(extension);
function _createCallHistoryEntries(e) {
@@ -101,8 +103,6 @@ function CallHistory() {
};
CallHistory.prototype.find = function() {
- xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.CALLHISTORY_READ);
-
var args = validator_.validateArgs(arguments, [
{
name : 'successCallback',
@@ -159,12 +159,13 @@ CallHistory.prototype.find = function() {
callArgs.limit = args.limit;
callArgs.offset = args.offset;
- native_.call('CallHistory_find', callArgs, callback);
+ var result = native_.call('CallHistory_find', callArgs, callback);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
};
CallHistory.prototype.remove = function() {
- xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.CALLHISTORY_WRITE);
-
var args = validator_.validateArgs(arguments, [
{
name : 'entry',
@@ -178,16 +179,13 @@ CallHistory.prototype.remove = function() {
var result = native_.callSync('CallHistory_remove', callArgs);
if (native_.isFailure(result)) {
- throw new WebAPIException(
- WebAPIException.INVALID_VALUES_ERR, 'Watch id not found.');
+ throw native_.getErrorObject(result);
}
return;
};
CallHistory.prototype.removeBatch = function() {
- xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.CALLHISTORY_WRITE);
-
var args = validator_.validateArgs(arguments, [
{
name : 'entries',
@@ -220,12 +218,13 @@ CallHistory.prototype.removeBatch = function() {
var callArgs = {};
callArgs.uid = uid;
- native_.call('CallHistory_removeBatch', callArgs, callback);
+ var result = native_.call('CallHistory_removeBatch', callArgs, callback);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
};
CallHistory.prototype.removeAll = function() {
- xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.CALLHISTORY_WRITE);
-
var args = validator_.validateArgs(arguments, [
{
name : 'successCallback',
@@ -249,12 +248,13 @@ CallHistory.prototype.removeAll = function() {
}
};
- native_.call('CallHistory_removeAll', {}, callback);
+ var result = native_.call('CallHistory_removeAll', {}, callback);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
};
CallHistory.prototype.addChangeListener = function() {
- xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.CALLHISTORY_READ);
-
var args = validator_.validateArgs(arguments, [
{
name : 'eventCallback',
@@ -264,14 +264,19 @@ CallHistory.prototype.addChangeListener = function() {
]);
if (T_.isEmptyObject(callHistoryChangeListener.listeners)) {
- native_.callSync('CallHistory_addChangeListener');
+ var result = native_.callSync('CallHistory_addChangeListener');
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
}
return callHistoryChangeListener.addListener(args.eventCallback);
};
-CallHistory.prototype.removeChangeListener = function() {
- xwalk.utils.checkPrivilegeAccess(xwalk.utils.privilege.CALLHISTORY_READ);
+function removeChangeListener() {
+ if (T_.isEmptyObject(callHistoryChangeListener.listeners)) {
+ privUtils_.checkPrivilegeAccess(privilege_.CALLHISTORY_READ);
+ }
var args = validator_.validateArgs(arguments, [
{
@@ -283,10 +288,17 @@ CallHistory.prototype.removeChangeListener = function() {
callHistoryChangeListener.removeListener(args.watchId);
if (T_.isEmptyObject(callHistoryChangeListener.listeners)) {
- native_.callSync('CallHistory_removeChangeListener');
+ var result = native_.callSync('CallHistory_removeChangeListener');
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
}
};
+CallHistory.prototype.removeChangeListener = function() {
+ removeChangeListener.apply(this, arguments);
+};
+
function RemoteParty(data) {
Object.defineProperties(this, {
remoteParty: {
diff --git a/src/callhistory/callhistory_instance.cc b/src/callhistory/callhistory_instance.cc
index 67743322..7ceec76b 100755
--- a/src/callhistory/callhistory_instance.cc
+++ b/src/callhistory/callhistory_instance.cc
@@ -18,14 +18,22 @@
#include "common/picojson.h"
#include "common/logger.h"
+#include "common/tools.h"
#include "common/platform_exception.h"
namespace extension {
namespace callhistory {
+namespace {
+// The privileges that required in CallHistory API
+const std::string kPrivilegeCallHistoryRead = "http://tizen.org/privilege/callhistory.read";
+const std::string kPrivilegeCallHistoryWrite = "http://tizen.org/privilege/callhistory.write";
+}
+
using namespace common;
CallHistoryInstance::CallHistoryInstance() : history_(*this) {
+ LoggerD("Entered");
using std::placeholders::_1;
using std::placeholders::_2;
@@ -49,12 +57,14 @@ CallHistoryInstance::~CallHistoryInstance() {
void CallHistoryInstance::Find(const picojson::value& args, picojson::object& out) {
LoggerD("Entered");
+ CHECK_PRIVILEGE_ACCESS(kPrivilegeCallHistoryRead, &out);
history_.find(args.get());
ReportSuccess(out);
}
void CallHistoryInstance::Remove(const picojson::value& args, picojson::object& out) {
LoggerD("Entered");
+ CHECK_PRIVILEGE_ACCESS(kPrivilegeCallHistoryWrite, &out);
PlatformResult result = history_.remove(args.get());
if (result.IsSuccess()) {
ReportSuccess(out);
@@ -65,6 +75,7 @@ void CallHistoryInstance::Remove(const picojson::value& args, picojson::object&
void CallHistoryInstance::RemoveBatch(const picojson::value& args, picojson::object& out) {
LoggerD("Entered");
+ CHECK_PRIVILEGE_ACCESS(kPrivilegeCallHistoryWrite, &out);
PlatformResult result = history_.removeBatch(args.get());
if (result.IsSuccess()) {
ReportSuccess(out);
@@ -75,12 +86,14 @@ void CallHistoryInstance::RemoveBatch(const picojson::value& args, picojson::obj
void CallHistoryInstance::RemoveAll(const picojson::value& args, picojson::object& out) {
LoggerD("Entered");
+ CHECK_PRIVILEGE_ACCESS(kPrivilegeCallHistoryWrite, &out);
history_.removeAll(args.get());
ReportSuccess(out);
}
void CallHistoryInstance::AddChangeListener(const picojson::value& args, picojson::object& out) {
LoggerD("Entered");
+ CHECK_PRIVILEGE_ACCESS(kPrivilegeCallHistoryRead, &out);
PlatformResult result = history_.startCallHistoryChangeListener();
if (result.IsSuccess()) {
ReportSuccess(out);
@@ -91,6 +104,7 @@ void CallHistoryInstance::AddChangeListener(const picojson::value& args, picojso
void CallHistoryInstance::RemoveChangeListener(const picojson::value& args, picojson::object& out) {
LoggerD("Entered");
+ CHECK_PRIVILEGE_ACCESS(kPrivilegeCallHistoryRead, &out);
PlatformResult result = history_.stopCallHistoryChangeListener();
if (result.IsSuccess()) {
ReportSuccess(out);