Add feature definition about background management
[platform/core/appfw/app-core.git] / src / base / appcore_base.c
index 91913f8..37e1840 100644 (file)
@@ -37,6 +37,7 @@
 #include <bundle_internal.h>
 #include <sensor_internal.h>
 #include <ttrace.h>
+#include <system_info.h>
 #include "appcore_base.h"
 #include "appcore_base_private.h"
 
@@ -81,6 +82,46 @@ static guint __suspend_dbus_handler_initialized;
 static char *__locale_dir;
 static appcore_base_rotation __rotation;
 
+appcore_base_tizen_profile_t appcore_base_get_tizen_profile(void)
+{
+       static appcore_base_tizen_profile_t profile = TIZEN_PROFILE_UNKNOWN;
+       char *profile_name = NULL;
+
+       if (__builtin_expect(profile != TIZEN_PROFILE_UNKNOWN, 1))
+               return profile;
+
+       system_info_get_platform_string("http://tizen.org/feature/profile",
+                       &profile_name);
+       if (profile_name == NULL)
+               return profile;
+
+       switch (*profile_name) {
+       case 'm':
+       case 'M':
+               profile = TIZEN_PROFILE_MOBILE;
+               break;
+       case 'w':
+       case 'W':
+               profile = TIZEN_PROFILE_WEARABLE;
+               break;
+       case 't':
+       case 'T':
+               profile = TIZEN_PROFILE_TV;
+               break;
+       case 'i':
+       case 'I':
+               profile = TIZEN_PROFILE_IVI;
+               break;
+       default:
+               profile = TIZEN_PROFILE_COMMON;
+               break;
+       }
+       free(profile_name);
+
+       return profile;
+}
+
+
 static void __invoke_callback(void *event, int type)
 {
        GList *iter = __events;
@@ -621,15 +662,22 @@ static void __on_language_change(keynode_t *key, void *data)
 
 static void __on_region_change(keynode_t *key, void *data)
 {
-       char *val = NULL;
+       char *val;
        const char *name;
 
        name = vconf_keynode_get_name(key);
-       if (name && !strcmp(name, VCONFKEY_REGIONFORMAT))
-               val = vconf_keynode_get_str(key);
+       if (name == NULL)
+               return;
+
+       if (strcmp(name, VCONFKEY_REGIONFORMAT) &&
+                       strcmp(name, VCONFKEY_REGIONFORMAT_TIME1224))
+               return;
+
+       val = vconf_get_str(VCONFKEY_REGIONFORMAT);
 
        __update_region();
        __invoke_callback((void *)val, APPCORE_BASE_EVENT_REGION_CHANGE);
+       free(val);
 }
 
 static gboolean __flush_memory(gpointer data)
@@ -873,7 +921,8 @@ EXPORT_API int appcore_base_init(appcore_base_ops ops, int argc, char **argv, vo
        if (__context.ops.set_i18n)
                __context.ops.set_i18n(__context.data);
 
-       __init_suspend_dbus_handler();
+       if (TIZEN_FEATURE_BACKGROUND_MANAGEMENT)
+               __init_suspend_dbus_handler();
 
        if (!__context.dirty) {
                __context.dirty = true;
@@ -922,7 +971,9 @@ EXPORT_API void appcore_base_fini(void)
 
        g_list_free_full(__events, free);
        __events = NULL;
-       __fini_suspend_dbus_handler();
+
+       if (TIZEN_FEATURE_BACKGROUND_MANAGEMENT)
+               __fini_suspend_dbus_handler();
 
        if (__locale_dir) {
                free(__locale_dir);
@@ -964,11 +1015,13 @@ EXPORT_API int appcore_base_on_receive(aul_type type, bundle *b)
                        }
                }
 
-               bg = bundle_get_val(b, AUL_K_ALLOWED_BG);
-               if (bg && strncmp(bg, "ALLOWED_BG", strlen("ALLOWED_BG")) == 0) {
-                       _DBG("[__SUSPEND__] allowed background");
-                       __context.allowed_bg = true;
-                       __remove_suspend_timer();
+               if (TIZEN_FEATURE_BACKGROUND_MANAGEMENT) {
+                       bg = bundle_get_val(b, AUL_K_ALLOWED_BG);
+                       if (bg && !strcmp(bg, "ALLOWED_BG")) {
+                               _DBG("[__SUSPEND__] allowed background");
+                               __context.allowed_bg = true;
+                               __remove_suspend_timer();
+                       }
                }
 
                if (__context.ops.control) {
@@ -979,11 +1032,13 @@ EXPORT_API int appcore_base_on_receive(aul_type type, bundle *b)
                break;
        case AUL_RESUME:
                _DBG("[APP %d]     AUL event: AUL_RESUME", getpid());
-               bg = bundle_get_val(b, AUL_K_ALLOWED_BG);
-               if (bg && strncmp(bg, "ALLOWED_BG", strlen("ALLOWED_BG")) == 0) {
-                       _DBG("[__SUSPEND__] allowed background");
-                       __context.allowed_bg = true;
-                       __remove_suspend_timer();
+               if (TIZEN_FEATURE_BACKGROUND_MANAGEMENT) {
+                       bg = bundle_get_val(b, AUL_K_ALLOWED_BG);
+                       if (bg && !strcmp(bg, "ALLOWED_BG")) {
+                               _DBG("[__SUSPEND__] allowed background");
+                               __context.allowed_bg = true;
+                               __remove_suspend_timer();
+                       }
                }
                break;
        case AUL_TERMINATE:
@@ -1002,18 +1057,24 @@ EXPORT_API int appcore_base_on_receive(aul_type type, bundle *b)
                break;
        case AUL_WAKE:
                _DBG("[APP %d]     AUL event: AUL_WAKE", getpid());
-               if (!__context.allowed_bg && __context.suspended_state) {
-                       int suspend = APPCORE_BASE_SUSPENDED_STATE_DID_EXIT_FROM_SUSPEND;
-                       __remove_suspend_timer();
-                       __invoke_callback((void *)&suspend, APPCORE_BASE_EVENT_SUSPENDED_STATE_CHANGE);
-                       __context.suspended_state = false;
+               if (TIZEN_FEATURE_BACKGROUND_MANAGEMENT) {
+                       if (!__context.allowed_bg &&
+                                       __context.suspended_state) {
+                               int suspend = APPCORE_BASE_SUSPENDED_STATE_DID_EXIT_FROM_SUSPEND;
+                               __remove_suspend_timer();
+                               __invoke_callback((void *)&suspend, APPCORE_BASE_EVENT_SUSPENDED_STATE_CHANGE);
+                               __context.suspended_state = false;
+                       }
                }
                break;
        case AUL_SUSPEND:
                _DBG("[APP %d]     AUL event: AUL_SUSPEND", getpid());
-               if (!__context.allowed_bg && !__context.suspended_state) {
-                       __remove_suspend_timer();
-                       __flush_memory(NULL);
+               if (TIZEN_FEATURE_BACKGROUND_MANAGEMENT) {
+                       if (!__context.allowed_bg &&
+                                       !__context.suspended_state) {
+                               __remove_suspend_timer();
+                               __flush_memory(NULL);
+                       }
                }
                break;
        case AUL_UPDATE_REQUESTED:
@@ -1256,5 +1317,3 @@ EXPORT_API appcore_base_ops appcore_base_get_default_ops(void)
 
        return ops;
 }
-
-