tizen 2.3.1 release
[framework/web/mobile/wrt-plugins-tizen.git] / src / Content / ContentChangeCallback.cpp
1 //
2 // Tizen Web Device API
3 // Copyright (c) 2012 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 <PlatformException.h>
19 #include <JSUtil.h>
20 #include <Logger.h>
21
22 #include "ContentChangeCallback.h"
23 #include "JSContent.h"
24 #include "JSImageContent.h"
25 #include "JSVideoContent.h"
26 #include "JSAudioContent.h"
27 #include <GlobalContextManager.h>
28
29 //using namespace WrtDeviceApis::Commons;
30 //using namespace WrtDeviceApis::CommonsJavaScript;
31
32 namespace DeviceAPI {
33 namespace Content {
34
35 ContentChangeCallback::ContentChangeCallback(JSContextRef globalCtx, JSObjectRef object)
36 {
37     m_callback = new MultiCallbackUserData(globalCtx);
38
39     JSValueRef oncontentadded_ref = JSUtil::getProperty(globalCtx , object, "oncontentadded");
40     if(!JSValueIsUndefined(globalCtx,oncontentadded_ref)) {
41         m_callback->setCallback("oncontentadded", JSUtil::JSValueToObject(globalCtx, oncontentadded_ref));
42     }
43     JSValueRef oncontentupdated_ref = JSUtil::getProperty(globalCtx , object, "oncontentupdated");
44     if(!JSValueIsUndefined(globalCtx,oncontentupdated_ref)) {
45         m_callback->setCallback("oncontentupdated", JSUtil::JSValueToObject(globalCtx, oncontentupdated_ref));
46     }
47     JSValueRef oncontentremoved_ref = JSUtil::getProperty(globalCtx , object, "oncontentremoved");
48     if(!JSValueIsUndefined(globalCtx,oncontentremoved_ref)) {
49         m_callback->setCallback("oncontentremoved", JSUtil::JSValueToObject(globalCtx, oncontentremoved_ref));
50     }
51
52 }
53
54 ContentChangeCallback::~ContentChangeCallback()
55 {
56     if(m_callback != NULL){
57         delete m_callback;
58         m_callback = NULL;
59     }
60 }
61
62 void ContentChangeCallback::oncontentadded(ImageContentPtr content)
63 {
64     JSContextRef context = m_callback->getContext();
65     CHECK_CURRENT_CONTEXT_ALIVE(context);
66
67     JSValueRef jsObject = JSImageContent::CreateJSObject(context,content);
68     m_callback->invokeCallback("oncontentadded", jsObject);
69 }
70
71 void ContentChangeCallback::oncontentadded(VideoContentPtr content)
72 {
73     JSContextRef context = m_callback->getContext();
74     CHECK_CURRENT_CONTEXT_ALIVE(context);
75
76     JSValueRef jsObject = JSVideoContent::CreateJSObject(context,content);
77     m_callback->invokeCallback("oncontentadded", jsObject);
78 }
79
80 void ContentChangeCallback::oncontentadded(AudioContentPtr content)
81 {
82     JSContextRef context = m_callback->getContext();
83     CHECK_CURRENT_CONTEXT_ALIVE(context);
84
85     JSValueRef jsObject = JSAudioContent::CreateJSObject(context,content);
86     m_callback->invokeCallback("oncontentadded", jsObject);
87 }
88
89 void ContentChangeCallback::oncontentadded(ContentPtr content)
90 {
91     JSContextRef context = m_callback->getContext();
92     CHECK_CURRENT_CONTEXT_ALIVE(context);
93
94     JSValueRef jsObject = JSContent::CreateJSObject(context, content);
95     m_callback->invokeCallback("oncontentadded", jsObject);
96 }
97
98 void ContentChangeCallback::oncontentupdated(ImageContentPtr content)
99 {
100     JSContextRef context = m_callback->getContext();
101     CHECK_CURRENT_CONTEXT_ALIVE(context);
102
103     JSValueRef jsObject = JSImageContent::CreateJSObject(context,content);
104     m_callback->invokeCallback("oncontentupdated", jsObject);
105 }
106
107 void ContentChangeCallback::oncontentupdated(VideoContentPtr content)
108 {
109     JSContextRef context = m_callback->getContext();
110     CHECK_CURRENT_CONTEXT_ALIVE(context);
111
112     JSValueRef jsObject = JSVideoContent::CreateJSObject(context,content);
113     m_callback->invokeCallback("oncontentupdated", jsObject);
114 }
115
116 void ContentChangeCallback::oncontentupdated(AudioContentPtr content)
117 {
118     JSContextRef context = m_callback->getContext();
119     CHECK_CURRENT_CONTEXT_ALIVE(context);
120
121     JSValueRef jsObject = JSAudioContent::CreateJSObject(context,content);
122     m_callback->invokeCallback("oncontentupdated", jsObject);
123 }
124
125 void ContentChangeCallback::oncontentupdated(ContentPtr content)
126 {
127     JSContextRef context = m_callback->getContext();
128     CHECK_CURRENT_CONTEXT_ALIVE(context);
129
130     JSValueRef jsObject = JSContent::CreateJSObject(context, content);
131     m_callback->invokeCallback("oncontentupdated", jsObject);
132
133 }
134
135 void ContentChangeCallback::oncontentremoved(std::string id)
136 {
137     JSContextRef context = m_callback->getContext();
138     CHECK_CURRENT_CONTEXT_ALIVE(context);
139
140     JSValueRef jsResult = JSUtil::toJSValueRef(context,id);
141     m_callback->invokeCallback("oncontentremoved", jsResult);
142 }
143
144 JSContextRef ContentChangeCallback::getContext() const
145 {
146     return m_callback->getContext();
147 }
148
149 } // Content
150 } // DeviceAPI