From 310467897f3deb67e97bd4657c30ec30c965e262 Mon Sep 17 00:00:00 2001 From: MyoungJune Park Date: Mon, 17 Oct 2016 12:56:54 +0900 Subject: [PATCH] [ACR-876] Support Ultra Data Save Status Get/Change CB API Change-Id: I5c5b9ad62caa3484d3f784f628aa8c54fc2ac514 Signed-off-by: jinwang.an --- include/system_settings.h | 18 +++++- include/system_settings_private.h | 54 ++++++++++++++++++ packaging/capi-system-system-settings.spec | 7 +-- src/system_setting_platform.c | 91 ++++++++++++++++++++++++++++++ src/system_settings.c | 20 +++++++ 5 files changed, 183 insertions(+), 7 deletions(-) diff --git a/include/system_settings.h b/include/system_settings.h index 634b34e..1cd3183 100644 --- a/include/system_settings.h +++ b/include/system_settings.h @@ -1,5 +1,4 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved +/* * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. @@ -66,7 +65,7 @@ typedef enum { SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, /**< (bool) Indicates whether the motion service is activated */ SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, /**< (string) The file path of the current email alert ringtone */ SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, /**< (bool) Indicates whether the USB debugging is enabled (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ - SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, /**< bool) Indicates whether the 3G data network is enabled (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ + SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, /**< (bool) Indicates whether the 3G data network is enabled (Since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif) */ SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP = SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED+2, /**< (string) Indicates lockscreen app pkg name */ SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE,/**< (string) The current system default font type (only support Get) */ SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, /**< (string) Indicates the current country setting in the _ syntax. The country setting is in the ISO 639-2 format, and the region setting is in the ISO 3166-1 alpha-2 format */ @@ -87,6 +86,8 @@ typedef enum { SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD, /**< (int) Indicates the time period for notification repetitions. */ SYSTEM_SETTINGS_KEY_LOCK_STATE, /**< (int) Indicates the current lock state */ SYSTEM_SETTINGS_KEY_ADS_ID, /**< (string) Indicates Ads ID for each device (Since 3.0) */ + SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE, /**< (int) Indicates Ultra Data Save status, one of #system_settings_uds_state_e values (Since 4.0) */ + SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST, /**< (string) Indicates Ultra Data Save Package List (Since 4.0), the list is a string containing whitelisted package names separated with semicolons (;) */ SYSTEM_SETTINGS_KEY_MAX, } system_settings_key_e; @@ -113,6 +114,17 @@ typedef enum { SYSTEM_SETTINGS_FONT_SIZE_GIANT, /**< A giant size */ } system_settings_font_size_e; +/** + * @brief Enumeration for Ultra Data Save + * @since_tizen 4.0 + */ +typedef enum { + SYSTEM_SETTINGS_UDS_OFF = 0, /**< OFF */ + SYSTEM_SETTINGS_UDS_ON, /**< ON */ + SYSTEM_SETTINGS_UDS_ON_WHITELISTED, /**< UDS on and the app is whitelisted */ +} system_settings_uds_state_e; + + /** * @brief Called when the system settings changes. diff --git a/include/system_settings_private.h b/include/system_settings_private.h index e7765e3..968fd2b 100644 --- a/include/system_settings_private.h +++ b/include/system_settings_private.h @@ -1341,6 +1341,60 @@ int system_setting_set_changed_callback_ads_id(system_settings_key_e key, system */ int system_setting_unset_changed_callback_ads_id(system_settings_key_e key); +/** + * @internal + * @brief get current UDS status + * @since_tizen 3.0 + * @return 0 on success, otherwise a negative error value + * @retval #SYSTEM_SETTINGS_ERROR_NONE Successful + * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error + * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + */ +int system_setting_get_uds_state(system_settings_key_e key, system_setting_data_type_e data_type, void **value); + +/** + * @internal + * @since_tizen 3.0 + * @return 0 on success, otherwise a negative error value + * @retval #SYSTEM_SETTINGS_ERROR_NONE Successful + * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error + * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + */ +int system_setting_set_changed_callback_uds_state(system_settings_key_e key, system_settings_changed_cb callback, void *user_data); + +/** + * @internal + * @since_tizen 3.0 + * @return 0 on success, otherwise a negative error value + * @retval #SYSTEM_SETTINGS_ERROR_NONE Successful + * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error + * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + */ +int system_setting_unset_changed_callback_uds_state(system_settings_key_e key); + + +/** + * @internal + * @since_tizen 3.0 + * @return 0 on success, otherwise a negative error value + * @retval #SYSTEM_SETTINGS_ERROR_NONE Successful + * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error + * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + */ +int system_setting_set_changed_callback_uds_pkg_list(system_settings_key_e key, system_settings_changed_cb callback, void *user_data); + + + +/** + * @internal + * @since_tizen 3.0 + * @return 0 on success, otherwise a negative error value + * @retval #SYSTEM_SETTINGS_ERROR_NONE Successful + * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error + * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + */ +int system_setting_unset_changed_callback_uds_pkg_list(system_settings_key_e key); + /*// */ diff --git a/packaging/capi-system-system-settings.spec b/packaging/capi-system-system-settings.spec index 9b2462a..505a654 100755 --- a/packaging/capi-system-system-settings.spec +++ b/packaging/capi-system-system-settings.spec @@ -1,6 +1,6 @@ Name: capi-system-system-settings Summary: A System Settings library in Tizen Native API -Version: 0.0.2 +Version: 0.0.3 Release: 3 Group: System/System Info License: Apache-2.0 @@ -20,11 +20,10 @@ BuildRequires: pkgconfig(libtzplatform-config) BuildRequires: pkgconfig(alarm-service) BuildRequires: pkgconfig(uuid) BuildRequires: pkgconfig(capi-media-metadata-extractor) - BuildRequires: pkgconfig(json-glib-1.0) BuildRequires: pkgconfig(glib-2.0) - - +BuildRequires: pkgconfig(capi-appfw-app-manager) +BuildRequires: pkgconfig(capi-appfw-package-manager) Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig diff --git a/src/system_setting_platform.c b/src/system_setting_platform.c index c493e5f..dad6b21 100644 --- a/src/system_setting_platform.c +++ b/src/system_setting_platform.c @@ -39,6 +39,8 @@ #include #include +#include +#include #include #include @@ -83,6 +85,15 @@ static void dl_font_size_set(); static void dl_font_config_set_notification(); +#ifndef VCONFKEY_SETAPPL_UDSM +#define VCONFKEY_SETAPPL_UDSM "db/setting/udsm" +#endif + +#ifndef VCONFKEY_SETAPPL_UDSM_PKGID_LIST +#define VCONFKEY_SETAPPL_UDSM_PKGID_LIST "db/setting/udsm/pkgid_list" +#endif + + /** * VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR has a path of the ringtone file which user choose * @return the ringtone file path specified by user in normal case @@ -2156,5 +2167,85 @@ int system_setting_unset_changed_callback_ads_id(system_settings_key_e key) SETTING_TRACE_BEGIN; return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_AD_ID, 0); } +// +//---------------------------------------------------------------------------------------------------------------------------- + +/* LCOV_EXCL_START */ +int system_setting_get_uds_state(system_settings_key_e key, system_setting_data_type_e data_type, void **value) +{ + int ** p_value = (int**)value; + int vconf_value; + char *vconf_string_value = NULL; + + if (system_setting_vconf_get_value_int(VCONFKEY_SETAPPL_UDSM, &vconf_value)) { + return SYSTEM_SETTINGS_ERROR_IO_ERROR; + } + + SETTING_TRACE("[%s] udsm: %d", __FUNCTION__, vconf_value); + + if (vconf_value == SYSTEM_SETTINGS_UDS_ON) { + if (system_setting_vconf_get_value_string(VCONFKEY_SETAPPL_UDSM_PKGID_LIST, &vconf_string_value)) + return SYSTEM_SETTINGS_ERROR_IO_ERROR; + + if (vconf_string_value) { + if (!strcmp(vconf_string_value, "NONE")) { + vconf_value = SYSTEM_SETTINGS_UDS_ON; + } else { + char *app_id = NULL; + char *package_id = NULL; + pid_t pid = getpid(); + app_manager_get_app_id(pid, &app_id); + + if (app_id) { + package_manager_get_package_id_by_app_id(app_id, &package_id); + SETTING_TRACE("[%s] udsm_pkg_list : %s", __FUNCTION__, vconf_string_value); + } + + if (package_id && strstr(vconf_string_value, package_id)) { + vconf_value = SYSTEM_SETTINGS_UDS_ON_WHITELISTED; + SETTING_TRACE("[%s] pkg id : %s", __FUNCTION__, package_id); + } else { + vconf_value = SYSTEM_SETTINGS_UDS_ON; + } + + } + if (vconf_string_value) + free(vconf_string_value); + } + } + + **p_value = vconf_value; + return SYSTEM_SETTINGS_ERROR_NONE; +} +/* LCOV_EXCL_STOP */ + +/* LCOV_EXCL_START */ +int system_setting_set_changed_callback_uds_state(system_settings_key_e key, system_settings_changed_cb callback, void *user_data) +{ + return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_UDSM, SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE, 4, user_data); +} +/* LCOV_EXCL_STOP */ + +/* LCOV_EXCL_START */ +int system_setting_unset_changed_callback_uds_state(system_settings_key_e key) +{ + return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_UDSM, 4); +} +/* LCOV_EXCL_STOP */ + +/* LCOV_EXCL_START */ +int system_setting_set_changed_callback_uds_pkg_list(system_settings_key_e key, system_settings_changed_cb callback, void *user_data) +{ + return system_setting_vconf_set_changed_cb(VCONFKEY_SETAPPL_UDSM_PKGID_LIST, SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST, 4, user_data); +} +/* LCOV_EXCL_STOP */ + +/* LCOV_EXCL_START */ +int system_setting_unset_changed_callback_uds_pkg_list(system_settings_key_e key) +{ + return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_UDSM_PKGID_LIST, 4); +} +/* LCOV_EXCL_STOP */ + diff --git a/src/system_settings.c b/src/system_settings.c index 862f5d4..fd1f1aa 100644 --- a/src/system_settings.c +++ b/src/system_settings.c @@ -424,6 +424,26 @@ system_setting_s system_setting_table[] = { }, { + SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE, + SYSTEM_SETTING_DATA_TYPE_INT, + system_setting_get_uds_state, + NULL, + system_setting_set_changed_callback_uds_state, + system_setting_unset_changed_callback_uds_state, + NULL, + NULL /* user data */ + }, + { + SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST, + SYSTEM_SETTING_DATA_TYPE_STRING, + NULL, + NULL, + system_setting_set_changed_callback_uds_pkg_list, + system_setting_unset_changed_callback_uds_pkg_list, + NULL, + NULL /* user data */ + }, + { SYSTEM_SETTINGS_MAX, -1, NULL, NULL, NULL, NULL, NULL, NULL } }; -- 2.7.4