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 "JSRouteServiceManager.h"
25 #include "JSRouteProvider.h"
27 #include "DefaultRouteProvider.h"
28 #include "RouteProvider.h"
32 #define LOG_TAG "TIZEN_ROUTE"
35 using namespace WrtDeviceApis::CommonsJavaScript;
36 using namespace WrtDeviceApis::Commons;
42 JSContextRef JSRouteServiceManager::m_globalContextRef = NULL;
44 JSValueRef JSRouteServiceManager::m_defaultObj = NULL;
46 JSClassRef JSRouteServiceManager::m_jsClassRef = NULL;
48 JSClassDefinition JSRouteServiceManager::m_jsClassInfo = {
49 0, // current (and only) version is 0
50 kJSClassAttributeNone, //attributes
51 "Route", // class name
53 NULL, // static values
54 JSRouteServiceManager::m_function, // static functions
55 JSRouteServiceManager::initialize, // initialize
56 JSRouteServiceManager::finalize, // finalize
60 NULL, // deleteProperty
61 NULL, // getPropertyNames
62 NULL, // callAsFunction
63 NULL, // callAsConstructor
64 JSRouteServiceManager::hasInstance, // hasInstance
68 JSStaticFunction JSRouteServiceManager::m_function[] = {
69 { "getDefaultProvider", JSRouteServiceManager::getDefaultProvider, kJSPropertyAttributeNone },
70 { "getProviders", JSRouteServiceManager::getProviders, kJSPropertyAttributeNone },
74 const JSClassRef JSRouteServiceManager::getClassRef()
78 m_jsClassRef = JSClassCreate(&m_jsClassInfo);
84 const JSClassDefinition* JSRouteServiceManager::getClassInfo()
86 return &m_jsClassInfo;
89 void JSRouteServiceManager::initialize(JSContextRef ctx, JSObjectRef object)
91 if( JSRouteServiceManager::m_globalContextRef == NULL )
93 JSRouteServiceManager::m_globalContextRef = ctx;
97 void JSRouteServiceManager::finalize(JSObjectRef object)
99 if( JSRouteServiceManager::m_defaultObj != NULL ){
100 JSValueUnprotect(JSRouteServiceManager::m_globalContextRef, JSRouteServiceManager::m_defaultObj);
101 JSRouteServiceManager::m_defaultObj = NULL;
105 bool JSRouteServiceManager::hasInstance(JSContextRef context, JSObjectRef constructor, JSValueRef possibleInstance, JSValueRef* exception)
107 return JSValueIsObjectOfClass(context, possibleInstance, getClassRef());
110 JSValueRef JSRouteServiceManager::getDefaultProvider(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
112 AceSecurityStatus status = ROUTE_CHECK_ACCESS(ROUTE_FUNCTION_CATEGORY_BASIC);
114 if( status != AceSecurityStatus::AccessGranted )
115 return Commons::JSTizenExceptionFactory::postException(context,exception, Commons::JSTizenException::PERMISSION_DENIED_ERROR );
118 if( JSRouteServiceManager::m_defaultObj == NULL){
119 RouteProvider *route = new DefaultRouteProvider();
120 JSRouteServiceManager::m_defaultObj = JSObjectMake(context , JSRouteProvider::getClassRef() , route);
121 JSValueProtect(context, JSRouteServiceManager::m_defaultObj);
123 return JSRouteServiceManager::m_defaultObj;
126 JSValueRef JSRouteServiceManager::getProviders(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
128 AceSecurityStatus status = ROUTE_CHECK_ACCESS(ROUTE_FUNCTION_CATEGORY_BASIC);
130 if( status != AceSecurityStatus::AccessGranted )
131 return Commons::JSTizenExceptionFactory::postException(context,exception, Commons::JSTizenException::PERMISSION_DENIED_ERROR );
133 JSValueRef providers[1];
135 providers[0] = getDefaultProvider(context ,object, thisObject, argumentCount, arguments, exception);
136 array = JSObjectMakeArray(context, 1, providers, NULL);