#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"
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)
{
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;
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)
{
jsCodeStr += "\"" + message + "\"";
jsCodeStr += ");";
- WrtDeviceApis::CommonsJavaScript::ScopedJSStringRef jsCode(
- JSStringCreateWithUTF8CString(jsCodeStr.c_str()));
+ JSStringRefWrapper jsCode(jsCodeStr);
JSValueRef errValue = JSEvaluateScript(context, jsCode.get(), NULL, NULL, 0, NULL);