From e2c90396578886990093496f47d15f6164735fae Mon Sep 17 00:00:00 2001 From: "jinwang.an" Date: Fri, 10 Mar 2017 18:22:45 +0900 Subject: [PATCH] Added feature check callback to support specific API. Conflicts: CMakeLists.txt include/system_settings_private.h packaging/capi-system-system-settings.spec src/system_setting_platform.c src/system_settings.c Change-Id: Id4e560ccfdde654901523ec9dea96d5efbeea1a5 Signed-off-by: jinwang.an --- CMakeLists.txt | 2 +- include/system_settings.h | 11 +++ include/system_settings_private.h | 22 +++++ packaging/capi-system-system-settings.spec | 2 + src/system_setting_platform.c | 80 ++++++++++++++- src/system_settings.c | 154 +++++++++++++++++++---------- src/system_settings_vconf.c | 36 ++++--- 7 files changed, 238 insertions(+), 69 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e88d2f..3b9a7b0 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,7 +31,7 @@ SET(LIBDIR "${CMAKE_LIBDIR}") SET(INC_DIR include) INCLUDE_DIRECTORIES(${INC_DIR}) -SET(requires "dlog vconf fontconfig libxml-2.0 pkgmgr pkgmgr-info alarm-service capi-media-metadata-extractor eina elementary aul json-glib-1.0 capi-appfw-app-manager capi-appfw-package-manager") +SET(requires "dlog vconf fontconfig libxml-2.0 pkgmgr pkgmgr-info alarm-service capi-media-metadata-extractor eina elementary aul json-glib-1.0 capi-appfw-app-manager capi-appfw-package-manager capi-system-info") SET(pc_requires "capi-base-common") diff --git a/include/system_settings.h b/include/system_settings.h index 1cd3183..2ef178b 100644 --- a/include/system_settings.h +++ b/include/system_settings.h @@ -151,6 +151,7 @@ typedef void (*system_settings_changed_cb)(system_settings_key_e key, void *user * @retval #SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER Invalid parameter * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + * @retval #SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED Not support system-settings API */ int system_settings_set_value_int(system_settings_key_e key, int value); @@ -164,6 +165,7 @@ int system_settings_set_value_int(system_settings_key_e key, int value); * @retval #SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER Invalid parameter * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + * @retval #SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED Not support system-settings API * @warning %http://tizen.org/privilege/systemsettings (public level privilege) MUST NOT be declared to use this API since 2.3.1. */ int system_settings_get_value_int(system_settings_key_e key, int *value); @@ -182,6 +184,7 @@ int system_settings_get_value_int(system_settings_key_e key, int *value); * @retval #SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER Invalid parameter * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + * @retval #SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED Not support system-settings API */ int system_settings_set_value_bool(system_settings_key_e key, bool value); @@ -195,6 +198,7 @@ int system_settings_set_value_bool(system_settings_key_e key, bool value); * @retval #SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER Invalid parameter * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + * @retval #SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED Not support system-settings API * @warning %http://tizen.org/privilege/systemsettings (public level privilege) MUST NOT be declared to use this API since 2.3.1. */ int system_settings_get_value_bool(system_settings_key_e key, bool *value); @@ -213,6 +217,7 @@ int system_settings_get_value_bool(system_settings_key_e key, bool *value); * @retval #SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER Invalid parameter * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + * @retval #SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED Not support system-settings API */ int system_settings_set_value_string(system_settings_key_e key, const char *value); @@ -227,6 +232,7 @@ int system_settings_set_value_string(system_settings_key_e key, const char *valu * @retval #SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER Invalid parameter * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + * @retval #SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED Not support system-settings API * @warning %http://tizen.org/privilege/systemsettings (public level privilege) MUST NOT be declared to use this API since 2.3.1. */ int system_settings_get_value_string(system_settings_key_e key, char **value); @@ -242,6 +248,7 @@ int system_settings_get_value_string(system_settings_key_e key, char **value); * @retval #SYSTEM_SETTINGS_ERROR_NONE Successful * @retval #SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER Invalid parameter * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + * @retval #SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED Not support system-settings API * @post system_settings_changed_cb() will be invoked. * * @see system_settings_unset_changed_cb() @@ -260,6 +267,7 @@ int system_settings_set_changed_cb(system_settings_key_e key, system_settings_ch * @retval #SYSTEM_SETTINGS_ERROR_NONE Successful * @retval #SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER Invalid parameter * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + * @retval #SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED Not support system-settings API * * @see system_settings_set_changed_cb() * @warning %http://tizen.org/privilege/systemsettings (public level privilege) MUST NOT be declared to use this API since 2.3.1. @@ -292,6 +300,7 @@ typedef bool (*system_settings_iter_cb)(int index, const char* value, void *cb_d * @retval #SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER Invalid parameter * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + * @retval #SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED Not support system-settings API */ int system_settings_foreach_value_string(system_settings_key_e key, system_settings_iter_cb callback, void *user_value); @@ -308,6 +317,7 @@ int system_settings_foreach_value_string(system_settings_key_e key, system_setti * @retval #SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER Invalid parameter * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + * @retval #SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED Not support system-settings API */ int system_settings_add_value_string(system_settings_key_e key, const char *value); @@ -324,6 +334,7 @@ int system_settings_add_value_string(system_settings_key_e key, const char *valu * @retval #SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER Invalid parameter * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + * @retval #SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED Not support system-settings API */ int system_settings_delete_value_string(system_settings_key_e key, const char *value); diff --git a/include/system_settings_private.h b/include/system_settings_private.h index 968fd2b..d55686f 100644 --- a/include/system_settings_private.h +++ b/include/system_settings_private.h @@ -62,6 +62,8 @@ extern "C" #endif +#define SETTING_PROFILE_PATH "tizen.org/feature/profile" +#define SETTING_3G_TELEPHONY_PATH "tizen.org/feature/network.telephony.service.cdma" /** * @internal @@ -79,6 +81,19 @@ typedef enum { } system_setting_data_type_e; +/** + * @internal + * @since_tizen 4.0 + * Enumeration for supported profile info + */ +typedef enum { + SYSTEM_SETTING_SUPPORTED_PROFILE_MOBILE = 0x1, /**< mobile */ + SYSTEM_SETTING_SUPPORTED_PROFILE_WEARABLE = 0x2, /**< wearable */ + SYSTEM_SETTING_SUPPORTED_PROFILE_TV = 0x4, /**< tv */ + SYSTEM_SETTING_SUPPORTED_PROFILE_COMMON = 0x8, /**< common*/ + SYSTEM_SETTING_SUPPORTED_PROFILE_ALL = 0xF, /**< all of profiles */ +} +system_setting_supported_profile_info_e; /** * @internal @@ -106,6 +121,8 @@ typedef int (*system_setting_add_value_cb)(system_settings_key_e key, system_set typedef int (*system_setting_del_value_cb)(system_settings_key_e key, system_setting_data_type_e data_type, void *value); typedef int (*system_setting_list_value_cb)(system_settings_key_e key, system_setting_data_type_e data_type, system_settings_iter_cb callback, void *user_data); +typedef int (*system_setting_feature_check_cb)(void *value); + /** * @internal * @since_tizen 2.3 @@ -151,6 +168,8 @@ typedef struct { system_setting_del_value_cb del_value_cb; system_setting_list_value_cb list_value_cb; + system_setting_feature_check_cb feature_check_cb; + void *user_data; /* user_data */ } system_setting_s; @@ -166,6 +185,7 @@ typedef system_setting_s *system_setting_h; * @retval #SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER Invalid parameter * @retval #SYSTEM_SETTINGS_ERROR_IO_ERROR Internal I/O error * @retval #SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED Permission violation error + * @retval #SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED Not support system-settings API */ int system_settings_get_item(system_settings_key_e key, system_setting_h *item); @@ -1395,6 +1415,8 @@ int system_setting_set_changed_callback_uds_pkg_list(system_settings_key_e key, */ int system_setting_unset_changed_callback_uds_pkg_list(system_settings_key_e key); + +int system_setting_feature_check_profile_mobile_wearable(void *value); /*// */ diff --git a/packaging/capi-system-system-settings.spec b/packaging/capi-system-system-settings.spec index 6e97533..1f44f84 100755 --- a/packaging/capi-system-system-settings.spec +++ b/packaging/capi-system-system-settings.spec @@ -20,6 +20,8 @@ BuildRequires: pkgconfig(libtzplatform-config) BuildRequires: pkgconfig(alarm-service) BuildRequires: pkgconfig(uuid) BuildRequires: pkgconfig(capi-media-metadata-extractor) +BuildRequires: pkgconfig(capi-system-info) + BuildRequires: pkgconfig(json-glib-1.0) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(capi-appfw-app-manager) diff --git a/src/system_setting_platform.c b/src/system_setting_platform.c index ff88546..0e83512 100644 --- a/src/system_setting_platform.c +++ b/src/system_setting_platform.c @@ -52,7 +52,7 @@ #include #include - +#include #define SETTING_FONT_CONF_FILE _TZ_SYS_ETC"/fonts/conf.avail/99-tizen.conf" #define SETTING_DEFAULT_FONT_CONF_FILE _TZ_SYS_ETC"/fonts/conf.avail/99-tizen.conf" @@ -2169,8 +2169,82 @@ 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); } -// -//---------------------------------------------------------------------------------------------------------------------------- + +int system_setting_get_profile_info(int *value) +{ + char *profile_string = NULL; + static int is_first = 1; + static int profile_data = 0; + + if (value == NULL) + return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + + *value = 0; + + if (!is_first) { + *value = profile_data; + return SYSTEM_SETTINGS_ERROR_NONE; + } + + is_first = 0; + + int ret = system_info_get_platform_string(SETTING_PROFILE_PATH, &profile_string); + if (ret != SYSTEM_INFO_ERROR_NONE) { + SETTING_TRACE("Setting - reading profile string failed, %d", ret); + return SYSTEM_SETTINGS_ERROR_IO_ERROR; + } + + if (profile_string == NULL) + return SYSTEM_SETTINGS_ERROR_IO_ERROR; + + LOGE("Profile : %s", profile_string); + + if (!strcmp(profile_string, "mobile")) + *value = SYSTEM_SETTING_SUPPORTED_PROFILE_MOBILE; + else if (!strcmp(profile_string, "wearable")) + *value = SYSTEM_SETTING_SUPPORTED_PROFILE_WEARABLE; + else if (!strcmp(profile_string, "tv")) + *value = SYSTEM_SETTING_SUPPORTED_PROFILE_TV; + else if (!strcmp(profile_string, "common")) + *value = SYSTEM_SETTING_SUPPORTED_PROFILE_COMMON; + else { + FREE(profile_string); + return SYSTEM_SETTINGS_ERROR_IO_ERROR; + } + + profile_data = *value; + FREE(profile_string); + return SYSTEM_SETTINGS_ERROR_NONE; +} + +int system_setting_feature_check_profile_tv(void * value) +{ + int profile_data = 0; + + if (system_setting_get_profile_info(&profile_data) != SYSTEM_SETTINGS_ERROR_NONE) + return SYSTEM_SETTINGS_ERROR_IO_ERROR; + + if (profile_data == SYSTEM_SETTING_SUPPORTED_PROFILE_TV) + return SYSTEM_SETTINGS_ERROR_NONE; + else + return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED; +} + +int system_setting_feature_check_profile_mobile_wearable(void * value) +{ + int profile_data = 0; + + if (system_setting_get_profile_info(&profile_data) != SYSTEM_SETTINGS_ERROR_NONE) + return SYSTEM_SETTINGS_ERROR_IO_ERROR; + + if (profile_data == SYSTEM_SETTING_SUPPORTED_PROFILE_MOBILE || + profile_data == SYSTEM_SETTING_SUPPORTED_PROFILE_WEARABLE) + return SYSTEM_SETTINGS_ERROR_NONE; + else { + return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED; + } +} + /* LCOV_EXCL_START */ int system_setting_get_uds_state(system_settings_key_e key, system_setting_data_type_e data_type, void **value) diff --git a/src/system_settings.c b/src/system_settings.c index fd1f1aa..ce51747 100644 --- a/src/system_settings.c +++ b/src/system_settings.c @@ -26,7 +26,6 @@ #include - #ifdef LOG_TAG #undef LOG_TAG #endif @@ -50,7 +49,8 @@ system_setting_s system_setting_table[] = { system_setting_add_incoming_call_ringtone, /* ADD */ system_setting_del_incoming_call_ringtone, /* DEL */ system_setting_list_incoming_call_ringtone, /* LIST */ - NULL /* user data */ + system_setting_feature_check_profile_mobile_wearable, /* feature check */ + NULL, /* user data */ }, { @@ -64,7 +64,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + system_setting_feature_check_profile_mobile_wearable, /* feature check */ + NULL, /* user data */ }, { @@ -78,7 +79,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + system_setting_feature_check_profile_mobile_wearable, /* feature check */ + NULL, /* user data */ }, { @@ -92,7 +94,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { @@ -106,7 +109,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { @@ -120,7 +124,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { @@ -134,7 +139,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + system_setting_feature_check_profile_mobile_wearable, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, @@ -147,7 +153,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, @@ -160,7 +167,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP, @@ -173,7 +181,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + system_setting_feature_check_profile_mobile_wearable, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE, @@ -186,7 +195,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, @@ -199,7 +209,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, @@ -212,7 +223,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, @@ -225,7 +237,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, @@ -238,7 +251,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_TIME_CHANGED, @@ -251,7 +265,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_SOUND_LOCK, @@ -264,7 +279,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, @@ -277,7 +293,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_SOUND_TOUCH, @@ -290,7 +307,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, @@ -303,7 +321,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, @@ -316,7 +335,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, @@ -329,7 +349,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + system_setting_feature_check_profile_mobile_wearable, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD, @@ -342,7 +363,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_DEVICE_NAME, @@ -355,7 +377,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_MOTION_ENABLED, @@ -368,7 +391,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, @@ -381,7 +405,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, @@ -394,7 +419,8 @@ system_setting_s system_setting_table[] = { NULL, /* ADD */ NULL, /* DEL */ NULL, /* LIST */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_LOCK_STATE, @@ -407,7 +433,8 @@ system_setting_s system_setting_table[] = { NULL, /* add */ NULL, /* del */ NULL, /* list */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { SYSTEM_SETTINGS_KEY_ADS_ID, @@ -420,7 +447,8 @@ system_setting_s system_setting_table[] = { NULL, /* add */ NULL, /* del */ NULL, /* list */ - NULL /* user data */ + NULL, /* feature check */ + NULL, /* user data */ }, { @@ -444,7 +472,7 @@ system_setting_s system_setting_table[] = { NULL /* user data */ }, { - SYSTEM_SETTINGS_MAX, -1, NULL, NULL, NULL, NULL, NULL, NULL + SYSTEM_SETTINGS_MAX, -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL } }; @@ -494,6 +522,7 @@ static int _dump_context_node(int key) return -1; } + /* LCOV_EXCL_STOP */ int system_settings_get_item(system_settings_key_e key, system_setting_h *item) @@ -512,7 +541,17 @@ int system_settings_get_item(system_settings_key_e key, system_setting_h *item) if (system_setting_table[index].key == key) { *item = &system_setting_table[index]; LOGE("Enter [%s], index = %d, key = %d, type = %d", __FUNCTION__, index, key, (*item)->data_type); - return SYSTEM_SETTINGS_ERROR_NONE; + if (system_setting_table[index].feature_check_cb != NULL) { + int ret = system_setting_table[index].feature_check_cb(item); + if (ret == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) { + LOGE("Not supported API, because there is no feature!"); + return ret; + } + if (ret != SYSTEM_SETTINGS_ERROR_NONE) + return ret; + } else { + return SYSTEM_SETTINGS_ERROR_NONE; + } } index++; @@ -531,15 +570,18 @@ int system_settings_get_value(system_settings_key_e key, system_setting_data_typ system_setting_h system_setting_item; system_setting_get_value_cb system_setting_getter; - if (0 != system_settings_get_item(key, &system_setting_item)) { - _dump_context_node(key); - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key --- (%d)", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, key); - return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + int ret = system_settings_get_item(key, &system_setting_item); + if (ret != 0) { + if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) { + _dump_context_node(key); + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + } + return ret; } if (system_setting_item->data_type != data_type) { _dump_context_node(key); - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type --- key : (%d), datatype:(%d)", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, key, data_type); + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type --- key:(%d), datatype:(%d)", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, key, data_type); return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; } @@ -567,9 +609,10 @@ int system_settings_set_value(system_settings_key_e key, system_setting_data_typ int ret = system_settings_get_item(key, &system_setting_item); - if (0 != ret) { - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); - return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED; + if (ret != 0) { + if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + return ret; } /* type check */ @@ -604,9 +647,10 @@ int system_settings_add_value(system_settings_key_e key, system_setting_data_typ int ret = system_settings_get_item(key, &system_setting_item); - if (0 != ret) { - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); - return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED; + if (ret != 0) { + if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + return ret; } /* type check */ @@ -677,9 +721,10 @@ int system_settings_list_value(system_settings_key_e key, system_setting_data_ty int ret = system_settings_get_item(key, &system_setting_item); - if (0 != ret) { - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); - return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED; + if (ret != 0) { + if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + return ret; } /* type check */ @@ -815,9 +860,11 @@ int system_settings_set_changed_cb(system_settings_key_e key, system_settings_ch if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE) return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; - if (system_settings_get_item(key, &system_setting_item)) { - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); - return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + int ret = system_settings_get_item(key, &system_setting_item); + if (ret != 0) { + if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + return ret; } system_setting_set_changed_cb = system_setting_item->set_changed_cb; @@ -852,10 +899,11 @@ int system_settings_unset_changed_cb(system_settings_key_e key) if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE) return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; - int ret = system_settings_get_item(key, &system_setting_item) ; - if (ret) { - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); - return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + int ret = system_settings_get_item(key, &system_setting_item); + if (ret != 0) { + if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + return ret; } system_setting_unset_changed_cb = system_setting_item->unset_changed_cb; diff --git a/src/system_settings_vconf.c b/src/system_settings_vconf.c index b4b12a5..3c9e778 100644 --- a/src/system_settings_vconf.c +++ b/src/system_settings_vconf.c @@ -90,8 +90,10 @@ static void system_setting_vconf_event_cb0(keynode_t *node, void *event_data) if (node != NULL) { system_setting_h system_setting_item; - if (system_settings_get_item(pkey, &system_setting_item)) { - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + int ret = system_settings_get_item(pkey, &system_setting_item); + if (ret != 0) { + if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); } void *user_data = NULL; @@ -109,8 +111,10 @@ static void system_setting_vconf_event_cb1(keynode_t *node, void *event_data) if (node != NULL) { system_setting_h system_setting_item; - if (system_settings_get_item(pkey, &system_setting_item)) { - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + int ret = system_settings_get_item(pkey, &system_setting_item); + if (ret != 0) { + if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); } void *user_data = NULL; @@ -128,8 +132,10 @@ static void system_setting_vconf_event_cb2(keynode_t *node, void *event_data) if (node != NULL) { system_setting_h system_setting_item; - if (system_settings_get_item(pkey, &system_setting_item)) { - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + int ret = system_settings_get_item(pkey, &system_setting_item); + if (ret != 0) { + if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); } void *user_data = NULL; @@ -147,8 +153,10 @@ static void system_setting_vconf_event_cb3(keynode_t *node, void *event_data) if (node != NULL) { system_setting_h system_setting_item; - if (system_settings_get_item(pkey, &system_setting_item)) { - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + int ret = system_settings_get_item(pkey, &system_setting_item); + if (ret != 0) { + if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); } void *user_data = NULL; @@ -166,8 +174,10 @@ static void system_setting_vconf_event_cb4(keynode_t *node, void *event_data) if (node != NULL) { system_setting_h system_setting_item; - if (system_settings_get_item(pkey, &system_setting_item)) { - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + int ret = system_settings_get_item(pkey, &system_setting_item); + if (ret != 0) { + if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); } void *user_data = NULL; @@ -185,8 +195,10 @@ static void system_setting_vconf_event_cb100(keynode_t *node, void *event_data) if (node != NULL) { system_setting_h system_setting_item; - if (system_settings_get_item(pkey, &system_setting_item)) { - LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + int ret = system_settings_get_item(pkey, &system_setting_item); + if (ret != 0) { + if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) + LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); } void *user_data = NULL; -- 2.7.4