2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0
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.
18 #include <PlatformException.h>
22 #include "ContentChangeCallback.h"
23 #include "JSContent.h"
24 #include "JSImageContent.h"
25 #include "JSVideoContent.h"
26 #include "JSAudioContent.h"
27 #include <GlobalContextManager.h>
29 //using namespace WrtDeviceApis::Commons;
30 //using namespace WrtDeviceApis::CommonsJavaScript;
35 ContentChangeCallback::ContentChangeCallback(JSContextRef globalCtx, JSObjectRef object)
37 m_callback = new MultiCallbackUserData(globalCtx);
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));
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));
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));
54 ContentChangeCallback::~ContentChangeCallback()
56 if(m_callback != NULL){
62 void ContentChangeCallback::oncontentadded(ImageContentPtr content)
64 JSContextRef context = m_callback->getContext();
65 CHECK_CURRENT_CONTEXT_ALIVE(context);
67 JSValueRef jsObject = JSImageContent::CreateJSObject(context,content);
68 m_callback->invokeCallback("oncontentadded", jsObject);
71 void ContentChangeCallback::oncontentadded(VideoContentPtr content)
73 JSContextRef context = m_callback->getContext();
74 CHECK_CURRENT_CONTEXT_ALIVE(context);
76 JSValueRef jsObject = JSVideoContent::CreateJSObject(context,content);
77 m_callback->invokeCallback("oncontentadded", jsObject);
80 void ContentChangeCallback::oncontentadded(AudioContentPtr content)
82 JSContextRef context = m_callback->getContext();
83 CHECK_CURRENT_CONTEXT_ALIVE(context);
85 JSValueRef jsObject = JSAudioContent::CreateJSObject(context,content);
86 m_callback->invokeCallback("oncontentadded", jsObject);
89 void ContentChangeCallback::oncontentadded(ContentPtr content)
91 JSContextRef context = m_callback->getContext();
92 CHECK_CURRENT_CONTEXT_ALIVE(context);
94 JSValueRef jsObject = JSContent::CreateJSObject(context, content);
95 m_callback->invokeCallback("oncontentadded", jsObject);
98 void ContentChangeCallback::oncontentupdated(ImageContentPtr content)
100 JSContextRef context = m_callback->getContext();
101 CHECK_CURRENT_CONTEXT_ALIVE(context);
103 JSValueRef jsObject = JSImageContent::CreateJSObject(context,content);
104 m_callback->invokeCallback("oncontentupdated", jsObject);
107 void ContentChangeCallback::oncontentupdated(VideoContentPtr content)
109 JSContextRef context = m_callback->getContext();
110 CHECK_CURRENT_CONTEXT_ALIVE(context);
112 JSValueRef jsObject = JSVideoContent::CreateJSObject(context,content);
113 m_callback->invokeCallback("oncontentupdated", jsObject);
116 void ContentChangeCallback::oncontentupdated(AudioContentPtr content)
118 JSContextRef context = m_callback->getContext();
119 CHECK_CURRENT_CONTEXT_ALIVE(context);
121 JSValueRef jsObject = JSAudioContent::CreateJSObject(context,content);
122 m_callback->invokeCallback("oncontentupdated", jsObject);
125 void ContentChangeCallback::oncontentupdated(ContentPtr content)
127 JSContextRef context = m_callback->getContext();
128 CHECK_CURRENT_CONTEXT_ALIVE(context);
130 JSValueRef jsObject = JSContent::CreateJSObject(context, content);
131 m_callback->invokeCallback("oncontentupdated", jsObject);
135 void ContentChangeCallback::oncontentremoved(std::string id)
137 JSContextRef context = m_callback->getContext();
138 CHECK_CURRENT_CONTEXT_ALIVE(context);
140 JSValueRef jsResult = JSUtil::toJSValueRef(context,id);
141 m_callback->invokeCallback("oncontentremoved", jsResult);
144 JSContextRef ContentChangeCallback::getContext() const
146 return m_callback->getContext();