Update change log and spec for wrt-plugins-tizen_0.4.29
[framework/web/wrt-plugins-tizen.git] / src / Common / JSWebAPIErrorFactory.cpp
index 0685c9c..568e31b 100644 (file)
@@ -18,9 +18,9 @@
 #include "JSWebAPIErrorFactory.h"
 #include <map>
 #include <dpl/assert.h>
-#include <CommonsJavaScript/JSUtils.h>
-#include <CommonsJavaScript/ScopedJSStringRef.h>
-#include "JSWebAPIError2.h"
+#include "JSStringRefWrapper.h"
+#include "JSWebAPIException.h"
+#include "JSWebAPIError.h"
 #include "Logger.h"
 
 #define INDEX_SIZE_ERROR_NAME_STR               "IndexSizeError"
@@ -166,28 +166,30 @@ JSObjectRef JSWebAPIErrorFactory::makeErrorObject(JSContextRef context,
                const std::string& name,
                const std::string& message)
 {
-       return createException(context, name, message);
+       return createErrorObject(context, name, message, false);
 }
 
 JSObjectRef JSWebAPIErrorFactory::makeErrorObject(JSContextRef context,
                const BasePlatformException& error)
 {
-       return createException(context, error.getName(), error.getMessage());
+       return createErrorObject(context, error.getName(), error.getMessage(), false);
 }
 
-JSValueRef JSWebAPIErrorFactory::postException(JSContextRef context,
+JSObjectRef JSWebAPIErrorFactory::postException(JSContextRef context,
                JSValueRef* exception,
                const std::string& name,
                const std::string& message)
 {
        Assert(exception && "Exception object can't be NULL.");
 
-       *exception = createException(context, name, message);
+       JSObjectRef exceptionObj = createErrorObject(context, name, message, true);
 
-       return JSValueMakeUndefined(context);
+       *exception = exceptionObj;
+
+       return exceptionObj;
 }
 
-JSValueRef JSWebAPIErrorFactory::postException(JSContextRef context,
+JSObjectRef JSWebAPIErrorFactory::postException(JSContextRef context,
                JSValueRef* exception,
                const BasePlatformException& error)
 {
@@ -196,11 +198,12 @@ JSValueRef JSWebAPIErrorFactory::postException(JSContextRef context,
        return postException(context, exception, error.getName(), error.getMessage());
 }
 
-JSObjectRef JSWebAPIErrorFactory::createException(JSContextRef context,
+JSObjectRef JSWebAPIErrorFactory::createErrorObject(JSContextRef context,
                const std::string& name,
-               const std::string& message)
+               const std::string& message,
+               const bool isException)
 {
-       JSObjectRef errorObject = NULL;
+       JSObjectRef jsErrorObject = NULL;
 
        DeviceAPIErrorProperties *properties;
 
@@ -210,30 +213,34 @@ JSObjectRef JSWebAPIErrorFactory::createException(JSContextRef context,
        else
                properties = &s_customErrorProperties;
 
+       if(properties->type == ERROR_TYPE_ECMA)
+               return createECMAErrorObject(context, properties->name, message);
+
+       WebAPIError *errorObject = NULL;
        switch(properties->type)
        {
        case ERROR_TYPE_DOM:
        case ERROR_TYPE_TIZEN:
-               errorObject = JSWebAPIError2::createJSObject(context,
-                               WebAPIErrorPtr(new WebAPIError(properties->code, properties->name, message)));
-               break;
-       case ERROR_TYPE_ECMA:
-               errorObject = createECMAException(context, properties->name, message);
+               errorObject = new WebAPIError(properties->code, properties->name, message);
                break;
        case ERROR_TYPE_CUSTOM:
-               errorObject = JSWebAPIError2::createJSObject(context,
-                               WebAPIErrorPtr(new WebAPIError(0, name, message)));
+               errorObject = new WebAPIError(0, name, message);
                break;
+       case ERROR_TYPE_ECMA:   // Cannot happen
        default:
-               errorObject = JSWebAPIError2::createJSObject(context,
-                               WebAPIErrorPtr(new WebAPIError(0, "Error", message)));
+               errorObject = new WebAPIError(0, "Error", message);
                break;
        }
 
-       return errorObject;
+       if(isException)
+               jsErrorObject = JSWebAPIException::createJSObject(context, errorObject);
+       else
+               jsErrorObject = JSWebAPIError::createJSObject(context, errorObject);
+
+       return jsErrorObject;
 }
 
-JSObjectRef JSWebAPIErrorFactory::createECMAException(JSContextRef context,
+JSObjectRef JSWebAPIErrorFactory::createECMAErrorObject(JSContextRef context,
                const std::string& name,
                const std::string& message)
 {
@@ -252,8 +259,7 @@ JSObjectRef JSWebAPIErrorFactory::createECMAException(JSContextRef context,
                jsCodeStr += "\"" + message + "\"";
        jsCodeStr += ");";
 
-       WrtDeviceApis::CommonsJavaScript::ScopedJSStringRef jsCode(
-                       JSStringCreateWithUTF8CString(jsCodeStr.c_str()));
+       JSStringRefWrapper jsCode(jsCodeStr);
 
        JSValueRef errValue = JSEvaluateScript(context, jsCode.get(), NULL, NULL, 0, NULL);