Update change log and spec for wrt-plugins-tizen_0.4.59
[framework/web/wrt-plugins-tizen.git] / src / Contact / JSContactManager.cpp
old mode 100644 (file)
new mode 100755 (executable)
index 73ceda6..601d06d
@@ -47,6 +47,7 @@
 #include <TimeTracer.h>
 #include <Logger.h>
 #include <Export.h>
+#include "ContactUtility.h"
 
 namespace DeviceAPI {
 namespace Contact {
@@ -425,7 +426,7 @@ JSValueRef JSContactManager::getAddressBook(JSContextRef context,
                case ExceptionCodes::NotFoundException:
                case ExceptionCodes::InvalidArgumentException:
                        LoggerE("Not Found error : " << addressBookId);
-                       oss << "No Contact id '" << addressBookId << "'";
+                       oss << "No addressBookId id '" << addressBookId << "'";
                        return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::NOT_FOUND_ERROR, oss.str());
                        break;
                case ExceptionCodes::PlatformException:
@@ -477,12 +478,6 @@ JSValueRef JSContactManager::get(JSContextRef context,
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_GET);
        TIZEN_SYNC_ACCESS_HANDLER(status, context, exception);
 
-       if (argumentCount < 1) {
-               /* 1st Argument must be string. */
-               LoggerE("1st argument must not be undefined.");
-               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::NOT_FOUND_ERROR, "No Contact id 'undefined'");
-       }
-
        std::string id;
 
        ContactConverterFactory::ConverterType converter = ContactConverterFactory::getConverter(context);
@@ -499,6 +494,9 @@ JSValueRef JSContactManager::get(JSContextRef context,
                return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
 
+       if(!ContactUtility::checkStrIsUInt(id))
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::INVALID_VALUES_ERROR, "");
+
        EventContactManagerGetPtr dplEvent(new EventContactManagerGet());
 
        dplEvent->setId(id);
@@ -615,7 +613,7 @@ JSValueRef JSContactManager::update(JSContextRef context,
                {
                case ExceptionCodes::NotFoundException:
                case ExceptionCodes::InvalidArgumentException:
-                       oss << "No Contact id '" << person->getId() << "'";
+                       oss << "No id '" << person->getId() << "'";
                        return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::NOT_FOUND_ERROR, oss.str());
                        break;
                case ExceptionCodes::PlatformException:
@@ -767,6 +765,8 @@ JSValueRef JSContactManager::remove(JSContextRef context,
        } catch(const NullPointerException& err) {
                return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
+       if(!ContactUtility::checkStrIsUInt(personId))
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::INVALID_VALUES_ERROR, "");
 
        EventContactManagerRemovePtr dplEvent(new EventContactManagerRemove());
 
@@ -789,7 +789,7 @@ JSValueRef JSContactManager::remove(JSContextRef context,
                case ExceptionCodes::NotFoundException:
                case ExceptionCodes::InvalidArgumentException:
                        LoggerE("Not Found error : " << personId);
-                       oss << "No Contact id '" << personId << "'";
+                       oss << "No id '" << personId << "'";
                        return JSWebAPIErrorFactory::postException(context, exception,
                                        JSWebAPIErrorFactory::NOT_FOUND_ERROR, oss.str());
                        break;
@@ -972,16 +972,23 @@ JSValueRef JSContactManager::find(JSContextRef context,
 
        EventContactManagerFindPtr dplEvent(new EventContactManagerFind());
        Try {
-               if (js3rdParamIsObject)
-                       dplEvent->setFilter(filterConverter->toFilter(arguments[2]));
+               if (js3rdParamIsObject){
+                       FilterPtr filter = filterConverter->toFilter(arguments[2]);
+                       if(filter)
+                               dplEvent->setFilter(filter);
+                       else
+                               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "3rd argument must be an Correct 'Filter object' or 'null'");
+               }
        } Catch(Exception) {
                LoggerE("Error on 3rd parameter conversion : " << _rethrown_exception.GetMessage());
                return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "3rd argument must be an 'Filter object' or 'null'");
        }
 
        Try {
-               if (js4thParamIsObject)
-                       dplEvent->setSortMode(filterConverter->toSortMode(arguments[3]));
+               if (js4thParamIsObject){
+                       SortModePtr sortMode = filterConverter->toSortMode(arguments[3]);
+                       dplEvent->setSortMode(sortMode);
+               }
        } Catch(Exception) {
                LoggerE("Error on 4th parameter conversion : " << _rethrown_exception.GetMessage());
                return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "4th argument must be an 'SortMode object' or 'null'");
@@ -1086,7 +1093,7 @@ JSValueRef JSContactManager::addChangeListener(JSContextRef context,
                }
 
                if (onpersonsadded == NULL && onpersonsupdated == NULL && onpersonsdeleted == NULL)
-                       ThrowMsg(ConversionException, "2nd argument must have at least one function");
+                       ThrowMsg(ConversionException, "invalid 2nd argument");
 
        } Catch(ConversionException) {
                LoggerE("Error on conversion : " << _rethrown_exception.GetMessage());
@@ -1180,9 +1187,12 @@ JSValueRef JSContactManager::removeChangeListener(JSContextRef context,
        ContactConverterFactory::ConverterType converter = ContactConverterFactory::getConverter(context);
 
        long watchId = 0;
+       std::string id;
+
        try {
                ArgumentValidator validator(context, argumentCount, arguments);
                watchId = validator.toLong(0, false, 0);
+               id = validator.toString(0, false);
        } catch (const TypeMismatchException& err ) {
                return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const BasePlatformException& err) {
@@ -1192,6 +1202,8 @@ JSValueRef JSContactManager::removeChangeListener(JSContextRef context,
        } catch(const NullPointerException& err) {
                return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
+       if(!ContactUtility::checkStrIsUInt(id))
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::INVALID_VALUES_ERROR, "");
 
        EventContactManagerRemoveChangeListenerPtr dplEvent(new EventContactManagerRemoveChangeListener());