2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include <CommonsJavaScript/Converter.h>
18 #include <CommonsJavaScript/Validator.h>
19 #include <CommonsJavaScript/JSUtils.h>
20 #include <CommonsJavaScript/JSDOMExceptionFactory.h>
21 #include <Tizen/Common/JSTizenExceptionFactory.h>
22 #include <Tizen/Common/JSTizenException.h>
23 #include <Tizen/Common/SecurityExceptions.h>
24 #include "JSPOIServiceManager.h"
25 #include "JSPOIProvider.h"
27 #include "DefaultPOIProvider.h"
28 #include "POIProvider.h"
34 #define LOG_TAG "TIZEN_POI"
37 using namespace WrtDeviceApis::CommonsJavaScript;
38 using namespace WrtDeviceApis::Commons;
44 JSContextRef JSPOIServiceManager::m_globalContextRef = NULL;
46 JSValueRef JSPOIServiceManager::m_defaultObj = NULL;
48 JSClassRef JSPOIServiceManager::m_jsClassRef = NULL;
50 JSClassDefinition JSPOIServiceManager::m_jsClassInfo = {
51 0, // current (and only) version is 0
52 kJSClassAttributeNone, //attributes
55 NULL, // static values
56 JSPOIServiceManager::m_function, // static functions
57 JSPOIServiceManager::initialize, // initialize
58 JSPOIServiceManager::finalize,
62 NULL, //deleteProperty
63 NULL, //getPropertyNames
66 JSPOIServiceManager::hasInstance,
71 JSStaticFunction JSPOIServiceManager::m_function[] = {
72 { "getDefaultProvider",JSPOIServiceManager::getDefaultProvider,kJSPropertyAttributeNone },
73 { "getProviders",JSPOIServiceManager::getProviders,kJSPropertyAttributeNone },
78 const JSClassRef JSPOIServiceManager::getClassRef()
81 m_jsClassRef = JSClassCreate(&m_jsClassInfo);
86 const JSClassDefinition* JSPOIServiceManager::getClassInfo()
88 return &m_jsClassInfo;
91 void JSPOIServiceManager::initialize(JSContextRef ctx, JSObjectRef object)
93 if( JSPOIServiceManager::m_globalContextRef == NULL ){
94 JSPOIServiceManager::m_globalContextRef = ctx;
98 void JSPOIServiceManager::finalize(JSObjectRef object)
100 if( JSPOIServiceManager::m_defaultObj != NULL ){
101 JSValueUnprotect(JSPOIServiceManager::m_globalContextRef, JSPOIServiceManager::m_defaultObj);
102 JSPOIServiceManager::m_defaultObj = NULL;
106 bool JSPOIServiceManager::hasInstance(JSContextRef context, JSObjectRef constructor, JSValueRef possibleInstance, JSValueRef* exception) {
107 return JSValueIsObjectOfClass(context, possibleInstance, getClassRef());
111 JSValueRef JSPOIServiceManager::getDefaultProvider(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception){
113 AceSecurityStatus status = POI_CHECK_ACCESS(POI_FUNCTION_CATEGORY_BASIC);
115 if( status != AceSecurityStatus::AccessGranted )
116 return Commons::JSTizenExceptionFactory::postException(context,exception, Commons::JSTizenException::PERMISSION_DENIED_ERROR );
119 if( JSPOIServiceManager::m_defaultObj == NULL){
120 POIProvider *poi = new DefaultPOIProvider();
121 JSPOIServiceManager::m_defaultObj = JSObjectMake(context , JSPOIProvider::getClassRef() , poi);
122 JSValueProtect(context, JSPOIServiceManager::m_defaultObj);
124 return JSPOIServiceManager::m_defaultObj;
127 JSValueRef JSPOIServiceManager::getProviders(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception){
129 AceSecurityStatus status = POI_CHECK_ACCESS(POI_FUNCTION_CATEGORY_BASIC);
131 if( status != AceSecurityStatus::AccessGranted )
132 return Commons::JSTizenExceptionFactory::postException(context,exception, Commons::JSTizenException::PERMISSION_DENIED_ERROR );
134 JSValueRef providers[1];
136 providers[0] = getDefaultProvider(context ,object, thisObject, argumentCount, arguments, exception);
137 array = JSObjectMakeArray( context, 1, providers, NULL);