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.
19 * @file AsyncCallbackManager.h
20 * @author Kisub Song (kisubs.song@samsung.com)
25 #ifndef _TIZEN_COMMONS_ASYNC_CALLBACK_MANAGER_H_
26 #define _TIZEN_COMMONS_ASYNC_CALLBACK_MANAGER_H_
28 #include <dpl/log/log.h>
29 #include <dpl/shared_ptr.h>
30 #include <dpl/type_list.h>
31 #include <CommonsJavaScript/JSCallbackManager.h>
36 class AsyncCallbackManager
39 typedef std::map<WrtDeviceApis::CommonsJavaScript::JSCallbackManagerPtr, JSContextRef> JSCallbackManagerMap;
40 typedef typename JSCallbackManagerMap::iterator JSCallbackManagerMapIter;
41 typedef std::pair<WrtDeviceApis::CommonsJavaScript::JSCallbackManagerPtr,JSContextRef> JSCallbackManagerPair;
43 AsyncCallbackManager()
47 virtual ~AsyncCallbackManager()
52 virtual void registerCallbackManager(WrtDeviceApis::CommonsJavaScript::JSCallbackManagerPtr &cbm, const JSContextRef context)
54 LogDebug("Registering an callback manager on context:" << context);
55 m_map.insert(JSCallbackManagerPair(cbm, context));
58 virtual void unregisterContext(const JSContextRef context)
60 LogDebug("Unregistering all callback managers on context:" << context);
61 for(JSCallbackManagerMapIter i=m_map.begin(); i!=m_map.end(); i++)
63 if(i->second == context)
65 LogDebug("unregister a callback manager");
66 i->first->setOnSuccess(NULL);
67 i->first->setOnError(NULL);
68 // This function does not remove cbm from multimap.
69 // It only prohibit plugin invoke javascript callback.
74 virtual void unregisterCallbackManager(const WrtDeviceApis::CommonsJavaScript::JSCallbackManagerPtr &cbm)
76 LogDebug("Unregistering an callback manager");
77 JSCallbackManagerMapIter i = m_map.find(cbm);
81 LogWarning("nothing to unregister");
90 JSCallbackManagerMap m_map;
96 #endif // _TIZEN_COMMONS_ASYNC_CALLBACK_MANAGER_H_