-static int __alarm_delete_handler(pkgmgrinfo_appinfo_h handle, void* data)
-{
- char* appid;
- GSList* gs_iter = NULL;
- __alarm_info_t* entry = NULL;
- alarm_info_t* alarm_info = NULL;
- gchar* bundle_data = NULL;
- bundle* b = NULL;
- const char* caller_appid = NULL;
- const char* callee_appid = NULL;
- bool isDeleted = false;
-
- pkgmgrinfo_appinfo_get_appid(handle, &appid); // uninstalled app id
- SECURE_LOGD("The uninstalled appid is [%s]\n", appid);
-
- // If the uninstalled app is same to caller or callee app, all alarms registered in the app will be deleted.
- for (gs_iter = alarm_context.alarms; gs_iter != NULL; )
- {
- bool isFound = false;
- entry = gs_iter->data;
-
- bundle_data = g_strdup(g_quark_to_string(entry->quark_bundle));
- b = bundle_decode((bundle_raw*)bundle_data, strlen(bundle_data));
- caller_appid = bundle_get_val(b, "__ALARM_MGR_CALLER_APPID");
- callee_appid = appsvc_get_appid(b);
-
- SECURE_LOGD("Try to remove alarm_id[%d], caller_appid[%s], callee_appid[%s]", entry->alarm_id, caller_appid, callee_appid);
-
- if (strcmp(appid, caller_appid) == 0 || strcmp(appid, callee_appid) == 0)
- {
- if (_remove_from_scheduled_alarm_list(appid, entry->alarm_id))
- {
- isDeleted = true;
- }
-
- alarm_info = &entry->alarm_info;
- if (!(alarm_info->alarm_type & ALARM_TYPE_VOLATILE))
- {
- if(!_delete_alarms(entry->alarm_id))
- {
- SECURE_LOGD("_delete_alarms() is failed. appid[%s], alarm_id[%d]", appid, entry->alarm_id);
- }
- }
- SECURE_LOGD("Removing is done! alarm_id[%d]", entry->alarm_id);
- isFound = true;
- }
-
- gs_iter = g_slist_next(gs_iter);
-
- if (isFound)
- {
- alarm_context.alarms = g_slist_remove(alarm_context.alarms, entry);
- }
- }
-
- if (isDeleted && (g_slist_length(g_scheduled_alarm_list) == 0))
- {
- _alarm_disable_timer(alarm_context);
- _alarm_schedule();
- }
-
- __rtc_set();
-
- return 0;
-}
-
-static void __alarm_delete_for_webapp(char* pkgid)
-{
- GSList* gs_iter = NULL;
- __alarm_info_t* entry = NULL;
- alarm_info_t* alarm_info = NULL;
- gchar* bundle_data = NULL;
- bundle* b = NULL;
- const char* caller_appid = NULL;
- const char* callee_appid = NULL;
- const char* appid = NULL;
- bool isDeleted = false;
-
- SECURE_LOGD("The uninstalled pkgid of webapp is [%s]\n", pkgid);
-
- // If the uninstalled web app(wgt) is same to caller or callee app, all alarms registered in the app will be deleted.
- for (gs_iter = alarm_context.alarms; gs_iter != NULL; )
- {
- entry = gs_iter->data;
-
- bundle_data = g_strdup(g_quark_to_string(entry->quark_bundle));
- b = bundle_decode((bundle_raw*)bundle_data, strlen(bundle_data));
- caller_appid = bundle_get_val(b, "__ALARM_MGR_CALLER_APPID");
- callee_appid = appsvc_get_appid(b);
-
- SECURE_LOGD("Try to remove alarm_id[%d], caller_appid[%s], callee_appid[%s]", entry->alarm_id, caller_appid, callee_appid);
-
- if (strncmp(pkgid, caller_appid, 10) == 0)
- {
- appid = caller_appid;
- }
- else if (strncmp(pkgid, callee_appid, 10) == 0)
- {
- appid = callee_appid;
- }
- else
- {
- gs_iter = g_slist_next(gs_iter);
- continue;
- }
-
- if (_remove_from_scheduled_alarm_list(appid, entry->alarm_id))
- {
- isDeleted = true;
- }
-
- alarm_info = &entry->alarm_info;
- if (!(alarm_info->alarm_type & ALARM_TYPE_VOLATILE))
- {
- if(!_delete_alarms(entry->alarm_id))
- {
- SECURE_LOGD("_delete_alarms() is failed. appid[%s], alarm_id[%d]", appid, entry->alarm_id);
- }
- }
- SECURE_LOGD("Removing is done! alarm_id[%d]", entry->alarm_id);
-
- gs_iter = g_slist_next(gs_iter);
- alarm_context.alarms = g_slist_remove(alarm_context.alarms, entry);
- }
-
- if (isDeleted && (g_slist_length(g_scheduled_alarm_list) == 0))
- {
- _alarm_disable_timer(alarm_context);
- _alarm_schedule();
- }
-
- __rtc_set();
-}
-