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;
46 JSContextRef JSPOIServiceManager::m_globalContextRef = NULL;
48 JSValueRef JSPOIServiceManager::m_defaultObj = NULL;
50 JSClassRef JSPOIServiceManager::m_jsClassRef = NULL;
52 JSClassDefinition JSPOIServiceManager::m_jsClassInfo = {
53 0, // current (and only) version is 0
54 kJSClassAttributeNone, //attributes
57 NULL, // static values
58 JSPOIServiceManager::m_function, // static functions
59 JSPOIServiceManager::initialize, // initialize
60 JSPOIServiceManager::finalize,
64 NULL, //deleteProperty
65 NULL, //getPropertyNames
68 JSPOIServiceManager::hasInstance,
73 JSStaticFunction JSPOIServiceManager::m_function[] = {
74 { "getDefaultProvider",JSPOIServiceManager::getDefaultProvider,kJSPropertyAttributeNone },
75 { "getProviders",JSPOIServiceManager::getProviders,kJSPropertyAttributeNone },
80 const JSClassRef JSPOIServiceManager::getClassRef()
83 m_jsClassRef = JSClassCreate(&m_jsClassInfo);
88 const JSClassDefinition* JSPOIServiceManager::getClassInfo()
90 return &m_jsClassInfo;
93 void JSPOIServiceManager::initialize(JSContextRef ctx, JSObjectRef object)
96 LOGD("initialize !!!");
98 if( JSPOIServiceManager::m_globalContextRef == NULL ){
99 JSPOIServiceManager::m_globalContextRef = ctx;
103 void JSPOIServiceManager::finalize(JSObjectRef object)
105 if( JSPOIServiceManager::m_defaultObj != NULL ){
106 JSValueUnprotect(JSPOIServiceManager::m_globalContextRef, JSPOIServiceManager::m_defaultObj);
107 JSPOIServiceManager::m_defaultObj = NULL;
111 bool JSPOIServiceManager::hasInstance(JSContextRef context, JSObjectRef constructor, JSValueRef possibleInstance, JSValueRef* exception) {
112 return JSValueIsObjectOfClass(context, possibleInstance, getClassRef());
116 JSValueRef JSPOIServiceManager::getDefaultProvider(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception){
118 AceSecurityStatus status = POI_CHECK_ACCESS(POI_FUNCTION_CATEGORY_BASIC);
120 if( status != AceSecurityStatus::AccessGranted )
121 return Commons::JSTizenExceptionFactory::postException(context,exception, Commons::JSTizenException::PERMISSION_DENIED_ERROR );
124 if( JSPOIServiceManager::m_defaultObj == NULL){
125 POIProvider *poi = new DefaultPOIProvider();
126 JSPOIServiceManager::m_defaultObj = JSObjectMake(context , JSPOIProvider::getClassRef() , poi);
127 JSValueProtect(context, JSPOIServiceManager::m_defaultObj);
129 return JSPOIServiceManager::m_defaultObj;
132 JSValueRef JSPOIServiceManager::getProviders(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception){
134 AceSecurityStatus status = POI_CHECK_ACCESS(POI_FUNCTION_CATEGORY_BASIC);
136 if( status != AceSecurityStatus::AccessGranted )
137 return Commons::JSTizenExceptionFactory::postException(context,exception, Commons::JSTizenException::PERMISSION_DENIED_ERROR );
139 JSValueRef providers[1];
141 providers[0] = getDefaultProvider(context ,object, thisObject, argumentCount, arguments, exception);
142 array = JSObjectMakeArray( context, 1, providers, NULL);