Update change log and spec for wrt-plugins-tizen_0.4.13
[framework/web/wrt-plugins-tizen.git] / src / Common / CallbackUserData.cpp
1 //
2 // Tizen Web Device API
3 // Copyright (c) 2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 #include "CallbackUserData.h"
19 #include "MultiCallbackUserData.h"
20
21 #include <dlog.h>
22 #include <stdarg.h>
23
24 #undef LOG_TAG
25 #define LOG_TAG "TIZEN_DEVICEAPI"
26
27 using namespace std;
28
29 namespace DeviceAPI {
30 namespace Common {
31
32 CallbackUserData::CallbackUserData(JSContextRef globalCtx): mContext(globalCtx), mImpl(NULL){
33     mImpl = new MultiCallbackUserData(globalCtx);
34 }
35
36 CallbackUserData::~CallbackUserData(){
37     MultiCallbackUserData * impl = static_cast<MultiCallbackUserData*>(mImpl);
38     if( impl )
39         delete impl;
40     mImpl = NULL;
41 }
42
43 void CallbackUserData::setSuccessCallback(JSValueRef onSuccess){
44     MultiCallbackUserData * impl = static_cast<MultiCallbackUserData*>(mImpl);
45     
46     if( onSuccess && JSValueIsObject(mContext, onSuccess) ){
47         JSObjectRef success = JSValueToObject(mContext, onSuccess, NULL);
48         impl->setCallback("success", success);
49     }
50 }
51
52 void CallbackUserData::setErrorCallback(JSValueRef onError){
53     MultiCallbackUserData * impl = static_cast<MultiCallbackUserData*>(mImpl);
54
55     if( onError && JSValueIsObject(mContext, onError) ){
56         JSObjectRef error = JSValueToObject(mContext, onError, NULL);
57         impl->setCallback("error", error);
58     }
59 }
60
61 void CallbackUserData::callSuccessCallback(int count, JSValueRef obj [ ]){
62     MultiCallbackUserData * impl = static_cast<MultiCallbackUserData*>(mImpl);
63     impl->invokeCallback("success", count, obj);
64 }
65
66 void CallbackUserData::callSuccessCallback(JSValueRef obj){
67     JSValueRef args[1] = {obj};
68     callSuccessCallback(1, args);
69 }
70
71 void CallbackUserData::callSuccessCallback(){
72     callSuccessCallback(0, NULL);
73 }
74
75 void CallbackUserData::callErrorCallback(int count, JSValueRef obj [ ]){
76     MultiCallbackUserData * impl = static_cast<MultiCallbackUserData*>(mImpl);
77     impl->invokeCallback("error", count, obj);
78 }
79
80 void CallbackUserData::callErrorCallback(JSValueRef obj){
81     JSValueRef args[1] = {obj};
82     callErrorCallback(1, args);    
83 }
84
85 void CallbackUserData::callErrorCallback(){
86     callErrorCallback(0, NULL);
87 }
88
89 JSContextRef CallbackUserData::getContext(){
90     return mContext;
91 }
92
93 }
94 }