Update change log and spec for wrt-plugins-tizen_0.4.13
[framework/web/wrt-plugins-tizen.git] / src / Common / SecurityExceptions.h
1 //
2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
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.
16 //
17
18 #ifndef TIZENAPIS_COMMONS_JS_SECURITYEXCEPTIONS_H_
19 #define TIZENAPIS_COMMONS_JS_SECURITYEXCEPTIONS_H_
20
21 #include <JavaScriptCore/JavaScript.h>
22 #include "JSTizenExceptionFactory.h"
23
24 namespace DeviceAPI {
25 namespace Common {
26
27 /**
28  * synchronously checks access status and throws JS Security exception if
29  * necessary
30  */
31         #define TIZEN_SYNC_ACCESS_HANDLER(status, context, exception) \
32         do { \
33                 switch (status) { \
34                         case AceSecurityStatus::InternalError: \
35                                 return JSTizenExceptionFactory::postException(context, exception, \
36                                                 JSTizenException::UNKNOWN_ERROR); \
37                                 break; \
38                         case AceSecurityStatus::AccessDenied:                                  \
39                                 return JSTizenExceptionFactory::postException(context, exception, \
40                                         JSTizenException::PERMISSION_DENIED_ERROR); \
41                                 break; \
42                         default: \
43                                 break; \
44                 } \
45         } while (0)
46
47 /**
48  * checks access status and returns an error through JSCallbackManager if
49  * necessary
50  */
51 #define TIZEN_ASYNC_CBM_ACCESS_HANDLER(status, context, cbm) \
52         do { \
53                 switch (status) { \
54                 case AceSecurityStatus::InternalError: \
55                         cbm->callOnError(JSTizenExceptionFactory::makeErrorObject(context, \
56                                         "SECURITY_ERROR", "internal error")); \
57                         return JSValueMakeNull(context); \
58                 case AceSecurityStatus::AccessDenied: \
59                         cbm->callOnError(JSTizenExceptionFactory::makeErrorObject(context, \
60                                                 JSTizenException::PERMISSION_DENIED_ERROR, "PERMISSION_DENIED_ERROR")); \
61                         return JSValueMakeNull(context); \
62                 default: \
63                         break; \
64                 } \
65         } while (0)
66
67 }// Common
68 }// DeviceAPI
69 #endif /*TIZENAPIS_COMMONS_JS_SECURITYEXCEPTIONS_H_ */
70