/**
* @brief Adds the callback function to use for complication update.
* @since_tizen 5.0
+ * @privilege http://tizen.org/privilege/datasharing
* @param[in] handle Complication handle
* @param[in] cb The callback function
* @param[in] error_cb The error callback function
* @retval #WATCHFACE_COMPLICATION_ERROR_OUT_OF_MEMORY Out of memory
* @retval #WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #WATCHFACE_COMPLICATION_ERROR_NOT_SUPPORTED Not supported
+ * @retval #WATCHFACE_COMPLICATION_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #WATCHFACE_COMPLICATION_ERROR_IO_ERROR I/O error
* @pre Complication handle should be created by watchface_complication_create().
* @see watchface_complication_updated_cb()
* @par Sample code:
#include "watchface-complication/include/watchface-complication-internal.h"
#include "watchface-complication/complication.h"
#include "watchface-complication/shared-handle.h"
+#include "watchface-common/watchface-util.h"
#ifdef LOG_TAG
#undef LOG_TAG
watchface_complication_error_cb error_cb, void* user_data) {
if (handle == NULL || cb == NULL || error_cb == NULL)
return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
- int ret;
+
+ static cynara_result pcr = COMPLICATION_CYNARA_UNKNOWN;
+ int ret = WATCHFACE_COMPLICATION_ERROR_NONE;
+
+ if (pcr == COMPLICATION_CYNARA_DENIED) {
+ LOGE("Permission denied");
+ return WATCHFACE_COMPLICATION_ERROR_PERMISSION_DENIED;
+ } else if (pcr == COMPLICATION_CYNARA_UNKNOWN) {
+ ret = watchface_complication::util::CheckPrivilege(PRIVILEGE_DATASHARING);
+ if (ret == WATCHFACE_COMPLICATION_ERROR_NONE) {
+ pcr = COMPLICATION_CYNARA_ALLOWED;
+ } else if (ret == WATCHFACE_COMPLICATION_ERROR_PERMISSION_DENIED) {
+ pcr = COMPLICATION_CYNARA_DENIED;
+ return ret;
+ } else {
+ return ret;
+ }
+ }
+
auto sh = static_cast<SharedHandle<WatchComplicationStub>*>(handle);
auto ptr = SharedHandle<WatchComplicationStub>::Share(sh);