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/JSCallbackManager.h>
21 #include <CommonsJavaScript/Utils.h>
22 #include <Tizen/Common/SecurityExceptions.h>
23 #include <Tizen/Common/JSTizenExceptionFactory.h>
24 #include <Tizen/Common/JSTizenException.h>
25 #include <API/Notification/NotificationFactory.h>
26 #include "JSNotificationManager.h"
27 #include "NotificationConverter.h"
29 //#include "plugin_config.h"
33 using namespace WrtDeviceApis;
34 using namespace WrtDeviceApis::CommonsJavaScript;
35 using namespace TizenApis::Commons;
40 JSClassDefinition JSNotificationManager::m_classInfo =
43 kJSClassAttributeNone,
44 "NotificationManager",
62 JSStaticFunction JSNotificationManager::m_function[] =
64 { "post", JSNotificationManager::post, kJSPropertyAttributeNone },
65 { "update", JSNotificationManager::update, kJSPropertyAttributeNone },
66 { "get", JSNotificationManager::get, kJSPropertyAttributeNone },
67 { "getAll", JSNotificationManager::getAll, kJSPropertyAttributeNone },
68 { "remove", JSNotificationManager::cancel, kJSPropertyAttributeNone },
69 { "removeAll", JSNotificationManager::cancelAll, kJSPropertyAttributeNone },
74 const JSClassRef JSNotificationManager::getClassRef()
77 m_jsClassRef = JSClassCreate(&m_classInfo);
82 const JSClassDefinition* JSNotificationManager::getClassInfo()
87 JSClassRef JSNotificationManager::m_jsClassRef = JSClassCreate(JSNotificationManager::getClassInfo());
89 void JSNotificationManager::initialize(JSContextRef context, JSObjectRef object)
91 LogDebug("JSNotificationManager::initialize ");
93 JSNotificationManagerPriv* priv = static_cast<JSNotificationManagerPriv*>(JSObjectGetPrivate(object));
97 LogDebug("JSNotificationManager::initialize create");
99 TizenApis::Api::Notification::INotificationManagerPtr notificationManager(
100 TizenApis::Api::Notification::NotificationFactory::getInstance().getNotificationManager());
102 priv = new JSNotificationManagerPriv( context, notificationManager);
104 if(!JSObjectSetPrivate(object, static_cast<void*>(priv)))
106 LogError("Object can't store private data.");
112 LogDebug("JSNotificationManager::already exist ");
116 void JSNotificationManager::finalize(JSObjectRef object)
118 JSNotificationManagerPriv* priv = static_cast<JSNotificationManagerPriv*>(JSObjectGetPrivate(object));
120 LogDebug("JSNotificationManager::Finalrize");
124 JSObjectSetPrivate(object, NULL);
129 bool JSNotificationManager::hasInstance(JSContextRef context, JSObjectRef constructor,
130 JSValueRef possibleInstance, JSValueRef* exception)
132 return JSValueIsObjectOfClass(context, possibleInstance, getClassRef());
136 JSValueRef JSNotificationManager::cancel(JSContextRef context, JSObjectRef object,
137 JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[],
138 JSValueRef* exception)
140 JSNotificationManagerPriv* priv = static_cast<JSNotificationManagerPriv*>(JSObjectGetPrivate(thisObject));
141 JSValueRef reserveArguments;
146 if (argumentCount == 1)
147 reserveArguments = arguments[0];
149 reserveArguments = JSValueMakeUndefined(context);
153 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Private object is null");
155 NotificationConverter converter(priv->getContext());
156 std::string id = converter.toString(reserveArguments);
158 TizenApis::Api::Notification::INotificationManagerPtr notificationManager(priv->getObject());
159 notificationManager->cancel(id);
161 Catch (WrtDeviceApis::Commons::ConversionException)
163 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
164 return JSTizenExceptionFactory::postException(context, exception,
165 JSTizenException::TYPE_MISMATCH_ERROR, _rethrown_exception.GetMessage());
168 Catch (WrtDeviceApis::Commons::InvalidArgumentException)
170 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
171 return JSTizenExceptionFactory::postException(context, exception,
172 JSTizenException::INVALID_VALUES_ERROR, _rethrown_exception.GetMessage());
174 Catch(WrtDeviceApis::Commons::UnsupportedException)
176 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
177 return JSTizenExceptionFactory::postException(context, exception,
178 JSTizenException::NOT_SUPPORTED_ERROR, _rethrown_exception.GetMessage());
180 Catch(WrtDeviceApis::Commons::NotFoundException)
182 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
183 return JSTizenExceptionFactory::postException(context, exception,
184 JSTizenException::NOT_FOUND_ERROR, _rethrown_exception.GetMessage());
186 Catch (WrtDeviceApis::Commons::SecurityException)
188 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
189 return JSTizenExceptionFactory::postException(context, exception,
190 JSTizenException::PERMISSION_DENIED_ERROR, _rethrown_exception.GetMessage());
192 Catch (WrtDeviceApis::Commons::Exception)
194 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
195 return JSTizenExceptionFactory::postException(context, exception,
196 JSTizenException::UNKNOWN_ERROR, _rethrown_exception.GetMessage());
199 return JSValueMakeUndefined(context);
203 JSValueRef JSNotificationManager::cancelAll(JSContextRef context, JSObjectRef object,
204 JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[],
205 JSValueRef* exception)
207 JSNotificationManagerPriv* priv = static_cast<JSNotificationManagerPriv*>(JSObjectGetPrivate(thisObject));
213 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Private object is null");
215 TizenApis::Api::Notification::INotificationManagerPtr notificationManager(priv->getObject());
216 notificationManager->cancelAll();
219 Catch (WrtDeviceApis::Commons::ConversionException)
221 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
222 return JSTizenExceptionFactory::postException(context, exception,
223 JSTizenException::TYPE_MISMATCH_ERROR, _rethrown_exception.GetMessage());
226 Catch (WrtDeviceApis::Commons::InvalidArgumentException)
228 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
229 return JSTizenExceptionFactory::postException(context, exception,
230 JSTizenException::INVALID_VALUES_ERROR, _rethrown_exception.GetMessage());
232 Catch(WrtDeviceApis::Commons::UnsupportedException)
234 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
235 return JSTizenExceptionFactory::postException(context, exception,
236 JSTizenException::NOT_SUPPORTED_ERROR, _rethrown_exception.GetMessage());
238 Catch (WrtDeviceApis::Commons::SecurityException)
240 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
241 return JSTizenExceptionFactory::postException(context, exception,
242 JSTizenException::PERMISSION_DENIED_ERROR, _rethrown_exception.GetMessage());
244 Catch (WrtDeviceApis::Commons::Exception)
246 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
247 return JSTizenExceptionFactory::postException(context, exception,
248 JSTizenException::UNKNOWN_ERROR, _rethrown_exception.GetMessage());
250 return JSValueMakeUndefined(context);
255 JSValueRef JSNotificationManager::update(JSContextRef context, JSObjectRef object,
256 JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[],
257 JSValueRef* exception)
259 JSNotificationManagerPriv* priv = static_cast<JSNotificationManagerPriv*>(JSObjectGetPrivate(thisObject));
260 JSValueRef reserveArguments;
266 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Private object is null");
269 if (argumentCount == 1)
270 reserveArguments = arguments[0];
272 reserveArguments = JSValueMakeUndefined(context);
274 NotificationConverter converter(priv->getContext());
275 TizenApis::Api::Notification::INotificationManagerPtr notificationManager(priv->getObject());
276 TizenApis::Api::Notification::INotificationPtr notification = converter.toINotificationPtr(reserveArguments);
277 notificationManager->update(notification);
279 Catch (WrtDeviceApis::Commons::ConversionException)
281 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
282 return JSTizenExceptionFactory::postException(context, exception,
283 JSTizenException::TYPE_MISMATCH_ERROR, _rethrown_exception.GetMessage());
286 Catch (WrtDeviceApis::Commons::InvalidArgumentException)
288 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
289 return JSTizenExceptionFactory::postException(context, exception,
290 JSTizenException::INVALID_VALUES_ERROR, _rethrown_exception.GetMessage());
292 Catch(WrtDeviceApis::Commons::UnsupportedException)
294 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
295 return JSTizenExceptionFactory::postException(context, exception,
296 JSTizenException::NOT_SUPPORTED_ERROR, _rethrown_exception.GetMessage());
298 Catch (WrtDeviceApis::Commons::SecurityException)
300 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
301 return JSTizenExceptionFactory::postException(context, exception,
302 JSTizenException::PERMISSION_DENIED_ERROR, _rethrown_exception.GetMessage());
304 Catch (WrtDeviceApis::Commons::Exception)
306 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
307 return JSTizenExceptionFactory::postException(context, exception,
308 JSTizenException::UNKNOWN_ERROR, _rethrown_exception.GetMessage());
310 return JSValueMakeUndefined(context);
313 JSValueRef JSNotificationManager::get(JSContextRef context, JSObjectRef object,
314 JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[],
315 JSValueRef* exception)
317 JSNotificationManagerPriv* priv = static_cast<JSNotificationManagerPriv*>(JSObjectGetPrivate(thisObject));
318 JSValueRef reserveArguments;
322 if (argumentCount == 1)
323 reserveArguments = arguments[0];
325 reserveArguments = JSValueMakeUndefined(context);
329 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Private object is null");
332 NotificationConverter converter(priv->getContext());
333 std::string id = converter.toString(reserveArguments);
335 TizenApis::Api::Notification::INotificationManagerPtr notificationManager(priv->getObject());
336 TizenApis::Api::Notification::INotificationPtr notification = notificationManager->get(id);
337 return converter.toJSValueRef(notification);
339 Catch (WrtDeviceApis::Commons::ConversionException)
341 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
342 return JSTizenExceptionFactory::postException(context, exception,
343 JSTizenException::TYPE_MISMATCH_ERROR, _rethrown_exception.GetMessage());
346 Catch (WrtDeviceApis::Commons::InvalidArgumentException)
348 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
349 return JSTizenExceptionFactory::postException(context, exception,
350 JSTizenException::INVALID_VALUES_ERROR, _rethrown_exception.GetMessage());
352 Catch(WrtDeviceApis::Commons::NotFoundException)
354 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
355 return JSTizenExceptionFactory::postException(context, exception,
356 JSTizenException::NOT_FOUND_ERROR, _rethrown_exception.GetMessage());
359 Catch(WrtDeviceApis::Commons::UnsupportedException)
361 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
362 return JSTizenExceptionFactory::postException(context, exception,
363 JSTizenException::NOT_SUPPORTED_ERROR, _rethrown_exception.GetMessage());
365 Catch (WrtDeviceApis::Commons::SecurityException)
367 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
368 return JSTizenExceptionFactory::postException(context, exception,
369 JSTizenException::PERMISSION_DENIED_ERROR, _rethrown_exception.GetMessage());
371 Catch (WrtDeviceApis::Commons::Exception)
373 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
374 return JSTizenExceptionFactory::postException(context, exception,
375 JSTizenException::UNKNOWN_ERROR, _rethrown_exception.GetMessage());
377 return JSValueMakeUndefined(context);
381 JSValueRef JSNotificationManager::post(JSContextRef context, JSObjectRef object,
382 JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[],
383 JSValueRef* exception)
385 JSNotificationManagerPriv* priv = static_cast<JSNotificationManagerPriv*>(JSObjectGetPrivate(thisObject));
386 JSValueRef reserveArguments;
393 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Private object is null");
396 if (argumentCount == 1)
397 reserveArguments = arguments[0];
399 reserveArguments = JSValueMakeUndefined(context);
401 NotificationConverter converter(priv->getContext());
402 TizenApis::Api::Notification::INotificationManagerPtr notificationManager(priv->getObject());
403 TizenApis::Api::Notification::INotificationPtr notification = converter.toINotificationPtr(reserveArguments);
404 notificationManager->post(notification);
406 Catch (WrtDeviceApis::Commons::ConversionException)
408 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
409 return JSTizenExceptionFactory::postException(context, exception,
410 JSTizenException::TYPE_MISMATCH_ERROR, _rethrown_exception.GetMessage());
413 Catch (WrtDeviceApis::Commons::InvalidArgumentException)
415 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
416 return JSTizenExceptionFactory::postException(context, exception,
417 JSTizenException::INVALID_VALUES_ERROR, _rethrown_exception.GetMessage());
419 Catch(WrtDeviceApis::Commons::UnsupportedException)
421 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
422 return JSTizenExceptionFactory::postException(context, exception,
423 JSTizenException::NOT_SUPPORTED_ERROR, _rethrown_exception.GetMessage());
425 Catch (WrtDeviceApis::Commons::SecurityException)
427 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
428 return JSTizenExceptionFactory::postException(context, exception,
429 JSTizenException::PERMISSION_DENIED_ERROR, _rethrown_exception.GetMessage());
431 Catch (WrtDeviceApis::Commons::Exception)
433 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
434 return JSTizenExceptionFactory::postException(context, exception,
435 JSTizenException::UNKNOWN_ERROR, _rethrown_exception.GetMessage());
437 return JSValueMakeUndefined(context);
441 JSValueRef JSNotificationManager::getAll(JSContextRef context, JSObjectRef object,
442 JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[],
443 JSValueRef* exception)
445 JSNotificationManagerPriv* priv = static_cast<JSNotificationManagerPriv*>(JSObjectGetPrivate(thisObject));
451 ThrowMsg(WrtDeviceApis::Commons::ConversionException, "Private object is null");
454 NotificationConverter converter(priv->getContext());
455 TizenApis::Api::Notification::INotificationManagerPtr notificationManager(priv->getObject());
456 std::vector<TizenApis::Api::Notification::INotificationPtr> notificationArray = notificationManager->getAll();
457 return converter.toJSValueRef(notificationArray);
459 Catch (WrtDeviceApis::Commons::ConversionException)
461 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
462 return JSTizenExceptionFactory::postException(context, exception,
463 JSTizenException::TYPE_MISMATCH_ERROR, _rethrown_exception.GetMessage());
466 Catch (WrtDeviceApis::Commons::InvalidArgumentException)
468 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
469 return JSTizenExceptionFactory::postException(context, exception,
470 JSTizenException::INVALID_VALUES_ERROR, _rethrown_exception.GetMessage());
472 Catch(WrtDeviceApis::Commons::UnsupportedException)
474 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
475 return JSTizenExceptionFactory::postException(context, exception,
476 JSTizenException::NOT_SUPPORTED_ERROR, _rethrown_exception.GetMessage());
478 Catch (WrtDeviceApis::Commons::SecurityException)
480 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
481 return JSTizenExceptionFactory::postException(context, exception,
482 JSTizenException::PERMISSION_DENIED_ERROR, _rethrown_exception.GetMessage());
484 Catch (WrtDeviceApis::Commons::Exception)
486 LogWarning("Exception: "<<_rethrown_exception.GetMessage());
487 return JSTizenExceptionFactory::postException(context, exception,
488 JSTizenException::UNKNOWN_ERROR, _rethrown_exception.GetMessage());
490 return JSValueMakeUndefined(context);