wrt-plugins-tizen_0.4.23
[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 #include <stdarg.h>
21
22 using namespace std;
23
24 namespace DeviceAPI {
25 namespace Common {
26
27 CallbackUserData::CallbackUserData(JSContextRef globalCtx): mContext(globalCtx), mImpl(NULL){
28     mImpl = new MultiCallbackUserData(globalCtx);
29 }
30
31 CallbackUserData::~CallbackUserData(){
32     MultiCallbackUserData * impl = static_cast<MultiCallbackUserData*>(mImpl);
33     if( impl )
34         delete impl;
35     mImpl = NULL;
36 }
37
38 void CallbackUserData::setSuccessCallback(JSValueRef onSuccess){
39     MultiCallbackUserData * impl = static_cast<MultiCallbackUserData*>(mImpl);
40     
41     if( onSuccess && JSValueIsObject(mContext, onSuccess) ){
42         JSObjectRef success = JSValueToObject(mContext, onSuccess, NULL);
43         impl->setCallback("success", success);
44     }
45 }
46
47 void CallbackUserData::setErrorCallback(JSValueRef onError){
48     MultiCallbackUserData * impl = static_cast<MultiCallbackUserData*>(mImpl);
49
50     if( onError && JSValueIsObject(mContext, onError) ){
51         JSObjectRef error = JSValueToObject(mContext, onError, NULL);
52         impl->setCallback("error", error);
53     }
54 }
55
56 void CallbackUserData::callSuccessCallback(int count, JSValueRef obj [ ]){
57     MultiCallbackUserData * impl = static_cast<MultiCallbackUserData*>(mImpl);
58     impl->invokeCallback("success", count, obj);
59 }
60
61 void CallbackUserData::callSuccessCallback(JSValueRef obj){
62     JSValueRef args[1] = {obj};
63     callSuccessCallback(1, args);
64 }
65
66 void CallbackUserData::callSuccessCallback(){
67     callSuccessCallback(0, NULL);
68 }
69
70 void CallbackUserData::callErrorCallback(int count, JSValueRef obj [ ]){
71     MultiCallbackUserData * impl = static_cast<MultiCallbackUserData*>(mImpl);
72     impl->invokeCallback("error", count, obj);
73 }
74
75 void CallbackUserData::callErrorCallback(JSValueRef obj){
76     JSValueRef args[1] = {obj};
77     callErrorCallback(1, args);    
78 }
79
80 void CallbackUserData::callErrorCallback(){
81     callErrorCallback(0, NULL);
82 }
83
84 JSContextRef CallbackUserData::getContext(){
85     return mContext;
86 }
87
88 }
89 }