[ACR-716] Mock location 93/81593/4
authorkj7.sung <kj7.sung@samsung.com>
Wed, 27 Jul 2016 07:53:34 +0000 (16:53 +0900)
committerkj7.sung <kj7.sung@samsung.com>
Fri, 12 Aug 2016 04:30:42 +0000 (13:30 +0900)
Change-Id: I1e23fd8e42232a95ec760954a82b617effd8b5bd
Signed-off-by: kj7.sung <kj7.sung@samsung.com>
22 files changed:
location/CMakeLists.txt
location/include/location-types.h
location/manager/location-boundary.h
location/manager/location-common-util.h
location/manager/location-gps.c
location/manager/location-hybrid-mobile.c
location/manager/location-ielement.c
location/manager/location-ielement.h
location/manager/location-mock.c [deleted file]
location/manager/location-mock.h [deleted file]
location/manager/location-position.h
location/manager/location-setting.c
location/manager/location-setting.h
location/manager/location-signaling-util.c
location/manager/location-wps.c
location/manager/location.c
location/manager/location.h
location/module/location-module.h
location/module/module-internal.c
location/module/module-internal.h
packaging/liblbs-location.changes
packaging/liblbs-location.spec

index 0c09d2e..d0d6830 100644 (file)
@@ -43,7 +43,6 @@ SET(SRCS
        ${MANAGER_DIR}/location-common-util.c
        ${MANAGER_DIR}/location-gps.c
        ${MANAGER_DIR}/location-wps.c
-       ${MANAGER_DIR}/location-mock.c
        ${PRIVACY_SRC}
 
        ${MODULE_DIR}/module-internal.c
index 95ed229..8435aeb 100644 (file)
@@ -64,10 +64,8 @@ typedef enum {
        LOCATION_METHOD_HYBRID = 0,                     /*/< This method selects best method. */
        LOCATION_METHOD_GPS,                            /*/< This method uses Global Positioning System. */
        LOCATION_METHOD_WPS,                            /*/< This method uses Wifi Positioning System. */
-       LOCATION_METHOD_MOCK,                           /* < This method is for mock location */
-       LOCATION_METHOD_MOCK_GPS,                               /* < This method is for mock location */
-       LOCATION_METHOD_MOCK_WPS,                               /* < This method is for mock location */
-       LOCATION_METHOD_MAX,            /*/< The numer of methods */
+       INTERNAL_METHOD_MOCK,                           /*/< This method uses mock location. */
+       LOCATION_METHOD_MAX,                            /*/< The numer of methods */
 } LocationMethod;
 
 /**
index 3473b87..0b89536 100644 (file)
@@ -151,119 +151,40 @@ void location_boundary_free(LocationBoundary *boundary);
 LocationBoundary *location_boundary_copy(const LocationBoundary *boundary);
 
 /**
- * @brief
- * Add Boundary on LocationFW.
- * You should call this fuction when you want to receive a crossing signal(zone-in/zone-out) from #LocationBoundary.
- * @remarks It supports multi-boundaries. \n
-        However a duplicated boundary would not be allowed.
- * @pre
- * #location_new should be called before.\n
+ * @brief Add Boundary on LocationFW. You should call this fuction when you want to receive a crossing signal(zone-in/zone-out) from #LocationBoundary.
+ * @remarks It supports multi-boundaries. However a duplicated boundary would not be allowed.
+ * @pre #location_new should be called before.\n
  * @post None.
  * @param [in] obj - a #LocationObject
  * @param [in] boundary - a #LocationBoundary
  * @return int
- * @retval 0                                                                           Success
- * Please refer #LocationError for more information.
- * @par Example
- * @code
-#include <location.h>
-
-static void cb_zone_in (GObject *self, gpointer boundary, gpointer position, gpointer accuracy, gpointer user_data)
-{
-       g_printf ("[zone-in] position - lat: %f, long: %f", position->latitude, position->longitude);
-}
-
-static void cb_zone_out (GObject *self, gpointer boundary, gpointer position, gpointer accuracy, gpointer user_data)
-{
-       g_printf ("[zone-out] position - lat: %f, long: %f", position->latitude, position->longitude);
-}
-
-void location_test_boundary_add(LocationObject *loc)
-{
-       LocationPosition* rb = location_position_new (0, 37.300, -121.86, 0, LOCATION_STATUS_2D_FIX);
-       LocationPosition* lt = location_position_new (0, 37.360, -121.92, 0, LOCATION_STATUS_2D_FIX);
-
-       LoationBoundary *boundary = location_boundary_new_for_rect (lt, rb);
-
-       ret = location_boundary_add(loc, boundary);
-
-       g_signal_connect(loc, "zone-in", G_CALLBACK(cb_zone_in), NULL);
-       g_siganl_connect(loc, "zone-out", G_CALLBACK(cb_zone_out), NULL);
-
-       location_position_free(rb);
-       location_position_free(lt);
-}
- * @endcode
+ * @retval 0 Success
  */
 int location_boundary_add(const LocationObject *obj, const LocationBoundary *boundary);
 
 /**
- * @brief
- * Remove Boundary on LocationFW.
+ * @brief Remove Boundary on LocationFW.
  * You should call this function when you don't want to receive a crossing signal(zone-in/zone-out) from #LocationBoundary any more.
  * @remarks It supports multi-boundaries.
- * @pre
- * #location_init should be called before.\n
+ * @pre #location_init should be called before.\n
  * @post None.
  * @param [in] obj - a #LocationObject
  * @param [in] boundary - a #LocationBoundary
  * @return int
- * @retval 0                                                                           Success
- *
- * Please refer #LocationError for more information.
- * @par Example
- * @code
-#include <location.h>
-
-void location_test_boundary_remove(LocationObject *loc)
-{
-       int ret = 0;
-       LocationPosition* rb = location_position_new (0, 37.300, -121.86, 0, LOCATION_STATUS_2D_FIX);
-       LocationPosition* lt = location_position_new (0, 37.360, -121.92, 0, LOCATION_STATUS_2D_FIX);
-
-       LoationBoundary *boundary = location_boundary_new_for_rect (lt, rb);
-
-       ret = location_boundary_remove(loc, boundary);
-
-       location_position_free(rb);
-       location_position_free(lt);
-
-}
- * @endcode
+ * @retval 0   Success
  */
 int location_boundary_remove(const LocationObject *obj, const LocationBoundary *boundary);
 
 /**
- * @brief
- * Call a function for each element of a Boundary list.
+ * @brief Call a function for each element of a Boundary list.
  * @remarks None.
- * @pre
- * #location_init should be called before.\n
+ * @pre #location_init should be called before.\n
  * @post None.
  * @param [in] obj - a #LocationObject
  * @param [in] func - a #LocationBoundaryFunc
  * @param [in] user_data - a #void
  * @return int
- * @retval 0                                                                           Success
- *
- * Please refer #LocationError for more information.
- * @par Example
- * @code
-#include <location.h>
-
-static void remove_boundary(LocationBoundary *boundary, void *user_data)
-{
-       LocationBoundary *loc = (LocationBoundary *) user_data;
-       if (loc == NULL || boundary == NULL) return;
-
-       location_boundary_remove(loc, boundary);
-}
-
-void location_test_boundary_foreach(LocationObject *loc)
-{
-       int ret = location_boundary_foreach(loc, remove_boundary, loc);
-}
- * @endcode
+ * @retval 0   Success
  */
 int location_boundary_foreach(const LocationObject *obj, LocationBoundaryFunc func, gpointer user_data);
 
@@ -275,24 +196,7 @@ int location_boundary_foreach(const LocationObject *obj, LocationBoundaryFunc fu
  * @post        None.* @param [in] boundary - a #LocationBoundary
  * @param [in] position - a #LocationPosition
  * @return gboolean
- * @retval\n
- * TRUE - if inside\n
- * FALSE - if outside\n
- * @par Example
- * @code
-#include <location.h>
-
-void location_test_boundary_if_inside(LocationObject *loc, LocationBoundary *boundary)
-{
-       gboolean is_inside = FALSE;
-       LocationPosition* position = location_position_new (0, 37.300, -121.86, 0, LOCATION_STATUS_2D_FIX);
-       is_inside = location_boundary_if_inside(boundary, position);
-       if (is_inside == TRUE) g_printf("The position is inside of the boundary\n");
-       else g_printf("The position is outside of the boundary\n");
-
-}
- * @endcode
-
+ * @retval\n TRUE - if inside\n FALSE - if outside\n
  */
 gboolean location_boundary_if_inside(LocationBoundary *boundary, LocationPosition *position);
 
index 09565f5..3491a46 100644 (file)
@@ -65,20 +65,22 @@ int location_get_app_type(char *app_id);
 
 const char* err_msg(int err);
 
-#define LOCATION_IF_POS_FAIL(path) {\
-               int state = 0; \
+#define LOCATION_IF_POS_FAIL(path) { \
+               int state = 0, mock; \
+               vconf_get_int(VCONFKEY_LOCATION_MOCK_ENABLED, &mock); \
                vconf_get_int(path, &state); \
-               if (state != 2){\
-                       return LOCATION_ERROR_NOT_AVAILABLE;\
-               }\
+               if (state != 2 && mock != 1) { \
+                       return LOCATION_ERROR_NOT_AVAILABLE; \
+               } \
        }
 
 #define LOCATION_IF_HYBRID_FAIL(gpath, wpath) { \
                int gps = 0; vconf_get_int(gpath, &gps); \
                int wps = 0; vconf_get_int(wpath, &wps); \
-               if (gps != 2 && wps != 2) {\
-                       return LOCATION_ERROR_NOT_AVAILABLE;\
-               }\
+               int mock = 0; vconf_get_int(VCONFKEY_LOCATION_MOCK_ENABLED, &mock); \
+               if (gps != 2 && wps != 2 && mock != 1) { \
+                       return LOCATION_ERROR_NOT_AVAILABLE; \
+               } \
        }
 
 G_END_DECLS
index e482d84..f09e3d7 100755 (executable)
@@ -44,6 +44,7 @@ typedef struct _LocationGpsPrivate {
        GMutex                          mutex;
        gboolean                        is_started;
        gboolean                        is_batch_invoked;
+       gboolean                        is_mock;
        guint                           app_type;
        gboolean                        set_noti;
        gboolean                        enabled;
@@ -195,7 +196,7 @@ static void gps_location_cb(gboolean enabled, LocationPosition *pos, LocationVel
        if (priv->min_interval != LOCATION_UPDATE_INTERVAL_NONE) {
                distance_based_position_signaling(self, signals, enabled, pos, vel, acc,
                                                        priv->min_interval, priv->min_distance, &(priv->enabled),
-                                                       &(priv->dist_updated_timestamp),&(priv->pos), &(priv->vel), &(priv->acc));
+                                                       &(priv->dist_updated_timestamp), &(priv->pos), &(priv->vel), &(priv->acc));
        }
        location_signaling(self, signals, enabled, priv->boundary_list, pos, vel, acc,
                                                priv->pos_interval, priv->vel_interval, priv->loc_interval, &(priv->enabled),
@@ -238,8 +239,10 @@ static void location_setting_search_cb(keynode_t *key, gpointer self)
        g_return_if_fail(priv);
 
        if (location_setting_get_key_val(key) == VCONFKEY_LOCATION_GPS_SEARCHING) {
-               LOCATION_LOGD("enable_signaling : SERVICE_DISABLED");
-               enable_signaling(self, signals, &(priv->enabled), FALSE, LOCATION_STATUS_NO_FIX);
+               if (!location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED)) {
+                       LOCATION_LOGD("enable_signaling : SERVICE_DISABLED");
+                       enable_signaling(self, signals, &(priv->enabled), FALSE, LOCATION_STATUS_NO_FIX);
+               }
        }
 }
 #endif
@@ -502,7 +505,6 @@ static int location_gps_stop_batch(LocationGps *self)
 static void location_gps_dispose(GObject *gobject)
 {
        LOC_FUNC_LOG
-
        LocationGpsPrivate *priv = GET_PRIVATE(gobject);
        g_return_if_fail(priv);
        g_mutex_clear(&priv->mutex);
@@ -510,6 +512,11 @@ static void location_gps_dispose(GObject *gobject)
        if (priv->loc_timeout) g_source_remove(priv->loc_timeout);
        priv->loc_timeout = 0;
 
+       if (priv->is_mock) {
+               priv->mod->ops.clear_mock_location(priv->mod->handler, NULL, gobject);
+               priv->is_mock = FALSE;
+       }
+
        if (priv->app_type != CPPAPP && priv->set_noti == TRUE) {
                location_setting_ignore_notify(VCONFKEY_LOCATION_ENABLED, location_setting_gps_cb);
 #ifdef TIZEN_PROFILE_MOBILE
@@ -572,148 +579,149 @@ static void location_gps_set_property(GObject *object, guint property_id, const
        int ret = 0;
        switch (property_id) {
        case PROP_BOUNDARY: {
-                               GList *boundary_list = g_list_copy(g_value_get_pointer(value));
-                               ret = set_prop_boundary(&priv->boundary_list, boundary_list);
-                               LOC_IF_FAIL_LOG(ret, _E, "Set boundary. Error[%s]", err_msg(ret));
-                               if (boundary_list) g_list_free(boundary_list);
-                               break;
-                       }
+               GList *boundary_list = g_list_copy(g_value_get_pointer(value));
+               ret = set_prop_boundary(&priv->boundary_list, boundary_list);
+               LOC_IF_FAIL_LOG(ret, _E, "Set boundary. Error[%s]", err_msg(ret));
+               if (boundary_list) g_list_free(boundary_list);
+               break;
+       }
        case PROP_REMOVAL_BOUNDARY: {
-                               LocationBoundary *req_boundary = (LocationBoundary *) g_value_dup_boxed(value);
-                               ret = set_prop_removal_boundary(&priv->boundary_list, req_boundary);
-                               LOC_IF_FAIL_LOG(ret, _E, "Removal boundary. Error[%s]", err_msg(ret));
-                               break;
-                       }
+               LocationBoundary *req_boundary = (LocationBoundary *) g_value_dup_boxed(value);
+               ret = set_prop_removal_boundary(&priv->boundary_list, req_boundary);
+               LOC_IF_FAIL_LOG(ret, _E, "Removal boundary. Error[%s]", err_msg(ret));
+               break;
+       }
        case PROP_POS_INTERVAL: {
-                               guint interval = g_value_get_uint(value);
-                               LOCATION_LOGD("Set prop>> PROP_POS_INTERVAL: %u", interval);
-                               /* We don't need to set interval when new one is same as the previous one */
-                               if (interval == priv->pos_interval) break;
-
-                               if (interval > 0) {
-                                       if (interval < LOCATION_UPDATE_INTERVAL_MAX)
-                                               priv->pos_interval = interval;
-                                       else
-                                               priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
-                               } else {
-                                       priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
-                               }
-
-                               if (__get_started(object) == TRUE) {
-                                       LOCATION_LOGD("[update_pos_interval]: update pos-interval while pos-tracking");
-                                       g_return_if_fail(priv->mod->ops.set_position_update_interval);
-                                       priv->mod->ops.set_position_update_interval(priv->mod->handler, priv->pos_interval);
-                               }
-
-                               break;
-                       }
+               guint interval = g_value_get_uint(value);
+               LOCATION_LOGD("Set prop>> PROP_POS_INTERVAL: %u", interval);
+               /* We don't need to set interval when new one is same as the previous one */
+               if (interval == priv->pos_interval) break;
+
+               if (interval > 0) {
+                       if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+                               priv->pos_interval = interval;
+                       else
+                               priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+               } else {
+                       priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+               }
+
+               if (__get_started(object) == TRUE) {
+                       LOCATION_LOGD("[update_pos_interval]: update pos-interval while pos-tracking");
+                       g_return_if_fail(priv->mod->ops.set_position_update_interval);
+                       priv->mod->ops.set_position_update_interval(priv->mod->handler, priv->pos_interval);
+               }
+               break;
+       }
        case PROP_VEL_INTERVAL: {
-                               guint interval = g_value_get_uint(value);
-                               LOCATION_LOGD("Set prop>> PROP_VEL_INTERVAL: %u", interval);
-                               if (interval == priv->vel_interval) break;
-
-                               if (interval > 0) {
-                                       if (interval < LOCATION_UPDATE_INTERVAL_MAX)
-                                               priv->vel_interval = interval;
-                                       else
-                                               priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
-                               } else
-                                       priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
-
-                               break;
-                       }
+               guint interval = g_value_get_uint(value);
+               LOCATION_LOGD("Set prop>> PROP_VEL_INTERVAL: %u", interval);
+               if (interval == priv->vel_interval) break;
+
+               if (interval > 0) {
+                       if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+                               priv->vel_interval = interval;
+                       else
+                               priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+               } else {
+                       priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+               }
+               break;
+       }
        case PROP_SAT_INTERVAL: {
-                               guint interval = g_value_get_uint(value);
-                               LOCATION_LOGD("Set prop>> PROP_SAT_INTERVAL: %u", interval);
-                               if (interval > 0) {
-                                       if (interval < LOCATION_UPDATE_INTERVAL_MAX)
-                                               priv->sat_interval = interval;
-                                       else
-                                               priv->sat_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
-                               } else
-                                       priv->sat_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
-
-                               break;
-                       }
+               guint interval = g_value_get_uint(value);
+               LOCATION_LOGD("Set prop>> PROP_SAT_INTERVAL: %u", interval);
+               if (interval > 0) {
+                       if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+                               priv->sat_interval = interval;
+                       else
+                               priv->sat_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+               } else {
+                       priv->sat_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+               }
+               break;
+       }
        case PROP_LOC_INTERVAL: {
-                               guint interval = g_value_get_uint(value);
-                               LOCATION_LOGD("Set prop>> PROP_LOC_INTERVAL: %u", interval);
-                               if (interval > 0) {
-                                       if (interval < LOCATION_UPDATE_INTERVAL_MAX)
-                                               priv->loc_interval = interval;
-                                       else
-                                               priv->loc_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
-                               } else
-                                       priv->loc_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
-
-                               break;
-                       }
+               guint interval = g_value_get_uint(value);
+               LOCATION_LOGD("Set prop>> PROP_LOC_INTERVAL: %u", interval);
+               if (interval > 0) {
+                       if (interval < LOCATION_UPDATE_INTERVAL_MAX)
+                               priv->loc_interval = interval;
+                       else
+                               priv->loc_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
+               } else {
+                       priv->loc_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+               }
+               break;
+       }
        case PROP_BATCH_INTERVAL: {
-                               guint interval = g_value_get_uint(value);
-                               LOCATION_LOGD("Set prop>> PROP_BATCH_INTERVAL: %u", interval);
-                               if (interval > 0) {
-                                       if (interval < LOCATION_BATCH_INTERVAL_MAX)
-                                               priv->batch_interval = interval;
-                                       else
-                                               priv->batch_interval = (guint)LOCATION_BATCH_INTERVAL_MAX;
-                               } else
-                                       priv->batch_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
-
-                               if (__get_started(object) == TRUE) {
-                                       LOCATION_LOGD("[update_batch_interval]: update batch-interval while pos-tracking");
-                                       g_return_if_fail(priv->mod->ops.set_position_update_interval);
-                                       priv->mod->ops.set_position_update_interval(priv->mod->handler, priv->batch_interval);
-                               }
-                               break;
-                       }
+               guint interval = g_value_get_uint(value);
+               LOCATION_LOGD("Set prop>> PROP_BATCH_INTERVAL: %u", interval);
+               if (interval > 0) {
+                       if (interval < LOCATION_BATCH_INTERVAL_MAX)
+                               priv->batch_interval = interval;
+                       else
+                               priv->batch_interval = (guint)LOCATION_BATCH_INTERVAL_MAX;
+               } else {
+                       priv->batch_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
+               }
+
+               if (__get_started(object) == TRUE) {
+                       LOCATION_LOGD("[update_batch_interval]: update batch-interval while pos-tracking");
+                       g_return_if_fail(priv->mod->ops.set_position_update_interval);
+                       priv->mod->ops.set_position_update_interval(priv->mod->handler, priv->batch_interval);
+               }
+               break;
+       }
        case PROP_BATCH_PERIOD: {
-                               guint interval = g_value_get_uint(value);
-                               LOCATION_LOGD("Set prop>> PROP_BATCH_PERIOD: %u", interval);
-                               if (interval > 0) {
-                                       if (interval < LOCATION_BATCH_PERIOD_MAX)
-                                               priv->batch_period = interval;
-                                       else
-                                               priv->batch_period = (guint)LOCATION_BATCH_PERIOD_MAX;
-                               } else
-                                       priv->batch_period = (guint)LOCATION_BATCH_PERIOD_DEFAULT;
-
-                               break;
-                       }
+               guint interval = g_value_get_uint(value);
+               LOCATION_LOGD("Set prop>> PROP_BATCH_PERIOD: %u", interval);
+               if (interval > 0) {
+                       if (interval < LOCATION_BATCH_PERIOD_MAX)
+                               priv->batch_period = interval;
+                       else
+                               priv->batch_period = (guint)LOCATION_BATCH_PERIOD_MAX;
+               } else {
+                       priv->batch_period = (guint)LOCATION_BATCH_PERIOD_DEFAULT;
+               }
+               break;
+       }
        case PROP_MIN_INTERVAL: {
-                               guint interval = g_value_get_uint(value);
-                               LOCATION_LOGD("Set prop>> PROP_MIN_INTERVAL: %u", interval);
-                               if (interval > 0) {
-                                       if (interval < LOCATION_MIN_INTERVAL_MAX)
-                                               priv->min_interval = interval;
-                                       else
-                                               priv->min_interval = (guint)LOCATION_MIN_INTERVAL_MAX;
-                               } else
-                                       priv->min_interval = (guint)LOCATION_MIN_INTERVAL_DEFAULT;
-
-                               break;
-                       }
+               guint interval = g_value_get_uint(value);
+               LOCATION_LOGD("Set prop>> PROP_MIN_INTERVAL: %u", interval);
+               if (interval > 0) {
+                       if (interval < LOCATION_MIN_INTERVAL_MAX)
+                               priv->min_interval = interval;
+                       else
+                               priv->min_interval = (guint)LOCATION_MIN_INTERVAL_MAX;
+               } else {
+                       priv->min_interval = (guint)LOCATION_MIN_INTERVAL_DEFAULT;
+               }
+               break;
+       }
        case PROP_MIN_DISTANCE: {
-                               gdouble distance = g_value_get_double(value);
-                               LOCATION_LOGD("Set prop>> PROP_MIN_DISTANCE: %u", distance);
-                               if (distance > 0) {
-                                       if (distance < LOCATION_MIN_DISTANCE_MAX)
-                                               priv->min_distance = distance;
-                                       else
-                                               priv->min_distance = (gdouble)LOCATION_MIN_DISTANCE_MAX;
-                               } else
-                                       priv->min_distance = (gdouble)LOCATION_MIN_DISTANCE_DEFAULT;
-
-                               break;
-                       }
+               gdouble distance = g_value_get_double(value);
+               LOCATION_LOGD("Set prop>> PROP_MIN_DISTANCE: %u", distance);
+               if (distance > 0) {
+                       if (distance < LOCATION_MIN_DISTANCE_MAX)
+                               priv->min_distance = distance;
+                       else
+                               priv->min_distance = (gdouble)LOCATION_MIN_DISTANCE_MAX;
+               } else {
+                       priv->min_distance = (gdouble)LOCATION_MIN_DISTANCE_DEFAULT;
+               }
+
+               break;
+       }
        case PROP_SERVICE_STATUS: {
-                               gint enabled = g_value_get_int(value);
-                               LOCATION_LOGD("Set prop>> PROP_SERVICE_STATUS: %u", enabled);
-                               priv->enabled = enabled;
-                               break;
-                       }
+               gint enabled = g_value_get_int(value);
+               LOCATION_LOGD("Set prop>> PROP_SERVICE_STATUS: %u", enabled);
+               priv->enabled = enabled;
+               break;
+       }
        default:
-                       G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
-                       break;
+               G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
+               break;
        }
 }
 
@@ -762,29 +770,29 @@ static void location_gps_get_property(GObject *object, guint property_id, GValue
                g_value_set_pointer(value, g_list_first(priv->boundary_list));
                break;
        case PROP_NMEA: {
-                       char *nmea_data = NULL;
-                       if (ops.get_nmea && LOCATION_ERROR_NONE == ops.get_nmea(priv->mod->handler, &nmea_data) && nmea_data) {
-                               LOCATION_SECLOG("Get prop>> Lastest nmea: \n%s", nmea_data);
-                               g_value_set_string(value, nmea_data);
-                               g_free(nmea_data);
-                       } else {
-                               LOCATION_LOGW("Get prop>> Lastest nmea: failed");
-                               g_value_set_string(value, NULL);
-                       }
-                       break;
+               char *nmea_data = NULL;
+               if (ops.get_nmea && LOCATION_ERROR_NONE == ops.get_nmea(priv->mod->handler, &nmea_data) && nmea_data) {
+                       LOCATION_SECLOG("Get prop>> Lastest nmea: \n%s", nmea_data);
+                       g_value_set_string(value, nmea_data);
+                       g_free(nmea_data);
+               } else {
+                       LOCATION_LOGW("Get prop>> Lastest nmea: failed");
+                       g_value_set_string(value, NULL);
                }
+               break;
+       }
        case PROP_SATELLITE: {
-                       LocationSatellite *satellite = NULL;
-                       if (ops.get_satellite && priv->mod->handler && LOCATION_ERROR_NONE == ops.get_satellite(priv->mod->handler, &satellite) && satellite) {
-                               LOCATION_LOGD("Get prop>> Last sat: num_used(%d) num_view(%d)", satellite->num_of_sat_used, satellite->num_of_sat_inview);
-                               g_value_set_boxed(value, satellite);
-                               location_satellite_free(satellite);
-                       } else {
-                               LOCATION_LOGW("Get prop>> Last sat: failed");
-                               g_value_set_boxed(value, NULL);
-                       }
-                       break;
+               LocationSatellite *satellite = NULL;
+               if (ops.get_satellite && priv->mod->handler && LOCATION_ERROR_NONE == ops.get_satellite(priv->mod->handler, &satellite) && satellite) {
+                       LOCATION_LOGD("Get prop>> Last sat: num_used(%d) num_view(%d)", satellite->num_of_sat_used, satellite->num_of_sat_inview);
+                       g_value_set_boxed(value, satellite);
+                       location_satellite_free(satellite);
+               } else {
+                       LOCATION_LOGW("Get prop>> Last sat: failed");
+                       g_value_set_boxed(value, NULL);
                }
+               break;
+       }
        case PROP_SERVICE_STATUS:
                g_value_set_int(value, priv->enabled);
                break;
@@ -1063,6 +1071,46 @@ static int location_gps_set_option(LocationGps *self, const char *option)
        return ret;
 }
 
+static int
+location_gps_set_mock_location(LocationGps *self, LocationPosition *position, LocationVelocity *velocity, LocationAccuracy *accuracy)
+{
+       LOC_FUNC_LOG
+       LocationGpsPrivate *priv = GET_PRIVATE(self);
+       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+       g_return_val_if_fail(priv->mod->ops.set_mock_location, LOCATION_ERROR_NOT_AVAILABLE);
+
+       int ret = LOCATION_ERROR_NONE;
+       if (!location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED)) {
+               ret = LOCATION_ERROR_SETTING_OFF;
+       } else {
+               ret = priv->mod->ops.set_mock_location(priv->mod->handler, position, velocity, accuracy, NULL, self);
+               LOC_IF_FAIL_LOG(ret, _E, "Failed to set_mock_location [%s]", err_msg(ret));
+               priv->is_mock = TRUE;
+       }
+
+       return ret;
+}
+
+static int
+location_gps_clear_mock_location(LocationGps *self)
+{
+       LOC_FUNC_LOG
+       LocationGpsPrivate *priv = GET_PRIVATE(self);
+       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+       g_return_val_if_fail(priv->mod->ops.clear_mock_location, LOCATION_ERROR_NOT_AVAILABLE);
+
+       int ret = LOCATION_ERROR_NONE;
+       if (!location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED)) {
+               ret = LOCATION_ERROR_SETTING_OFF;
+       } else {
+               ret = priv->mod->ops.clear_mock_location(priv->mod->handler, NULL, self);
+               LOC_IF_FAIL_LOG(ret, _E, "Failed to clear_mock_location [%s]", err_msg(ret));
+               priv->is_mock = FALSE;
+       }
+
+       return ret;
+}
+
 static void location_ielement_interface_init(LocationIElementInterface *iface)
 {
        iface->start = (TYPE_START_FUNC)location_gps_start;
@@ -1079,10 +1127,10 @@ static void location_ielement_interface_init(LocationIElementInterface *iface)
        iface->get_batch = (TYPE_GET_BATCH)location_gps_get_batch;
        iface->start_batch = (TYPE_START_BATCH)location_gps_start_batch;
        iface->stop_batch = (TYPE_STOP_BATCH)location_gps_stop_batch;
-
        iface->request_single_location = (TYPE_REQUEST_SINGLE_LOCATION)location_gps_request_single_location;
        iface->get_nmea = (TYPE_GET_NMEA)location_gps_get_nmea;
-
+       iface->set_mock_location = (TYPE_SET_MOCK_LOCATION) location_gps_set_mock_location;
+       iface->clear_mock_location = (TYPE_CLEAR_MOCK_LOCATION) location_gps_clear_mock_location;
 }
 
 static void location_gps_init(LocationGps *self)
@@ -1097,6 +1145,7 @@ static void location_gps_init(LocationGps *self)
        g_mutex_init(&priv->mutex);
        priv->is_started = FALSE;
        priv->is_batch_invoked = FALSE;
+       priv->is_mock = FALSE;
        priv->set_noti = FALSE;
        priv->enabled = FALSE;
        priv->signal_type = 0;
@@ -1144,213 +1193,132 @@ static void location_gps_class_init(LocationGpsClass *klass)
 
        g_type_class_add_private(klass, sizeof(LocationGpsPrivate));
 
-       signals[SERVICE_ENABLED] = g_signal_new("service-enabled",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationGpsClass, enabled),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__UINT,
-                                                                                       G_TYPE_NONE, 1,
-                                                                                       G_TYPE_UINT);
-
-       signals[SERVICE_DISABLED] = g_signal_new("service-disabled",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationGpsClass, disabled),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__UINT,
-                                                                                       G_TYPE_NONE, 1,
-                                                                                       G_TYPE_UINT);
+       signals[SERVICE_ENABLED] =
+                       g_signal_new("service-enabled", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationGpsClass, enabled),
+                       NULL, NULL, location_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT);
+
+       signals[SERVICE_DISABLED] =
+                       g_signal_new("service-disabled", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationGpsClass, disabled),
+                       NULL, NULL, location_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT);
 
 #if 0 /* TODO: STATUS_CHANGED will aggregate SERVICE_ENABLED and SERVICE_DISABLED */
-       signals[STATUS_CHANGED] = g_signal_new("status-changed",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationGpsClass, status_changed),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__UINT,
-                                                                                       G_TYPE_NONE, 1,
-                                                                                       G_TYPE_UINT);
+       signals[STATUS_CHANGED] =
+                       g_signal_new("status-changed", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationGpsClass, status_changed),
+                       NULL, NULL, location_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT);
 #endif
 
-       signals[SERVICE_UPDATED] = g_signal_new("service-updated",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationGpsClass, service_updated),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__INT_POINTER_POINTER_POINTER,
-                                                                                       G_TYPE_NONE, 4,
-                                                                                       G_TYPE_INT,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER);
-
-       signals[LOCATION_UPDATED] = g_signal_new("location-updated",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationGpsClass, location_updated),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__INT_POINTER_POINTER_POINTER,
-                                                                                       G_TYPE_NONE, 4,
-                                                                                       G_TYPE_INT,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER);
-
-       signals[BATCH_UPDATED] = g_signal_new("batch-updated",
-                                                                               G_TYPE_FROM_CLASS(klass),
-                                                                               G_SIGNAL_RUN_FIRST |
-                                                                               G_SIGNAL_NO_RECURSE,
-                                                                               G_STRUCT_OFFSET(LocationGpsClass, batch_updated),
-                                                                               NULL, NULL,
-                                                                               location_VOID__UINT,
-                                                                               G_TYPE_NONE, 1,
-                                                                               G_TYPE_UINT);
-
-       signals[ZONE_IN] = g_signal_new("zone-in",
-                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                       G_SIGNAL_RUN_FIRST |
-                                                                       G_SIGNAL_NO_RECURSE,
-                                                                       G_STRUCT_OFFSET(LocationGpsClass, zone_in),
-                                                                       NULL, NULL,
-                                                                       location_VOID__POINTER_POINTER_POINTER,
-                                                                       G_TYPE_NONE, 3,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER);
-
-       signals[ZONE_OUT] = g_signal_new("zone-out",
-                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                       G_SIGNAL_RUN_FIRST |
-                                                                       G_SIGNAL_NO_RECURSE,
-                                                                       G_STRUCT_OFFSET(LocationGpsClass, zone_out),
-                                                                       NULL, NULL,
-                                                                       location_VOID__POINTER_POINTER_POINTER,
-                                                                       G_TYPE_NONE, 3,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER);
-
-       properties[PROP_METHOD_TYPE] = g_param_spec_int("method",
-                                                                                                       "method type",
-                                                                                                       "location method type name",
-                                                                                                       LOCATION_METHOD_GPS,
-                                                                                                       LOCATION_METHOD_GPS,
-                                                                                                       LOCATION_METHOD_GPS,
-                                                                                                       G_PARAM_READABLE);
-
-       properties[PROP_IS_STARTED] = g_param_spec_boolean("is_started",
-                                                                                                               "gps is started prop",
-                                                                                                               "gps is started status",
-                                                                                                               FALSE,
-                                                                                                               G_PARAM_READWRITE);
-
-       properties[PROP_LAST_POSITION] = g_param_spec_boxed("last-position",
-                                                                                                               "gps last position prop",
-                                                                                                               "gps last position data",
-                                                                                                               LOCATION_TYPE_POSITION,
-                                                                                                               G_PARAM_READABLE);
-
-       properties[PROP_POS_INTERVAL] = g_param_spec_uint("pos-interval",
-                                                                                                       "gps position interval prop",
-                                                                                                       "gps position interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_VEL_INTERVAL] = g_param_spec_uint("vel-interval",
-                                                                                                       "gps velocity interval prop",
-                                                                                                       "gps velocity interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_SAT_INTERVAL] = g_param_spec_uint("sat-interval",
-                                                                                                       "gps satellite interval prop",
-                                                                                                       "gps satellite interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_LOC_INTERVAL] = g_param_spec_uint("loc-interval",
-                                                                                                       "gps location interval prop",
-                                                                                                       "gps location interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_BATCH_INTERVAL] = g_param_spec_uint("batch-interval",
-                                                                                                               "gps batch interval interval prop",
-                                                                                                               "gps batch interval interval data",
-                                                                                                               LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                               LOCATION_BATCH_INTERVAL_MAX,
-                                                                                                               LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                               G_PARAM_READWRITE);
-
-       properties[PROP_BATCH_PERIOD] = g_param_spec_uint("batch-period",
-                                                                                                       "gps batch period prop",
-                                                                                                       "gps batch period data",
-                                                                                                       LOCATION_BATCH_PERIOD_MIN,
-                                                                                                       LOCATION_BATCH_PERIOD_MAX,
-                                                                                                       LOCATION_BATCH_PERIOD_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_MIN_INTERVAL] = g_param_spec_uint("min-interval",
-                                                                                                       "gps distance-based interval prop",
-                                                                                                       "gps distance-based interval data",
-                                                                                                       LOCATION_MIN_INTERVAL_MIN,
-                                                                                                       LOCATION_MIN_INTERVAL_MAX,
-                                                                                                       LOCATION_MIN_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_MIN_DISTANCE] = g_param_spec_double("min-distance",
-                                                                                                               "gps distance-based distance prop",
-                                                                                                               "gps distance-based distance data",
-                                                                                                               LOCATION_MIN_DISTANCE_MIN,
-                                                                                                               LOCATION_MIN_DISTANCE_MAX,
-                                                                                                               LOCATION_MIN_DISTANCE_DEFAULT,
-                                                                                                               G_PARAM_READWRITE);
-
-       properties[PROP_BOUNDARY] = g_param_spec_pointer("boundary",
-                                                                                                       "gps boundary prop",
-                                                                                                       "gps boundary data",
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_REMOVAL_BOUNDARY] = g_param_spec_boxed("removal-boundary",
-                                                                                                                       "gps removal boundary prop",
-                                                                                                                       "gps removal boundary data",
-                                                                                                                       LOCATION_TYPE_BOUNDARY,
-                                                                                                                       G_PARAM_READWRITE);
-
-
-       properties[PROP_NMEA] = g_param_spec_string("nmea",
-                                                                                               "gps NMEA name prop",
-                                                                                               "gps NMEA",
-                                                                                               NULL,
-                                                                                               G_PARAM_READABLE);
-
-       properties[PROP_SATELLITE] = g_param_spec_boxed("satellite",
-                                                                                                       "gps satellite prop",
-                                                                                                       "gps satellite data",
-                                                                                                       LOCATION_TYPE_SATELLITE,
-                                                                                                       G_PARAM_READABLE);
-
-       /* Tizen 3.0 */
-       properties[PROP_SERVICE_STATUS] = g_param_spec_int("service-status",
-                                                                                                       "location service status prop",
-                                                                                                       "location service status data",
-                                                                                                       LOCATION_STATUS_NO_FIX,
-                                                                                                       LOCATION_STATUS_3D_FIX,
-                                                                                                       LOCATION_STATUS_NO_FIX,
-                                                                                                       G_PARAM_READABLE);
+       signals[SERVICE_UPDATED] =
+                       g_signal_new("service-updated", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationGpsClass, service_updated),
+                       NULL, NULL, location_VOID__INT_POINTER_POINTER_POINTER,
+                       G_TYPE_NONE, 4, G_TYPE_INT, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+
+       signals[LOCATION_UPDATED] =
+                       g_signal_new("location-updated", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationGpsClass, location_updated),
+                       NULL, NULL, location_VOID__INT_POINTER_POINTER_POINTER,
+                       G_TYPE_NONE, 4, G_TYPE_INT, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+
+       signals[BATCH_UPDATED] =
+                       g_signal_new("batch-updated", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationGpsClass, batch_updated),
+                       NULL, NULL, location_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT);
+
+       signals[ZONE_IN] =
+                       g_signal_new("zone-in", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationGpsClass, zone_in),
+                       NULL, NULL, location_VOID__POINTER_POINTER_POINTER,
+                       G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+
+       signals[ZONE_OUT] =
+                       g_signal_new("zone-out", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationGpsClass, zone_out),
+                       NULL, NULL, location_VOID__POINTER_POINTER_POINTER,
+                       G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+
+       properties[PROP_METHOD_TYPE] =
+                       g_param_spec_int("method", "method type", "location method type name",
+                       LOCATION_METHOD_GPS, LOCATION_METHOD_GPS, LOCATION_METHOD_GPS, G_PARAM_READABLE);
+
+       properties[PROP_IS_STARTED] =
+                       g_param_spec_boolean("is_started", "gps is started prop",
+                       "gps is started status", FALSE, G_PARAM_READWRITE);
+
+       properties[PROP_LAST_POSITION] =
+                       g_param_spec_boxed("last-position", "gps last position prop",
+                       "gps last position data", LOCATION_TYPE_POSITION, G_PARAM_READABLE);
+
+       properties[PROP_POS_INTERVAL] =
+                       g_param_spec_uint("pos-interval", "gps position interval prop",
+                       "gps position interval data", LOCATION_UPDATE_INTERVAL_MIN,
+                       LOCATION_UPDATE_INTERVAL_MAX, LOCATION_UPDATE_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_VEL_INTERVAL] =
+                       g_param_spec_uint("vel-interval", "gps velocity interval prop",
+                       "gps velocity interval data", LOCATION_UPDATE_INTERVAL_MIN,
+                       LOCATION_UPDATE_INTERVAL_MAX, LOCATION_UPDATE_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_SAT_INTERVAL] =
+                       g_param_spec_uint("sat-interval", "gps satellite interval prop",
+                       "gps satellite interval data", LOCATION_UPDATE_INTERVAL_MIN,
+                       LOCATION_UPDATE_INTERVAL_MAX, LOCATION_UPDATE_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_LOC_INTERVAL] =
+                       g_param_spec_uint("loc-interval", "gps location interval prop",
+                       "gps location interval data", LOCATION_UPDATE_INTERVAL_MIN,
+                       LOCATION_UPDATE_INTERVAL_MAX, LOCATION_UPDATE_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_BATCH_INTERVAL] =
+                       g_param_spec_uint("batch-interval", "gps batch interval interval prop",
+                       "gps batch interval interval data", LOCATION_UPDATE_INTERVAL_MIN,
+                       LOCATION_BATCH_INTERVAL_MAX, LOCATION_UPDATE_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_BATCH_PERIOD] =
+                       g_param_spec_uint("batch-period", "gps batch period prop",
+                       "gps batch period data", LOCATION_BATCH_PERIOD_MIN,
+                       LOCATION_BATCH_PERIOD_MAX, LOCATION_BATCH_PERIOD_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_MIN_INTERVAL] =
+                       g_param_spec_uint("min-interval", "gps distance-based interval prop",
+                       "gps distance-based interval data", LOCATION_MIN_INTERVAL_MIN,
+                       LOCATION_MIN_INTERVAL_MAX, LOCATION_MIN_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_MIN_DISTANCE] =
+                       g_param_spec_double("min-distance", "gps distance-based distance prop",
+                       "gps distance-based distance data", LOCATION_MIN_DISTANCE_MIN,
+                       LOCATION_MIN_DISTANCE_MAX, LOCATION_MIN_DISTANCE_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_BOUNDARY] =
+                       g_param_spec_pointer("boundary", "gps boundary prop",
+                       "gps boundary data", G_PARAM_READWRITE);
+
+       properties[PROP_REMOVAL_BOUNDARY] =
+                       g_param_spec_boxed("removal-boundary", "gps removal boundary prop",
+                       "gps removal boundary data", LOCATION_TYPE_BOUNDARY, G_PARAM_READWRITE);
+
+       properties[PROP_NMEA] =
+                       g_param_spec_string("nmea", "gps NMEA name prop", "gps NMEA",
+                       NULL, G_PARAM_READABLE);
+
+       properties[PROP_SATELLITE] =
+                       g_param_spec_boxed("satellite", "gps satellite prop",
+                       "gps satellite data", LOCATION_TYPE_SATELLITE, G_PARAM_READABLE);
+
+       properties[PROP_SERVICE_STATUS] =
+                       g_param_spec_int("service-status", "location service status prop",
+                       "location service status data", LOCATION_STATUS_NO_FIX,
+                       LOCATION_STATUS_3D_FIX, LOCATION_STATUS_NO_FIX, G_PARAM_READABLE);
+
        g_object_class_install_properties(gobject_class, PROP_MAX, properties);
 }
index fdb428a..2489f07 100755 (executable)
@@ -36,8 +36,6 @@
 
 #include "location-gps.h"
 #include "location-wps.h"
-/* Tizen 3.0 */
-#include "location-mock.h"
 
 typedef struct _LocationHybridPrivate {
        gboolean                gps_enabled;
@@ -66,10 +64,6 @@ typedef struct _LocationHybridPrivate {
        gboolean                set_noti;
        guint                   pos_timer;
        guint                   vel_timer;
-
-       /* Tizen 3.0 */
-       gboolean                mock_enabled;
-       LocationObject  *mock;
 } LocationHybridPrivate;
 
 enum {
@@ -114,8 +108,6 @@ hybrid_set_current_method(LocationHybridPrivate *priv, GType g_type)
                priv->current_method = LOCATION_METHOD_GPS;
        else if (g_type == LOCATION_TYPE_WPS)
                priv->current_method = LOCATION_METHOD_WPS;
-       else if (g_type == LOCATION_TYPE_MOCK)
-               priv->current_method = LOCATION_METHOD_MOCK;
        else if (g_type == LOCATION_TYPE_HYBRID)
                priv->current_method = LOCATION_METHOD_HYBRID;
        else
@@ -127,15 +119,13 @@ hybrid_set_current_method(LocationHybridPrivate *priv, GType g_type)
 static int
 hybrid_get_update_method(LocationHybridPrivate *priv)
 {
-       if (!priv->gps && !priv->wps & !priv->mock)
+       if (!priv->gps && !priv->wps)
                return -1;
 
        if (priv->gps_enabled)
                hybrid_set_current_method(priv, LOCATION_TYPE_GPS);
        else if (priv->wps_enabled)
                hybrid_set_current_method(priv, LOCATION_TYPE_WPS);
-       else if (priv->mock_enabled)
-               hybrid_set_current_method(priv, LOCATION_TYPE_MOCK);
        else
                hybrid_set_current_method(priv, LOCATION_TYPE_HYBRID);
 
@@ -167,21 +157,12 @@ hybrid_get_current_object(LocationHybridPrivate *priv)
 static gboolean        /* True : Receive more accurate info. False : Receive less accurate info */
 hybrid_compare_g_type_method(LocationHybridPrivate *priv, GType g_type)
 {
-       if (location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED) == 1 &&
-               location_setting_get_int(VCONFKEY_LOCATION_MOCK_STATE) == VCONFKEY_LOCATION_POSITION_CONNECTED) {
-               if (g_type == LOCATION_TYPE_MOCK) {
-                       hybrid_set_current_method(priv, LOCATION_TYPE_MOCK);
-                       return TRUE;
-               }
-       } else {
-               if (g_type == LOCATION_TYPE_GPS) {
-                       hybrid_set_current_method(priv, LOCATION_TYPE_GPS);
-                       return TRUE;
-               } else if (g_type == LOCATION_TYPE_WPS &&
-                       (hybrid_get_current_method(priv) == LOCATION_METHOD_WPS || hybrid_get_current_method(priv) == LOCATION_METHOD_MOCK)) {
-                       hybrid_set_current_method(priv, LOCATION_TYPE_WPS);
-                       return TRUE;
-               }
+       if (g_type == LOCATION_TYPE_GPS) {
+               hybrid_set_current_method(priv, LOCATION_TYPE_GPS);
+               return TRUE;
+       } else if (g_type == LOCATION_TYPE_WPS && hybrid_get_current_method(priv) == LOCATION_METHOD_WPS) {
+               hybrid_set_current_method(priv, LOCATION_TYPE_WPS);
+               return TRUE;
        }
        return FALSE;
 }
@@ -315,12 +296,12 @@ hybrid_service_updated(GObject *obj, gint type, gpointer data, gpointer velocity
        int ret = LOCATION_ERROR_NONE;
 
        if (type == SATELLITE_UPDATED) {
-               sat = (LocationSatellite *)data;
+               sat = (LocationSatellite *) data;
                if (!sat->timestamp) return;
        } else {
-               pos = (LocationPosition *)data;
-               vel = (LocationVelocity *)velocity;
-               acc = (LocationAccuracy *)accuracy;
+               pos = (LocationPosition *) data;
+               vel = (LocationVelocity *) velocity;
+               acc = (LocationAccuracy *) accuracy;
                if (!pos->timestamp) return;
                if (!vel->timestamp) return;
        }
@@ -333,7 +314,8 @@ hybrid_service_updated(GObject *obj, gint type, gpointer data, gpointer velocity
                if (type == SATELLITE_UPDATED) {
                        satellite_signaling(self, signals, &(priv->enabled), priv->sat_interval, TRUE, &(priv->sat_updated_timestamp), &(priv->sat), sat);
                        return;
-               } else if (location_setting_get_int(VCONFKEY_LOCATION_GPS_STATE) == VCONFKEY_LOCATION_GPS_SEARCHING) {
+               } else if (location_setting_get_int(VCONFKEY_LOCATION_GPS_STATE) == VCONFKEY_LOCATION_GPS_SEARCHING
+                                        && location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED) == 0) {
                        LOCATION_LOGD("Searching GPS");
 
                        /* restart WPS when GPS not available */
@@ -421,8 +403,6 @@ hybrid_service_enabled(GObject *obj, guint status, gpointer self)
                priv->gps_enabled = TRUE;
        } else if (g_type == LOCATION_TYPE_WPS) {
                priv->wps_enabled = TRUE;
-       } else if (g_type == LOCATION_TYPE_MOCK) {
-               priv->mock_enabled = TRUE;
        } else {
                LOCATION_LOGW("Undefined GType enabled");
                return;
@@ -441,21 +421,14 @@ hybrid_service_disabled(GObject *obj, guint status, gpointer self)
                priv->gps_enabled = FALSE;
        } else if (g_type == LOCATION_TYPE_WPS) {
                priv->wps_enabled = FALSE;
-       } else if (g_type == LOCATION_TYPE_MOCK) {
-               priv->mock_enabled = FALSE;
        } else {
                LOCATION_LOGW("Undefined GType disabled");
                return;
        }
        hybrid_get_update_method(priv);
+       if (!priv->gps_enabled && !priv->wps_enabled)
+               enable_signaling(self, signals, &(priv->enabled), FALSE, status);
 
-       if (location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED) == 1) {
-               if (!priv->gps_enabled && !priv->wps_enabled && !priv->mock_enabled)
-                       enable_signaling(self, signals, &(priv->enabled), FALSE, status);
-       } else {
-               if (!priv->gps_enabled && !priv->wps_enabled)
-                       enable_signaling(self, signals, &(priv->enabled), FALSE, status);
-       }
 }
 
 #if 0
@@ -474,8 +447,6 @@ hybrid_status_changed(GObject *obj, guint status, gpointer self)
                                priv->gps_enabled = FALSE;
                        } else if (g_type == LOCATION_TYPE_WPS) {
                                priv->wps_enabled = FALSE;
-                       } else if (g_type == LOCATION_TYPE_MOCK) {
-                               priv->mock_enabled = FALSE;
                        } else {
                                LOCATION_LOGW("Undefined GType disabled");
                                return;
@@ -491,8 +462,6 @@ hybrid_status_changed(GObject *obj, guint status, gpointer self)
                                priv->gps_enabled = TRUE;
                        } else if (g_type == LOCATION_TYPE_WPS) {
                                priv->wps_enabled = TRUE;
-                       } else if (g_type == LOCATION_TYPE_MOCK) {
-                               priv->mock_enabled = TRUE;
                        } else {
                                LOCATION_LOGW("Undefined GType enabled");
                                return;
@@ -501,21 +470,6 @@ hybrid_status_changed(GObject *obj, guint status, gpointer self)
                        break;
 
        case LOCATION_STATUS_MOCK_SET:
-                       LOCATION_LOGD("Succeeded set mock location!!!");
-                       break;
-
-       case LOCATION_STATUS_MOCK_FAIL:
-                       if (g_type == LOCATION_TYPE_GPS) {
-                               priv->gps_enabled = FALSE;
-                       } else if (g_type == LOCATION_TYPE_WPS) {
-                               priv->wps_enabled = FALSE;
-                       } else {
-                               LOCATION_LOGW("Undefined GType disabled");
-                               return;
-                       }
-                       hybrid_get_update_method(priv);
-                       if (!priv->gps_enabled && !priv->wps_enabled)
-                               enable_signaling(self, signals, &(priv->enabled), FALSE, status);
                        break;
 
        default:
@@ -533,10 +487,8 @@ location_hybrid_start(LocationHybrid *self)
 
        int ret_gps = LOCATION_ERROR_NONE;
        int ret_wps = LOCATION_ERROR_NONE;
-       int ret_mock = LOCATION_ERROR_NONE;
        gboolean gps_started = FALSE;
        gboolean wps_started = FALSE;
-       gboolean mock_started = FALSE;
 
        LocationHybridPrivate *priv = GET_PRIVATE(self);
        g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
@@ -544,24 +496,22 @@ location_hybrid_start(LocationHybrid *self)
 
        if (priv->gps) g_object_get(priv->gps, "is_started", &gps_started, NULL);
        if (priv->wps) g_object_get(priv->wps, "is_started", &wps_started, NULL);
-       if (priv->mock) g_object_get(priv->mock, "is_started", &mock_started, NULL);
 
-       if ((gps_started == TRUE) || (wps_started == TRUE) || (mock_started == TRUE)) {
+       if ((gps_started == TRUE) || (wps_started == TRUE)) {
                LOCATION_LOGD("Already started");
                return LOCATION_ERROR_NONE;
        }
 
        if (priv->gps) ret_gps = location_start(priv->gps);
        if (priv->wps) ret_wps = location_start(priv->wps);
-       if (priv->mock) ret_mock = location_start(priv->mock);
 
-       if (ret_gps != LOCATION_ERROR_NONE && ret_wps != LOCATION_ERROR_NONE && ret_mock != LOCATION_ERROR_NONE) {
-               LOCATION_LOGD("ret_gps = %d, ret_wps = %d, ret_mock = %d", ret_gps, ret_wps, ret_mock);
-               if (ret_gps == LOCATION_ERROR_SECURITY_DENIED || ret_wps == LOCATION_ERROR_SECURITY_DENIED || ret_mock == LOCATION_ERROR_SECURITY_DENIED)
+       if (ret_gps != LOCATION_ERROR_NONE && ret_wps != LOCATION_ERROR_NONE) {
+               LOCATION_LOGD("ret_gps = %d, ret_wps = %d", ret_gps, ret_wps);
+               if (ret_gps == LOCATION_ERROR_SECURITY_DENIED || ret_wps == LOCATION_ERROR_SECURITY_DENIED)
                        return LOCATION_ERROR_SECURITY_DENIED;
-               else if (ret_gps == LOCATION_ERROR_SETTING_OFF || ret_wps == LOCATION_ERROR_SETTING_OFF || ret_mock == LOCATION_ERROR_SETTING_OFF)
+               else if (ret_gps == LOCATION_ERROR_SETTING_OFF || ret_wps == LOCATION_ERROR_SETTING_OFF)
                        return LOCATION_ERROR_SETTING_OFF;
-               else if (ret_gps == LOCATION_ERROR_NOT_ALLOWED || ret_wps == LOCATION_ERROR_NOT_ALLOWED || ret_mock == LOCATION_ERROR_NOT_ALLOWED)
+               else if (ret_gps == LOCATION_ERROR_NOT_ALLOWED || ret_wps == LOCATION_ERROR_NOT_ALLOWED)
                        return LOCATION_ERROR_NOT_ALLOWED;
                else
                        return LOCATION_ERROR_NOT_AVAILABLE;
@@ -587,23 +537,19 @@ location_hybrid_stop(LocationHybrid *self)
 
        int ret_gps = LOCATION_ERROR_NOT_AVAILABLE;
        int ret_wps = LOCATION_ERROR_NOT_AVAILABLE;
-       int ret_mock = LOCATION_ERROR_NOT_AVAILABLE;
        gboolean gps_started = FALSE;
        gboolean wps_started = FALSE;
-       gboolean mock_started = FALSE;
 
        if (priv->gps) g_object_get(priv->gps, "is_started", &gps_started, NULL);
        if (priv->wps) g_object_get(priv->wps, "is_started", &wps_started, NULL);
-       if (priv->mock) g_object_get(priv->mock, "is_started", &mock_started, NULL);
 
-       if ((gps_started == FALSE) && (wps_started == FALSE) && (mock_started == FALSE))
+       if ((gps_started == FALSE) && (wps_started == FALSE))
                return LOCATION_ERROR_NONE;
 
        if (priv->gps) ret_gps = location_stop(priv->gps);
        if (priv->wps) ret_wps = location_stop(priv->wps);
-       if (priv->mock) ret_mock = location_stop(priv->mock);
 
-       if (ret_gps != LOCATION_ERROR_NONE && ret_wps != LOCATION_ERROR_NONE && ret_mock != LOCATION_ERROR_NONE)
+       if (ret_gps != LOCATION_ERROR_NONE && ret_wps != LOCATION_ERROR_NONE)
                return LOCATION_ERROR_NOT_AVAILABLE;
 
        if (priv->pos_timer) g_source_remove(priv->pos_timer);
@@ -618,7 +564,6 @@ location_hybrid_stop(LocationHybrid *self)
 
        priv->gps_enabled = FALSE;
        priv->wps_enabled = FALSE;
-       priv->mock_enabled = FALSE;
 
        return LOCATION_ERROR_NONE;
 }
@@ -667,15 +612,6 @@ location_hybrid_finalize(GObject *gobject)
                location_free(priv->wps);
        }
 
-       if (priv->mock) {
-               g_signal_handlers_disconnect_by_func(priv->mock, G_CALLBACK(hybrid_service_enabled), gobject);
-               g_signal_handlers_disconnect_by_func(priv->mock, G_CALLBACK(hybrid_service_disabled), gobject);
-               /* g_signal_handlers_disconnect_by_func(priv->mock, G_CALLBACK(hybrid_status_changed), gobject); */
-               g_signal_handlers_disconnect_by_func(priv->mock, G_CALLBACK(hybrid_service_updated), gobject);
-               g_signal_handlers_disconnect_by_func(priv->mock, G_CALLBACK(hybrid_location_updated), gobject);
-               location_free(priv->mock);
-       }
-
        if (priv->boundary_list) {
                g_list_free_full(priv->boundary_list, free_boundary_list);
                priv->boundary_list = NULL;
@@ -983,25 +919,17 @@ location_hybrid_get_last_position_ext(LocationHybrid *self, LocationPosition **p
        LOC_FUNC_LOG
 
        int ret = LOCATION_ERROR_NONE;
-       LocationPosition *gps_pos = NULL, *wps_pos = NULL, *mock_pos = NULL;
-       LocationVelocity *gps_vel = NULL, *wps_vel = NULL, *mock_vel = NULL;
-       LocationAccuracy *gps_acc = NULL, *wps_acc = NULL, *mock_acc = NULL;
+       LocationPosition *gps_pos = NULL, *wps_pos = NULL;
+       LocationVelocity *gps_vel = NULL, *wps_vel = NULL;
+       LocationAccuracy *gps_acc = NULL, *wps_acc = NULL;
        LocationHybridPrivate *priv = GET_PRIVATE(self);
        g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
 
        if (priv->gps) location_get_last_position_ext(priv->gps, &gps_pos, &gps_vel, &gps_acc);
        if (priv->wps) location_get_last_position_ext(priv->wps, &wps_pos, &wps_vel, &wps_acc);
-       if (priv->mock) location_get_last_position_ext(priv->mock, &mock_pos, &mock_vel, &mock_acc);
 
        if (gps_pos && wps_pos && gps_vel && wps_vel) {
-               if (mock_pos && mock_vel && mock_pos->timestamp > gps_pos->timestamp) {
-                       *position = mock_pos;
-                       *velocity = mock_vel;
-                       *accuracy = mock_acc;
-                       location_position_free(mock_pos);
-                       location_velocity_free(mock_vel);
-                       location_accuracy_free(mock_acc);
-               } else if (wps_pos->timestamp > gps_pos->timestamp) {
+               if (wps_pos->timestamp > gps_pos->timestamp) {
                        *position = wps_pos;
                        *velocity = wps_vel;
                        *accuracy = wps_acc;
@@ -1021,9 +949,9 @@ location_hybrid_get_last_position_ext(LocationHybrid *self, LocationPosition **p
                *velocity = gps_vel;
                *accuracy = gps_acc;
        } else if (wps_pos && wps_vel) {
-               *position = mock_pos;
-               *velocity = mock_vel;
-               *accuracy = mock_acc;
+               *position = wps_pos;
+               *velocity = wps_vel;
+               *accuracy = wps_acc;
        } else {
                ret = LOCATION_ERROR_NOT_AVAILABLE;
        }
@@ -1062,20 +990,14 @@ location_hybrid_get_last_velocity(LocationHybrid *self, LocationVelocity **veloc
        int ret = LOCATION_ERROR_NONE;
        LocationHybridPrivate *priv = GET_PRIVATE(self);
        g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-       LocationVelocity *gps_vel = NULL, *wps_vel = NULL, *mock_vel = NULL;
-       LocationAccuracy *gps_acc = NULL, *wps_acc = NULL, *mock_acc = NULL;
+       LocationVelocity *gps_vel = NULL, *wps_vel = NULL;
+       LocationAccuracy *gps_acc = NULL, *wps_acc = NULL;
 
        if (priv->gps) location_get_last_velocity(priv->gps, &gps_vel, &gps_acc);
        if (priv->wps) location_get_last_velocity(priv->wps, &wps_vel, &wps_acc);
-       if (priv->mock) location_get_last_velocity(priv->mock, &mock_vel, &mock_acc);
 
        if (gps_vel && wps_vel) {
-               if (mock_vel && mock_vel->timestamp > gps_vel->timestamp) {
-                       *velocity = mock_vel;
-                       *accuracy = mock_acc;
-                       location_velocity_free(mock_vel);
-                       location_accuracy_free(mock_acc);
-               } else if (wps_vel->timestamp > gps_vel->timestamp) {
+               if (wps_vel->timestamp > gps_vel->timestamp) {
                        *velocity = wps_vel;
                        *accuracy = wps_acc;
                        location_velocity_free(gps_vel);
@@ -1092,9 +1014,6 @@ location_hybrid_get_last_velocity(LocationHybrid *self, LocationVelocity **veloc
        } else if (wps_vel) {
                *velocity = wps_vel;
                *accuracy = wps_acc;
-       } else if (mock_vel) {
-               *velocity = mock_vel;
-               *accuracy = mock_acc;
        } else {
                *velocity = NULL;
                *accuracy = NULL;
@@ -1171,10 +1090,8 @@ location_hybrid_request_single_location(LocationHybrid *self, int timeout)
 
        if (priv->gps)
                ret = location_request_single_location(priv->gps, timeout);
-       else if (priv->wps)
+       else
                ret = location_request_single_location(priv->wps, timeout);
-       else if (priv->mock)
-               ret = location_request_single_location(priv->mock, timeout);
 
        return ret;
 }
@@ -1196,39 +1113,38 @@ location_hybrid_get_nmea(LocationHybrid *self, char **nmea_data)
        return LOCATION_ERROR_NONE;
 }
 
-/*
- * Tizen 3.0
- */
 static int
-location_hybrid_set_mock_location(LocationMock *self, LocationPosition *position, LocationVelocity *velocity, LocationAccuracy *accuracy)
+location_hybrid_set_mock_location(LocationHybrid *self, LocationPosition *position, LocationVelocity *velocity, LocationAccuracy *accuracy)
 {
+       LOC_FUNC_LOG
        LocationHybridPrivate *priv = GET_PRIVATE(self);
        g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-
        int ret = LOCATION_ERROR_NONE;
-       LOC_COND_RET(!priv->mock, LOCATION_ERROR_NOT_AVAILABLE, _E, "MOCK Object is not created [%s]", err_msg(LOCATION_ERROR_NOT_AVAILABLE));
-
-       if (priv->mock)
-               ret = location_set_mock_location(priv->mock, position, velocity, accuracy);
 
-       LOC_IF_FAIL_LOG(ret, _E, "set_mock_location [%s]", err_msg(ret));
+       if (priv->gps)
+               ret = location_set_mock_location(priv->gps, position, velocity, accuracy);
+       else if (priv->wps)
+               ret = location_set_mock_location(priv->wps, position, velocity, accuracy);
+       else
+               ret = LOCATION_ERROR_NOT_AVAILABLE;
 
        return ret;
 }
 
 static int
-location_hybrid_clear_mock_location(LocationMock *self)
+location_hybrid_clear_mock_location(LocationHybrid *self)
 {
+       LOC_FUNC_LOG
        LocationHybridPrivate *priv = GET_PRIVATE(self);
        g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-
        int ret = LOCATION_ERROR_NONE;
-       LOC_COND_RET(!priv->mock, LOCATION_ERROR_NOT_AVAILABLE, _E, "MOCK Object is not created [%s]", err_msg(LOCATION_ERROR_NOT_AVAILABLE));
-
-       if (priv->mock)
-               ret = location_clear_mock_location(priv->mock);
 
-       LOC_IF_FAIL_LOG(ret, _E, "clear_mock_location [%s]", err_msg(ret));
+       if (priv->gps)
+               ret = location_clear_mock_location(priv->gps);
+       else if (priv->wps)
+               ret = location_clear_mock_location(priv->wps);
+       else
+               ret = LOCATION_ERROR_NOT_AVAILABLE;
 
        return ret;
 }
@@ -1284,7 +1200,6 @@ location_hybrid_init(LocationHybrid *self)
 
        if (location_is_supported_method(LOCATION_METHOD_GPS)) priv->gps = location_new(LOCATION_METHOD_GPS);
        if (location_is_supported_method(LOCATION_METHOD_WPS)) priv->wps = location_new(LOCATION_METHOD_WPS);
-       if (location_is_supported_method(LOCATION_METHOD_MOCK)) priv->mock = location_new(LOCATION_METHOD_MOCK);
 
        if (priv->gps) {
                g_signal_connect(priv->gps, "service-enabled", G_CALLBACK(hybrid_service_enabled), self);
@@ -1300,13 +1215,6 @@ location_hybrid_init(LocationHybrid *self)
                g_signal_connect(priv->wps, "service-updated", G_CALLBACK(hybrid_service_updated), self);
                g_signal_connect(priv->wps, "location-updated", G_CALLBACK(hybrid_location_updated), self);
        }
-       if (priv->mock) {
-               g_signal_connect(priv->mock, "service-enabled", G_CALLBACK(hybrid_service_enabled), self);
-               g_signal_connect(priv->mock, "service-disabled", G_CALLBACK(hybrid_service_disabled), self);
-               /* g_signal_connect(priv->mock, "status-changed", G_CALLBACK(hybrid_status_changed), self); */
-               g_signal_connect(priv->mock, "service-updated", G_CALLBACK(hybrid_service_updated), self);
-               g_signal_connect(priv->mock, "location-updated", G_CALLBACK(hybrid_location_updated), self);
-       }
 
        hybrid_set_current_method(priv, LOCATION_TYPE_HYBRID);
        priv->enabled = FALSE;
@@ -1333,167 +1241,106 @@ location_hybrid_class_init(LocationHybridClass *klass)
 
        g_type_class_add_private(klass, sizeof(LocationHybridPrivate));
 
-       signals[SERVICE_ENABLED] = g_signal_new("service-enabled",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationHybridClass, enabled),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__UINT,
-                                                                                       G_TYPE_NONE, 1,
-                                                                                       G_TYPE_UINT);
-
-       signals[SERVICE_DISABLED] = g_signal_new("service-disabled",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationHybridClass, disabled),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__UINT,
-                                                                                       G_TYPE_NONE, 1,
-                                                                                       G_TYPE_UINT);
+       signals[SERVICE_ENABLED] =
+                       g_signal_new("service-enabled", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationHybridClass, enabled),
+                       NULL, NULL, location_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT);
+
+       signals[SERVICE_DISABLED] =
+                       g_signal_new("service-disabled", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationHybridClass, disabled),
+                       NULL, NULL, location_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT);
 
 #if 0 /* TODO: STATUS_CHANGED will aggregate SERVICE_ENABLED and SERVICE_DISABLED */
-       signals[STATUS_CHANGED] = g_signal_new("status-changed",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationHybridClass, status_changed),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__UINT,
-                                                                                       G_TYPE_NONE, 1,
-                                                                                       G_TYPE_UINT);
+       signals[STATUS_CHANGED] =
+                       g_signal_new("status-changed", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationHybridClass, status_changed),
+                       NULL, NULL, location_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT);
 #endif
 
-       signals[SERVICE_UPDATED] = g_signal_new("service-updated",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationHybridClass, service_updated),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__INT_POINTER_POINTER_POINTER,
-                                                                                       G_TYPE_NONE, 4,
-                                                                                       G_TYPE_INT,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER);
-
-       signals[LOCATION_UPDATED] = g_signal_new("location-updated",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationHybridClass, location_updated),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__INT_POINTER_POINTER_POINTER,
-                                                                                       G_TYPE_NONE, 4,
-                                                                                       G_TYPE_INT,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER);
-
-       signals[ZONE_IN] = g_signal_new("zone-in",
-                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                       G_SIGNAL_RUN_FIRST |
-                                                                       G_SIGNAL_NO_RECURSE,
-                                                                       G_STRUCT_OFFSET(LocationHybridClass, zone_in),
-                                                                       NULL, NULL,
-                                                                       location_VOID__POINTER_POINTER_POINTER,
-                                                                       G_TYPE_NONE, 3,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER);
-
-       signals[ZONE_OUT] = g_signal_new("zone-out",
-                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                       G_SIGNAL_RUN_FIRST |
-                                                                       G_SIGNAL_NO_RECURSE,
-                                                                       G_STRUCT_OFFSET(LocationHybridClass, zone_out),
-                                                                       NULL, NULL,
-                                                                       location_VOID__POINTER_POINTER_POINTER,
-                                                                       G_TYPE_NONE, 3,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER);
-
-       properties[PROP_METHOD_TYPE] = g_param_spec_int("method",
-                                                                                                       "method type",
-                                                                                                       "location method type name",
-                                                                                                       LOCATION_METHOD_HYBRID,
-                                                                                                       LOCATION_METHOD_HYBRID,
-                                                                                                       LOCATION_METHOD_HYBRID,
-                                                                                                       G_PARAM_READABLE);
-
-       properties[PROP_LAST_POSITION] = g_param_spec_boxed("last-position",
-                                                                                                               "hybrid last position prop",
-                                                                                                               "hybrid last position data",
-                                                                                                               LOCATION_TYPE_POSITION,
-                                                                                                               G_PARAM_READABLE);
-
-       properties[PROP_POS_INTERVAL] = g_param_spec_uint("pos-interval",
-                                                                                                       "position interval prop",
-                                                                                                       "position interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-       properties[PROP_VEL_INTERVAL] = g_param_spec_uint("vel-interval",
-                                                                                                       "velocity interval prop",
-                                                                                                       "velocity interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-       properties[PROP_SAT_INTERVAL] = g_param_spec_uint("sat-interval",
-                                                                                                       "satellite interval prop",
-                                                                                                       "satellite interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_LOC_INTERVAL] = g_param_spec_uint("loc-interval",
-                                                                                                       "gps location interval prop",
-                                                                                                       "gps location interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_MIN_INTERVAL] = g_param_spec_uint("min-interval",
-                                                                                                       "gps distance-based interval prop",
-                                                                                                       "gps distance-based interval data",
-                                                                                                       LOCATION_MIN_INTERVAL_MIN,
-                                                                                                       LOCATION_MIN_INTERVAL_MAX,
-                                                                                                       LOCATION_MIN_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_MIN_DISTANCE] = g_param_spec_double("min-distance",
-                                                                                                               "gps distance-based distance prop",
-                                                                                                               "gps distance-based distance data",
-                                                                                                               LOCATION_MIN_DISTANCE_MIN,
-                                                                                                               LOCATION_MIN_DISTANCE_MAX,
-                                                                                                               LOCATION_MIN_DISTANCE_DEFAULT,
-                                                                                                               G_PARAM_READWRITE);
-
-       properties[PROP_BOUNDARY] = g_param_spec_pointer("boundary",
-                                                                                                       "hybrid boundary prop",
-                                                                                                       "hybrid boundary data",
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_REMOVAL_BOUNDARY] = g_param_spec_boxed("removal-boundary",
-                                                                                                               "hybrid removal boundary prop",
-                                                                                                               "hybrid removal boundary data",
-                                                                                                               LOCATION_TYPE_BOUNDARY,
-                                                                                                               G_PARAM_READWRITE);
+       signals[SERVICE_UPDATED] =
+                       g_signal_new("service-updated", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationHybridClass, service_updated),
+                       NULL, NULL, location_VOID__INT_POINTER_POINTER_POINTER,
+                       G_TYPE_NONE, 4, G_TYPE_INT, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+
+       signals[LOCATION_UPDATED] =
+                       g_signal_new("location-updated", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationHybridClass, location_updated),
+                       NULL, NULL, location_VOID__INT_POINTER_POINTER_POINTER,
+                       G_TYPE_NONE, 4, G_TYPE_INT, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+
+       signals[ZONE_IN] =
+                       g_signal_new("zone-in", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationHybridClass, zone_in),
+                       NULL, NULL, location_VOID__POINTER_POINTER_POINTER,
+                       G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+
+       signals[ZONE_OUT] =
+                       g_signal_new("zone-out", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationHybridClass, zone_out),
+                       NULL, NULL, location_VOID__POINTER_POINTER_POINTER,
+                       G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+
+       properties[PROP_METHOD_TYPE] =
+                       g_param_spec_int("method", "method type",
+                       "location method type name", LOCATION_METHOD_HYBRID,
+                       LOCATION_METHOD_HYBRID, LOCATION_METHOD_HYBRID, G_PARAM_READABLE);
+
+       properties[PROP_LAST_POSITION] =
+                       g_param_spec_boxed("last-position", "hybrid last position prop",
+                       "hybrid last position data", LOCATION_TYPE_POSITION, G_PARAM_READABLE);
+
+       properties[PROP_POS_INTERVAL] =
+                       g_param_spec_uint("pos-interval", "position interval prop",
+                       "position interval data", LOCATION_UPDATE_INTERVAL_MIN,
+                       LOCATION_UPDATE_INTERVAL_MAX, LOCATION_UPDATE_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_VEL_INTERVAL] =
+                       g_param_spec_uint("vel-interval", "velocity interval prop",
+                       "velocity interval data", LOCATION_UPDATE_INTERVAL_MIN,
+                       LOCATION_UPDATE_INTERVAL_MAX, LOCATION_UPDATE_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_SAT_INTERVAL] =
+                       g_param_spec_uint("sat-interval", "satellite interval prop",
+                       "satellite interval data", LOCATION_UPDATE_INTERVAL_MIN,
+                       LOCATION_UPDATE_INTERVAL_MAX, LOCATION_UPDATE_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_LOC_INTERVAL] =
+                       g_param_spec_uint("loc-interval", "gps location interval prop",
+                       "gps location interval data", LOCATION_UPDATE_INTERVAL_MIN,
+                       LOCATION_UPDATE_INTERVAL_MAX, LOCATION_UPDATE_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_MIN_INTERVAL] =
+                       g_param_spec_uint("min-interval", "gps distance-based interval prop",
+                       "gps distance-based interval data", LOCATION_MIN_INTERVAL_MIN,
+                       LOCATION_MIN_INTERVAL_MAX, LOCATION_MIN_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_MIN_DISTANCE] =
+                       g_param_spec_double("min-distance", "gps distance-based distance prop",
+                       "gps distance-based distance data", LOCATION_MIN_DISTANCE_MIN,
+                       LOCATION_MIN_DISTANCE_MAX, LOCATION_MIN_DISTANCE_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_BOUNDARY] =
+                       g_param_spec_pointer("boundary", "hybrid boundary prop",
+                       "hybrid boundary data", G_PARAM_READWRITE);
+
+       properties[PROP_REMOVAL_BOUNDARY] =
+                       g_param_spec_boxed("removal-boundary", "hybrid removal boundary prop",
+                       "hybrid removal boundary data", LOCATION_TYPE_BOUNDARY, G_PARAM_READWRITE);
 
        /* Tizen 3.0 */
-       properties[PROP_SERVICE_STATUS] = g_param_spec_int("service-status",
-                                                                                                       "location service status prop",
-                                                                                                       "location service status data",
-                                                                                                       LOCATION_STATUS_NO_FIX,
-                                                                                                       LOCATION_STATUS_3D_FIX,
-                                                                                                       LOCATION_STATUS_NO_FIX,
-                                                                                                       G_PARAM_READABLE);
+       properties[PROP_SERVICE_STATUS] =
+                       g_param_spec_int("service-status", "location service status prop",
+                       "location service status data", LOCATION_STATUS_NO_FIX,
+                       LOCATION_STATUS_3D_FIX, LOCATION_STATUS_NO_FIX, G_PARAM_READABLE);
 
        g_object_class_install_properties(gobject_class, PROP_MAX, properties);
 }
index ed8dc67..2476fcc 100755 (executable)
@@ -229,16 +229,6 @@ location_ielement_get_nmea(LocationIElement *self, char **nmea)
 
 
 /* Tizen 3.0 */
-
-int location_ielement_get_status(LocationIElement *self, int *state)
-{
-       g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
-       g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self), LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(LOCATION_IELEMENT_GET_INTERFACE(self)->get_status, LOCATION_ERROR_NOT_AVAILABLE);
-
-       return LOCATION_IELEMENT_GET_INTERFACE(self)->get_status(self, state);
-}
-
 int location_ielement_set_mock_location(LocationIElement *self, const LocationPosition *position, const LocationVelocity *velocity, const LocationAccuracy *accuracy)
 {
        g_return_val_if_fail(LOCATION_IS_IELEMENT(self), LOCATION_ERROR_PARAMETER);
index a191d85..7f30cf8 100644 (file)
@@ -54,8 +54,6 @@ enum {
        ZONE_OUT,
        LOCATION_UPDATED,
        BATCH_UPDATED,
-       MOCK_LOCATION_SET,
-       MOCK_LOCATION_FAIL,
        STATUS_CHANGED,
        LAST_SIGNAL,
 };
@@ -99,7 +97,6 @@ struct _LocationIElementInterface {
        TYPE_GET_NMEA get_nmea;
 
        /* Tizen 3.0 */
-       TYPE_GET_STATUS get_status;
        TYPE_SET_MOCK_LOCATION set_mock_location;
        TYPE_CLEAR_MOCK_LOCATION clear_mock_location;
 };
@@ -124,7 +121,6 @@ int location_ielement_stop_batch(LocationIElement *self);
 int location_ielement_get_nmea(LocationIElement *self, char **nmea);
 
 /* Tizen 3.0 */
-int location_ielement_get_status(LocationIElement *self, int *state);
 int location_ielement_set_mock_location(LocationIElement *self, const LocationPosition *position, const LocationVelocity *velocity, const LocationAccuracy *accuracy);
 int location_ielement_clear_mock_location(LocationIElement *self);
 
diff --git a/location/manager/location-mock.c b/location/manager/location-mock.c
deleted file mode 100755 (executable)
index d17c623..0000000
+++ /dev/null
@@ -1,1011 +0,0 @@
-/*
- * libslp-location
- *
- * Copyright (c) 2010-2013 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Youngae Kang <youngae.kang@samsung.com>, Minjune Kim <sena06.kim@samsung.com>
- *                     Genie Kim <daejins.kim@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "location-setting.h"
-#include "location-log.h"
-
-#include "module-internal.h"
-
-#include "location-mock.h"
-#include "location-marshal.h"
-#include "location-ielement.h"
-#include "location-signaling-util.h"
-#include "location-common-util.h"
-#include "location-privacy.h"
-
-#include <vconf-internal-location-keys.h>
-
-/*
- * forward definitions
- */
-
-typedef struct _LocationMockPrivate {
-       LocationMockMod         *mod;
-       GMutex                          mutex;
-       gboolean                        is_started;
-       guint                           app_type;
-       gboolean                        set_noti;
-       gboolean                        enabled;
-       guint                           pos_updated_timestamp;
-       guint                           pos_interval;
-       guint                           vel_updated_timestamp;
-       guint                           vel_interval;
-       guint                           loc_updated_timestamp;
-       guint                           loc_interval;
-       guint                           loc_timeout;
-       guint                           dist_updated_timestamp;
-       guint                           min_interval;
-       gdouble                         min_distance;
-       LocationPosition        *pos;
-       LocationVelocity        *vel;
-       LocationAccuracy        *acc;
-       GList                           *boundary_list;
-} LocationMockPrivate;
-
-enum {
-       PROP_0,
-       PROP_METHOD_TYPE,
-       PROP_IS_STARTED,
-       PROP_LAST_POSITION,
-       PROP_POS_INTERVAL,
-       PROP_VEL_INTERVAL,
-       PROP_LOC_INTERVAL,
-       PROP_BOUNDARY,
-       PROP_REMOVAL_BOUNDARY,
-       PROP_MIN_INTERVAL,
-       PROP_MIN_DISTANCE,
-       PROP_SERVICE_STATUS,
-       PROP_MAX
-};
-
-static guint32 signals[LAST_SIGNAL] = {0, };
-static GParamSpec *properties[PROP_MAX] = {NULL, };
-
-#define GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), LOCATION_TYPE_MOCK, LocationMockPrivate))
-
-static void location_ielement_interface_init(LocationIElementInterface *iface);
-G_DEFINE_TYPE_WITH_CODE(LocationMock, location_mock, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE(LOCATION_TYPE_IELEMENT, location_ielement_interface_init));
-
-static void
-__reset_pos_data_from_priv(LocationMockPrivate *priv)
-{
-       LOC_FUNC_LOG
-       g_return_if_fail(priv);
-
-       if (priv->pos) {
-               location_position_free(priv->pos);
-               priv->pos = NULL;
-       }
-       if (priv->vel) {
-               location_velocity_free(priv->vel);
-               priv->vel = NULL;
-       }
-       if (priv->acc) {
-               location_accuracy_free(priv->acc);
-               priv->acc = NULL;
-       }
-       priv->pos_updated_timestamp = 0;
-       priv->vel_updated_timestamp = 0;
-}
-
-static gboolean
-__get_started(gpointer self)
-{
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, FALSE);
-
-       return priv->is_started;
-}
-
-static int
-__set_started(gpointer self, gboolean started)
-{
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, -1);
-
-       if (priv->is_started != started) {
-               g_mutex_lock(&priv->mutex);
-               priv->is_started = started;
-               g_mutex_unlock(&priv->mutex);
-       }
-
-       return 0;
-}
-
-static void
-mock_status_cb(gboolean enabled, LocationStatus status, gpointer self)
-{
-       LOC_FUNC_LOG
-       g_return_if_fail(self);
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_if_fail(priv);
-       if (priv->enabled == TRUE && enabled == FALSE) {
-               __set_started(self, FALSE);
-               enable_signaling(self, signals, &(priv->enabled), enabled, status);
-       }
-}
-
-static void
-mock_location_cb(gboolean enabled, LocationPosition *pos, LocationVelocity *vel, LocationAccuracy *acc, gpointer self)
-{
-       g_return_if_fail(self);
-       g_return_if_fail(pos);
-       g_return_if_fail(vel);
-       g_return_if_fail(acc);
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_if_fail(priv);
-
-       if (priv->min_interval != LOCATION_UPDATE_INTERVAL_NONE) {
-               distance_based_position_signaling(self, signals, enabled,
-                                                                               pos, vel, acc, priv->min_interval, priv->min_distance, &(priv->enabled),
-                                                                               &(priv->dist_updated_timestamp), &(priv->pos), &(priv->vel), &(priv->acc));
-       }
-
-       LOCATION_LOGD("Calling location_signaling, status =%d", pos->status);
-
-       location_signaling(self, signals, enabled, priv->boundary_list, pos, vel, acc,
-                                               priv->pos_interval, priv->vel_interval, priv->loc_interval, &(priv->enabled),
-                                               &(priv->pos_updated_timestamp), &(priv->vel_updated_timestamp), &(priv->loc_updated_timestamp),
-                                               &(priv->pos), &(priv->vel), &(priv->acc));
-}
-
-static void
-location_setting_mock_cb(keynode_t *key, gpointer self)
-{
-       LOC_FUNC_LOG
-       g_return_if_fail(key);
-       g_return_if_fail(self);
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_if_fail(priv);
-       g_return_if_fail(priv->mod);
-       g_return_if_fail(priv->mod->handler);
-
-       int ret = LOCATION_ERROR_NONE;
-
-       if (location_setting_get_key_val(key) == 0) {
-               if (priv->mod->ops.stop && __get_started(self)) {
-                       __set_started(self, FALSE);
-                       ret = priv->mod->ops.stop(priv->mod->handler);
-                       if (ret == LOCATION_ERROR_NONE)
-                               __reset_pos_data_from_priv(priv);
-               }
-       } else {
-               if (location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED) == 1 && priv->mod->ops.start && !__get_started(self)) {
-                       LOCATION_LOGD("location resumed by setting");
-                       __set_started(self, TRUE);
-                       ret = priv->mod->ops.start(priv->mod->handler, mock_status_cb, mock_location_cb, self);
-                       if (ret != LOCATION_ERROR_NONE) {
-                               __set_started(self, FALSE);
-                               LOCATION_LOGD("Fail to start. Error[%d]", ret);
-                       }
-               }
-       }
-
-}
-
-static int
-location_mock_start(LocationMock *self)
-{
-       LOC_FUNC_LOG
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod->ops.start, LOCATION_ERROR_NOT_AVAILABLE);
-
-       if (__get_started(self) == TRUE) return LOCATION_ERROR_NONE;
-
-       int ret = LOCATION_ERROR_NONE;
-
-       if (!location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED)) {
-               ret = LOCATION_ERROR_SETTING_OFF;
-       } else {
-               __set_started(self, TRUE);
-               ret = priv->mod->ops.start(priv->mod->handler, mock_status_cb, mock_location_cb, self);
-               if (ret != LOCATION_ERROR_NONE) {
-                       __set_started(self, FALSE);
-                       LOCATION_LOGE("Failed to start mock. Error[%d]", ret);
-                       return ret;
-               }
-       }
-
-       if (priv->app_type != CPPAPP && priv->set_noti == FALSE) {
-               location_setting_add_notify(VCONFKEY_LOCATION_MOCK_ENABLED, location_setting_mock_cb, self);
-               priv->set_noti = TRUE;
-       }
-       LOCATION_LOGD("EXIT <<<, ret = %d", ret);
-
-       return ret;
-}
-
-static int
-location_mock_stop(LocationMock *self)
-{
-       LOC_FUNC_LOG
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod->ops.stop, LOCATION_ERROR_NOT_AVAILABLE);
-
-       int ret = LOCATION_ERROR_NONE;
-
-       if (__get_started(self) == TRUE) {
-               __set_started(self, FALSE);
-               ret = priv->mod->ops.stop(priv->mod->handler);
-               LOC_IF_FAIL_LOG(ret, _E, "Failed to stop [%s]", err_msg(ret));
-       }
-
-       if (priv->app_type != CPPAPP && priv->set_noti == TRUE) {
-               location_setting_ignore_notify(VCONFKEY_LOCATION_MOCK_ENABLED, location_setting_mock_cb);
-               priv->set_noti = FALSE;
-       }
-
-       __reset_pos_data_from_priv(priv);
-
-       return ret;
-}
-
-static void
-location_mock_dispose(GObject *gobject)
-{
-       LOC_FUNC_LOG
-       LocationMockPrivate *priv = GET_PRIVATE(gobject);
-       g_return_if_fail(priv);
-
-       g_mutex_clear(&priv->mutex);
-       if (priv->app_type != CPPAPP && priv->set_noti == TRUE) {
-               location_setting_ignore_notify(VCONFKEY_LOCATION_MOCK_ENABLED, location_setting_mock_cb);
-               priv->set_noti = FALSE;
-       }
-
-       G_OBJECT_CLASS(location_mock_parent_class)->dispose(gobject);
-}
-
-static void
-location_mock_finalize(GObject *gobject)
-{
-       LOC_FUNC_LOG
-       LocationMockPrivate *priv = GET_PRIVATE(gobject);
-       g_return_if_fail(priv);
-       module_free(priv->mod, "mock");
-
-       if (priv->boundary_list) {
-               g_list_free_full(priv->boundary_list, free_boundary_list);
-               priv->boundary_list = NULL;
-       }
-
-       if (priv->pos) {
-               location_position_free(priv->pos);
-               priv->pos = NULL;
-       }
-
-       if (priv->vel) {
-               location_velocity_free(priv->vel);
-               priv->vel = NULL;
-       }
-
-       if (priv->acc) {
-               location_accuracy_free(priv->acc);
-               priv->acc = NULL;
-       }
-
-       G_OBJECT_CLASS(location_mock_parent_class)->finalize(gobject);
-}
-
-static void
-location_mock_set_property(GObject *object, guint property_id, const GValue *value, GParamSpec *pspec)
-{
-       LocationMockPrivate *priv = GET_PRIVATE(object);
-       g_return_if_fail(priv);
-       int ret = 0;
-
-       switch (property_id) {
-       case PROP_BOUNDARY: {
-                               GList *boundary_list = (GList *)g_list_copy(g_value_get_pointer(value));
-                               ret = set_prop_boundary(&priv->boundary_list, boundary_list);
-                               LOC_IF_FAIL_LOG(ret, _E, "Set boundary. Error[%s]", err_msg(ret));
-                               if (boundary_list) g_list_free(boundary_list);
-                               break;
-                       }
-       case PROP_REMOVAL_BOUNDARY: {
-                               LocationBoundary *req_boundary = (LocationBoundary *) g_value_dup_boxed(value);
-                               ret = set_prop_removal_boundary(&priv->boundary_list, req_boundary);
-                               LOC_IF_FAIL_LOG(ret, _E, "Set removal boundary. Error[%s]", err_msg(ret));
-                               break;
-                       }
-       case PROP_POS_INTERVAL: {
-                               guint interval = g_value_get_uint(value);
-                               if (interval > 0) {
-                                       if (interval < LOCATION_UPDATE_INTERVAL_MAX)
-                                               priv->pos_interval = interval;
-                                       else
-                                               priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
-                               } else
-                                       priv->pos_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
-
-                               break;
-                       }
-       case PROP_VEL_INTERVAL: {
-                               guint interval = g_value_get_uint(value);
-                               if (interval > 0) {
-                                       if (interval < LOCATION_UPDATE_INTERVAL_MAX)
-                                               priv->vel_interval = interval;
-                                       else
-                                               priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
-                               } else {
-                                       priv->vel_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
-                               }
-                               break;
-                       }
-       case PROP_LOC_INTERVAL: {
-                               guint interval = g_value_get_uint(value);
-                               LOCATION_LOGD("Set prop>> PROP_LOC_INTERVAL: %u", interval);
-                               if (interval > 0) {
-                                       if (interval < LOCATION_UPDATE_INTERVAL_MAX)
-                                               priv->loc_interval = interval;
-                                       else
-                                               priv->loc_interval = (guint)LOCATION_UPDATE_INTERVAL_MAX;
-                               } else
-                                       priv->loc_interval = (guint)LOCATION_UPDATE_INTERVAL_DEFAULT;
-
-                               break;
-                       }
-       case PROP_MIN_INTERVAL: {
-                               guint interval = g_value_get_uint(value);
-                               LOCATION_LOGD("Set prop>> update-min-interval: %u", interval);
-                               if (interval > 0) {
-                                       if (interval < LOCATION_MIN_INTERVAL_MAX)
-                                               priv->min_interval = interval;
-                                       else
-                                               priv->min_interval = (guint)LOCATION_MIN_INTERVAL_MAX;
-                               } else
-                                       priv->min_interval = (guint)LOCATION_MIN_INTERVAL_DEFAULT;
-
-                               break;
-                       }
-       case PROP_MIN_DISTANCE: {
-                               gdouble distance = g_value_get_double(value);
-                               LOCATION_LOGD("Set prop>> update-min-distance: %u", distance);
-                               if (distance > 0) {
-                                       if (distance < LOCATION_MIN_DISTANCE_MAX)
-                                               priv->min_distance = distance;
-                                       else
-                                               priv->min_distance = (gdouble)LOCATION_MIN_DISTANCE_MAX;
-                               } else
-                                       priv->min_distance = (gdouble)LOCATION_MIN_DISTANCE_DEFAULT;
-
-                               break;
-                       }
-       default:
-                       G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
-                       break;
-       }
-}
-
-static void
-location_mock_get_property(GObject *object, guint property_id, GValue *value, GParamSpec *pspec)
-{
-       LocationMockPrivate *priv = GET_PRIVATE(object);
-       g_return_if_fail(priv);
-
-       switch (property_id) {
-       case PROP_METHOD_TYPE:
-                       g_value_set_int(value, LOCATION_METHOD_MOCK);
-                       break;
-       case PROP_IS_STARTED:
-                       g_value_set_boolean(value, __get_started(object));
-                       break;
-       case PROP_LAST_POSITION:
-                       g_value_set_boxed(value, priv->pos);
-                       break;
-       case PROP_BOUNDARY:
-                       g_value_set_pointer(value, g_list_first(priv->boundary_list));
-                       break;
-       case PROP_POS_INTERVAL:
-                       g_value_set_uint(value, priv->pos_interval);
-                       break;
-       case PROP_VEL_INTERVAL:
-                       g_value_set_uint(value, priv->vel_interval);
-                       break;
-       case PROP_LOC_INTERVAL:
-                       g_value_set_uint(value, priv->loc_interval);
-                       break;
-       case PROP_MIN_INTERVAL:
-                       g_value_set_uint(value, priv->min_interval);
-                       break;
-       case PROP_MIN_DISTANCE:
-                       g_value_set_double(value, priv->min_distance);
-                       break;
-       case PROP_SERVICE_STATUS:
-                       g_value_set_int(value, priv->enabled);
-                       break;
-       default:
-                       G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
-                       break;
-       }
-}
-
-static int
-location_mock_get_position(LocationMock *self, LocationPosition **position, LocationAccuracy **accuracy)
-{
-       int ret = LOCATION_ERROR_NOT_AVAILABLE;
-
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
-       setting_retval_if_fail(VCONFKEY_LOCATION_MOCK_ENABLED);
-
-       LOC_COND_RET(__get_started(self) != TRUE, LOCATION_ERROR_NOT_AVAILABLE, _E, "location is not started [%s]", err_msg(LOCATION_ERROR_NOT_AVAILABLE));
-
-       if (priv->pos) {
-               *position = location_position_copy(priv->pos);
-               if (priv->acc) *accuracy = location_accuracy_copy(priv->acc);
-               else *accuracy = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
-               ret = LOCATION_ERROR_NONE;
-       }
-
-       return ret;
-}
-
-static int
-location_mock_get_position_ext(LocationMock *self, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy)
-{
-       int ret = LOCATION_ERROR_NOT_AVAILABLE;
-
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
-       setting_retval_if_fail(VCONFKEY_LOCATION_MOCK_ENABLED);
-
-       LOC_COND_RET(__get_started(self) != TRUE, LOCATION_ERROR_NOT_AVAILABLE, _E, "location is not started [%s]", err_msg(LOCATION_ERROR_NOT_AVAILABLE));
-
-       if (priv->pos && priv->vel) {
-               *position = location_position_copy(priv->pos);
-               *velocity = location_velocity_copy(priv->vel);
-               if (priv->acc)
-                       *accuracy = location_accuracy_copy(priv->acc);
-               else
-                       *accuracy = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
-
-               ret = LOCATION_ERROR_NONE;
-       }
-
-       return ret;
-}
-
-
-static int
-location_mock_get_last_position(LocationMock *self, LocationPosition **position, LocationAccuracy **accuracy)
-{
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
-       setting_retval_if_fail(VCONFKEY_LOCATION_MOCK_ENABLED);
-
-       int ret = LOCATION_ERROR_NONE;
-       LocationVelocity *_velocity = NULL;
-
-       LocModMockOps ops = priv->mod->ops;
-       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(ops.get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
-
-       ret = ops.get_last_position(priv->mod->handler, position, &_velocity, accuracy);
-       if (_velocity) location_velocity_free(_velocity);
-
-       return ret;
-}
-
-static int
-location_mock_get_last_position_ext(LocationMock *self, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy)
-{
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
-       setting_retval_if_fail(VCONFKEY_LOCATION_MOCK_ENABLED);
-
-       LocModMockOps ops = priv->mod->ops;
-       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(ops.get_last_position, LOCATION_ERROR_NOT_AVAILABLE);
-
-       return ops.get_last_position(priv->mod->handler, position, velocity, accuracy);
-}
-
-
-static int
-location_mock_get_velocity(LocationMock *self, LocationVelocity **velocity, LocationAccuracy **accuracy)
-{
-       int ret = LOCATION_ERROR_NOT_AVAILABLE;
-
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
-       setting_retval_if_fail(VCONFKEY_LOCATION_MOCK_ENABLED);
-
-       LOC_COND_RET(__get_started(self) != TRUE, LOCATION_ERROR_NOT_AVAILABLE, _E, "location is not started [%s]", err_msg(LOCATION_ERROR_NOT_AVAILABLE));
-
-       if (priv->vel) {
-               *velocity = location_velocity_copy(priv->vel);
-               if (priv->acc) *accuracy = location_accuracy_copy(priv->acc);
-               else *accuracy = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
-               ret = LOCATION_ERROR_NONE;
-       }
-
-       return ret;
-}
-
-static int
-location_mock_get_last_velocity(LocationMock *self, LocationVelocity **velocity, LocationAccuracy **accuracy)
-{
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
-       setting_retval_if_fail(VCONFKEY_LOCATION_MOCK_ENABLED);
-
-       int ret = LOCATION_ERROR_NONE;
-       LocationPosition *_position = NULL;
-
-       LocModMockOps ops = priv->mod->ops;
-       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
-       ret = ops.get_last_position(priv->mod->handler, &_position, velocity, accuracy);
-       if (!_position) location_position_free(_position);
-
-       return ret;
-}
-
-static gboolean
-__single_location_timeout_cb(void *data)
-{
-       LOC_FUNC_LOG
-       LocationMock *self = (LocationMock *)data;
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, FALSE);
-
-       LocationPosition *pos = location_position_new(0, 0.0, 0.0, 0.0, LOCATION_STATUS_NO_FIX);
-       LocationVelocity *vel = location_velocity_new(0, 0.0, 0.0, 0.0);
-       LocationAccuracy *acc = location_accuracy_new(LOCATION_ACCURACY_LEVEL_NONE, 0.0, 0.0);
-
-       if (priv->loc_timeout) g_source_remove(priv->loc_timeout);
-       priv->loc_timeout = 0;
-
-       g_signal_emit(self, signals[LOCATION_UPDATED], 0, LOCATION_ERROR_NOT_AVAILABLE, pos, vel, acc);
-       location_mock_stop(self);
-
-       return FALSE;
-}
-
-
-static void
-mock_single_location_cb(gboolean enabled, LocationPosition *pos, LocationVelocity *vel, LocationAccuracy *acc, gpointer self)
-{
-       LOC_FUNC_LOG
-       g_return_if_fail(self);
-       g_return_if_fail(pos);
-       g_return_if_fail(vel);
-       g_return_if_fail(acc);
-
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_if_fail(priv);
-
-       g_signal_emit(self, signals[LOCATION_UPDATED], 0, LOCATION_ERROR_NONE, pos, vel, acc);
-       if (priv->loc_timeout) {
-               g_source_remove(priv->loc_timeout);
-               priv->loc_timeout = 0;
-       }
-       location_mock_stop(self);
-}
-
-static int
-location_mock_request_single_location(LocationMock *self, int timeout)
-{
-       LOC_FUNC_LOG
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod->ops.start, LOCATION_ERROR_NOT_AVAILABLE);
-
-       if (__get_started(self) == TRUE) return LOCATION_ERROR_NONE;
-
-       int ret = LOCATION_ERROR_NONE;
-
-       __set_started(self, TRUE);
-       ret = priv->mod->ops.start(priv->mod->handler, mock_status_cb, mock_single_location_cb, self);
-       if (ret != LOCATION_ERROR_NONE) {
-               LOCATION_LOGE("Fail to start request single. Error[%d]", ret);
-               __set_started(self, FALSE);
-               return ret;
-       } else {
-               if (priv->loc_timeout != 0)
-                       g_source_remove(priv->loc_timeout);
-
-               priv->loc_timeout = g_timeout_add_seconds(timeout, __single_location_timeout_cb, self);
-       }
-
-       return ret;
-}
-
-static int
-location_mock_get_satellite(LocationMock *self, LocationSatellite **satellite)
-{
-       return LOCATION_ERROR_NOT_SUPPORTED;
-}
-
-static int
-location_mock_get_last_satellite(LocationMock *self, LocationSatellite **satellite)
-{
-       return LOCATION_ERROR_NOT_SUPPORTED;
-}
-
-static int
-location_mock_set_option(LocationMock *self, const char *option)
-{
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod->ops.start, LOCATION_ERROR_NOT_AVAILABLE);
-
-       int ret = LOCATION_ERROR_NONE;
-
-       ret = priv->mod->ops.set_option(priv->mod->handler, option);
-       LOC_IF_FAIL_LOG(ret, _E, "Failed to set_option. Error[%d]", ret);
-
-       return ret;
-}
-
-static int
-location_mock_get_nmea(LocationMock *self, char **nmea_data)
-{
-       return LOCATION_ERROR_NOT_SUPPORTED;
-}
-
-
-/* Tizen 3.0 */
-
-static int
-location_mock_get_status(LocationMock *self, int *status)
-{
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
-
-       if (__get_started(self) == TRUE)
-               *status = 1;
-       else
-               *status = 0;
-
-       return LOCATION_ERROR_NONE;
-}
-
-
-static void
-__set_mock_location_cb(gboolean enabled, LocationStatus status, gpointer self)
-{
-       g_return_if_fail(self);
-       LocationObject *obj = (LocationObject *) self;
-       LocationMockPrivate *priv = GET_PRIVATE(obj);
-       g_return_if_fail(priv);
-
-       LOCATION_LOGD("ENTER >>>");
-       LOCATION_LOGD("Mock status = %d");
-       if (status == LOCATION_STATUS_MOCK_FAIL) {
-       /*
-       if (priv->enabled == TRUE && status == LOCATION_STATUS_MOCK_FAIL) {
-               __set_started(self, FALSE); */
-               g_signal_emit(obj, signals[SERVICE_DISABLED], 0, LOCATION_STATUS_NO_FIX);
-               /* g_signal_emit(obj, signals[STATUS_CHANGED], 0, LOCATION_STATUS_MOCK_FAIL); */
-       }
-
-       LOCATION_LOGD("EXIT <<<");
-}
-
-static int
-location_mock_set_mock_location(LocationMock *self, LocationPosition *position, LocationVelocity *velocity, LocationAccuracy *accuracy)
-{
-       LOC_FUNC_LOG
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod->ops.set_mock_location, LOCATION_ERROR_NOT_AVAILABLE);
-
-       int ret = LOCATION_ERROR_NONE;
-       if (!location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED)) {
-               ret = LOCATION_ERROR_SETTING_OFF;
-       } else {
-               ret = priv->mod->ops.set_mock_location(priv->mod->handler, position, velocity, accuracy, __set_mock_location_cb, self);
-               LOC_IF_FAIL_LOG(ret, _E, "Failed to set_mock_location [%s]", err_msg(ret));
-       }
-
-       return ret;
-}
-
-static int
-location_mock_clear_mock_location(LocationMock *self)
-{
-       LOC_FUNC_LOG
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
-       g_return_val_if_fail(priv->mod->ops.set_mock_location, LOCATION_ERROR_NOT_AVAILABLE);
-
-       int ret = LOCATION_ERROR_NONE;
-       if (!location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED)) {
-               ret = LOCATION_ERROR_SETTING_OFF;
-       } else {
-               ret = priv->mod->ops.clear_mock_location(priv->mod->handler, __set_mock_location_cb, self);
-               LOC_IF_FAIL_LOG(ret, _E, "Failed to clear_mock_location [%s]", err_msg(ret));
-       }
-
-       return ret;
-}
-
-static void _glib_log(const gchar *log_domain, GLogLevelFlags log_level, const gchar *msg, gpointer user_data)
-{
-       LOCATION_LOGD("GLIB[%d]: %s", log_level, msg);
-}
-
-
-static void
-location_ielement_interface_init(LocationIElementInterface *iface)
-{
-       iface->start = (TYPE_START_FUNC)location_mock_start;
-       iface->stop = (TYPE_STOP_FUNC)location_mock_stop;
-       iface->get_position = (TYPE_GET_POSITION)location_mock_get_position;
-       iface->get_position_ext = (TYPE_GET_POSITION_EXT)location_mock_get_position_ext;
-       iface->get_last_position = (TYPE_GET_POSITION)location_mock_get_last_position;
-       iface->get_last_position_ext = (TYPE_GET_POSITION_EXT)location_mock_get_last_position_ext;
-       iface->get_velocity = (TYPE_GET_VELOCITY)location_mock_get_velocity;
-       iface->get_last_velocity = (TYPE_GET_VELOCITY)location_mock_get_last_velocity;
-       iface->get_satellite = (TYPE_GET_SATELLITE)location_mock_get_satellite;
-       iface->get_last_satellite = (TYPE_GET_SATELLITE)location_mock_get_last_satellite;
-       iface->set_option = (TYPE_SET_OPTION)location_mock_set_option;
-       iface->request_single_location = (TYPE_REQUEST_SINGLE_LOCATION)location_mock_request_single_location;
-       iface->get_nmea = (TYPE_GET_NMEA)location_mock_get_nmea;
-
-       iface->get_status = (TYPE_GET_STATUS) location_mock_get_status;
-       iface->set_mock_location = (TYPE_SET_MOCK_LOCATION) location_mock_set_mock_location;
-       iface->clear_mock_location = (TYPE_CLEAR_MOCK_LOCATION) location_mock_clear_mock_location;
-}
-
-static void
-location_mock_init(LocationMock *self)
-{
-       LOC_FUNC_LOG
-       LocationMockPrivate *priv = GET_PRIVATE(self);
-       g_return_if_fail(priv);
-
-       priv->mod = (LocationMockMod *)module_new("mock");
-       LOC_COND_LOG(!priv->mod, _E, "Module loading failed");
-
-       g_mutex_init(&priv->mutex);
-       priv->is_started = FALSE;
-       priv->set_noti = FALSE;
-       priv->enabled = FALSE;
-
-       priv->pos_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
-       priv->vel_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
-       priv->loc_interval = LOCATION_UPDATE_INTERVAL_DEFAULT;
-       priv->min_interval = LOCATION_UPDATE_INTERVAL_NONE;
-
-       priv->pos_updated_timestamp = 0;
-       priv->vel_updated_timestamp = 0;
-       priv->loc_updated_timestamp = 0;
-
-       priv->pos = NULL;
-       priv->vel = NULL;
-       priv->acc = NULL;
-       priv->boundary_list = NULL;
-
-       priv->loc_timeout = 0;
-
-       priv->app_type = location_get_app_type(NULL);
-       LOC_COND_LOG(priv->app_type == 0, _E, "Fail to get app_type");
-}
-
-static void
-location_mock_class_init(LocationMockClass *klass)
-{
-       LOC_FUNC_LOG
-
-       GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
-
-       g_log_set_default_handler(_glib_log, NULL);
-
-
-       gobject_class->set_property = location_mock_set_property;
-       gobject_class->get_property = location_mock_get_property;
-
-       gobject_class->dispose = location_mock_dispose;
-       gobject_class->finalize = location_mock_finalize;
-
-       g_type_class_add_private(klass, sizeof(LocationMockPrivate));
-
-
-
-       signals[SERVICE_ENABLED] = g_signal_new("service-enabled",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationMockClass, enabled),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__UINT,
-                                                                                       G_TYPE_NONE, 1,
-                                                                                       G_TYPE_UINT);
-
-
-
-       signals[SERVICE_DISABLED] = g_signal_new("service-disabled",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationMockClass, disabled),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__UINT,
-                                                                                       G_TYPE_NONE, 1,
-                                                                                       G_TYPE_UINT);
-
-#if 0 /* TODO: STATUS_CHANGED will aggregate SERVICE_ENABLED and SERVICE_DISABLED */
-       signals[STATUS_CHANGED] = g_signal_new("status-changed",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationMockClass, status_changed),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__UINT,
-                                                                                       G_TYPE_NONE, 1,
-                                                                                       G_TYPE_UINT);
-#endif
-
-       signals[SERVICE_UPDATED] = g_signal_new("service-updated",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationMockClass, service_updated),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__INT_POINTER_POINTER_POINTER,
-                                                                                       G_TYPE_NONE, 4,
-                                                                                       G_TYPE_INT,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER);
-
-       signals[LOCATION_UPDATED] = g_signal_new("location-updated",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationMockClass, location_updated),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__INT_POINTER_POINTER_POINTER,
-                                                                                       G_TYPE_NONE, 4,
-                                                                                       G_TYPE_INT,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER);
-
-       signals[ZONE_IN] = g_signal_new("zone-in",
-                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                       G_SIGNAL_RUN_FIRST |
-                                                                       G_SIGNAL_NO_RECURSE,
-                                                                       G_STRUCT_OFFSET(LocationMockClass, zone_in),
-                                                                       NULL, NULL,
-                                                                       location_VOID__POINTER_POINTER_POINTER,
-                                                                       G_TYPE_NONE, 3,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER);
-
-       signals[ZONE_OUT] = g_signal_new("zone-out",
-                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                       G_SIGNAL_RUN_FIRST |
-                                                                       G_SIGNAL_NO_RECURSE,
-                                                                       G_STRUCT_OFFSET(LocationMockClass, zone_out),
-                                                                       NULL, NULL,
-                                                                       location_VOID__POINTER_POINTER_POINTER,
-                                                                       G_TYPE_NONE, 3,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER);
-
-       properties[PROP_METHOD_TYPE] = g_param_spec_int("method",
-                                                                                                       "method type",
-                                                                                                       "location method type name",
-                                                                                                       LOCATION_METHOD_MOCK,
-                                                                                                       LOCATION_METHOD_MOCK,
-                                                                                                       LOCATION_METHOD_MOCK,
-                                                                                                       G_PARAM_READABLE);
-
-       properties[PROP_IS_STARTED] = g_param_spec_boolean("is_started",
-                                                                                                               "mock is started prop",
-                                                                                                               "mock is started status",
-                                                                                                               FALSE,
-                                                                                                               G_PARAM_READWRITE);
-
-       properties[PROP_LAST_POSITION] = g_param_spec_boxed("last-position",
-                                                                                                               "mock last position prop",
-                                                                                                               "mock last position data",
-                                                                                                               LOCATION_TYPE_POSITION,
-                                                                                                               G_PARAM_READABLE);
-
-       properties[PROP_POS_INTERVAL] = g_param_spec_uint("pos-interval",
-                                                                                                       "mock position interval prop",
-                                                                                                       "mock position interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_VEL_INTERVAL] = g_param_spec_uint("vel-interval",
-                                                                                                       "mock velocity interval prop",
-                                                                                                       "mock velocity interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_LOC_INTERVAL] = g_param_spec_uint("loc-interval",
-                                                                                                       "gps location interval prop",
-                                                                                                       "gps location interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_MIN_INTERVAL] = g_param_spec_uint("min-interval",
-                                                                                                       "mock distance-based interval prop",
-                                                                                                       "mock distance-based interval data",
-                                                                                                       LOCATION_MIN_INTERVAL_MIN,
-                                                                                                       LOCATION_MIN_INTERVAL_MAX,
-                                                                                                       LOCATION_MIN_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_MIN_DISTANCE] = g_param_spec_double("min-distance",
-                                                                                                               "mock distance-based distance prop",
-                                                                                                               "mock distance-based distance data",
-                                                                                                               LOCATION_MIN_DISTANCE_MIN,
-                                                                                                               LOCATION_MIN_DISTANCE_MAX,
-                                                                                                               LOCATION_MIN_DISTANCE_DEFAULT,
-                                                                                                               G_PARAM_READWRITE);
-
-       properties[PROP_BOUNDARY] = g_param_spec_pointer("boundary",
-                                                                                                       "mock boundary prop",
-                                                                                                       "mock boundary data",
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_REMOVAL_BOUNDARY] = g_param_spec_boxed("removal-boundary",
-                                                                                                                       "mock removal boundary prop",
-                                                                                                                       "mock removal boundary data",
-                                                                                                                       LOCATION_TYPE_BOUNDARY,
-                                                                                                                       G_PARAM_READWRITE);
-
-       /* Tizen 3.0 */
-       properties[PROP_SERVICE_STATUS] = g_param_spec_int("service-status",
-                                                                                                       "location service status prop",
-                                                                                                       "location service status data",
-                                                                                                       LOCATION_STATUS_NO_FIX,
-                                                                                                       LOCATION_STATUS_3D_FIX,
-                                                                                                       LOCATION_STATUS_NO_FIX,
-                                                                                                       G_PARAM_READABLE);
-
-       g_object_class_install_properties(gobject_class, PROP_MAX, properties);
-}
-
diff --git a/location/manager/location-mock.h b/location/manager/location-mock.h
deleted file mode 100755 (executable)
index 83255f6..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * libslp-location
- *
- * Copyright (c) 2010-2013 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Youngae Kang <youngae.kang@samsung.com>, Minjune Kim <sena06.kim@samsung.com>
- *                     Genie Kim <daejins.kim@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __LOCATION_MOCK_H__
-#define __LOCATION_MOCK_H__
-
-#include <glib-object.h>
-
-/**
- * @file location-mock.h
- * @brief This file contains the internal definitions and structures related to MOCK.
- */
-
-G_BEGIN_DECLS
-
-#define LOCATION_TYPE_MOCK                             (location_mock_get_type())
-#define LOCATION_MOCK(obj)                             (G_TYPE_CHECK_INSTANCE_CAST((obj), LOCATION_TYPE_MOCK, LocationMock))
-#define LOCATION_IS_MOCK(obj)                  (G_TYPE_CHECK_INSTANCE_TYPE((obj), LOCATION_TYPE_MOCK))
-#define LOCATION_MOCK_CLASS(klass)             (G_TYPE_CHECK_CLASS_CAST((klass), LOCATION_TYPE_MOCK, LocationMockClass))
-#define LOCATION_IS_MOCK_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass), LOCATION_TYPE_MOCK))
-#define LOCATION_MOCK_GET_CLASS(obj)           (G_TYPE_INSTANCE_GET_CLASS((obj), LOCATION_TYPE_MOCK, LocationMockClass))
-
-typedef struct _LocationMock           LocationMock;
-typedef struct _LocationMockClass      LocationMockClass;
-
-struct _LocationMock {
-       GObject parent_instance;
-};
-
-struct _LocationMockClass {
-       GObjectClass parent_class;
-
-       void (*enabled)(guint type);
-       void (*disabled)(guint type);
-       void (*service_updated)(gint type, gpointer data, gpointer velocity, gpointer accuracy);
-       void (*location_updated)(gint error, gpointer position, gpointer velocity, gpointer accuracy);
-       void (*zone_in)(gpointer boundary, gpointer position, gpointer accuracy);
-       void (*zone_out)(gpointer boundary, gpointer position, gpointer accuracy);
-       void (*status_changed)(guint type);
-};
-
-GType location_mock_get_type(void);
-
-G_END_DECLS
-
-#endif
index 3839c3a..b1d57aa 100644 (file)
@@ -53,8 +53,6 @@ typedef enum {
        LOCATION_STATUS_NO_FIX = 0,     /*/< No fix status. */
        LOCATION_STATUS_2D_FIX,         /*/< 2D fix status (latitude/longitude/speed/direction). */
        LOCATION_STATUS_3D_FIX,         /*/< 3D fix status (altitude/climb as well). */
-       LOCATION_STATUS_MOCK_SET,       /**< MOCK Location set*/
-       LOCATION_STATUS_MOCK_FAIL,      /**< MOACK Location failed */
 } LocationStatus;
 
 /**
index 1097686..d82b18d 100644 (file)
@@ -109,10 +109,8 @@ gint location_setting_add_notify(const gchar *path, SettingCB setting_cb, gpoint
        const char *event_name = NULL;
        event_name = __convert_event_from_vconf(path);
 
-       if (eventsystem_register_event(event_name, &g_event_req_id, (eventsystem_handler) __event_handler, NULL) != ES_R_OK) {
-
+       if (eventsystem_register_event(event_name, &g_event_req_id, (eventsystem_handler) __event_handler, NULL) != ES_R_OK)
                LOCATION_SECLOG("eventsystem_register_event failed");
-       }
 
        if (vconf_notify_key_changed(path, setting_cb, self)) {
                LOCATION_SECLOG("vconf notify add failed [%s]", path);
@@ -127,9 +125,8 @@ gint location_setting_ignore_notify(const gchar *path, SettingCB setting_cb)
        g_return_val_if_fail(path, -1);
        g_return_val_if_fail(setting_cb, -1);
 
-       if (eventsystem_unregister_event(g_event_req_id) != ES_R_OK) {
+       if (eventsystem_unregister_event(g_event_req_id) != ES_R_OK)
                LOCATION_SECLOG("eventsystem_unregister_event failed");
-       }
 
        if (vconf_ignore_key_changed(path, setting_cb)) {
                LOCATION_SECLOG("vconf notify remove failed [%s]", path);
index ed166d1..9a3def8 100644 (file)
@@ -68,9 +68,4 @@ gint location_state_ignore_notify(const gchar *path, SettingCB setting_cb);
                } \
        }
 
-/* For test
-#define VCONFKEY_LOCATION_MOCK_ENABLED "db/location/setting/MockEnabled"
-#define VCONFKEY_LOCATION_MOCK_STATE "memory/location/mock/state"
-*/
-
 #endif /* __LOCATION_SETTING_H__ */
index cdd0f38..177b48b 100755 (executable)
@@ -202,7 +202,6 @@ location_signaling(LocationObject *obj, guint32 signals[LAST_SIGNAL], gboolean e
        *prev_vel = location_velocity_copy(cur_vel);
        *prev_acc = location_accuracy_copy(cur_acc);
 
-       LOCATION_LOGD("cur_pos->status = %d", cur_pos->status);
        enable_signaling(obj, signals, prev_enabled, enabled, cur_pos->status);
        position_velocity_signaling(obj, signals, pos_interval, vel_interval, loc_interval, prev_pos_timestamp, prev_vel_timestamp, prev_loc_timestamp, boundary_list, cur_pos, cur_vel, cur_acc);
 }
index a35afd3..5de6736 100755 (executable)
@@ -45,6 +45,7 @@ typedef struct _LocationWpsPrivate {
        LocationWpsMod          *mod;
        GMutex                          mutex;
        gboolean                        is_started;
+       gboolean                        is_mock;
        guint                           app_type;
        gboolean                        set_noti;
        gboolean                        enabled;
@@ -203,8 +204,10 @@ location_setting_search_cb(keynode_t *key, gpointer self)
        g_return_if_fail(priv);
 
        if (location_setting_get_key_val(key) == VCONFKEY_LOCATION_WPS_SEARCHING) {
-               LOCATION_LOGD("enable_signaling : SERVICE_DISABLED");
-               enable_signaling(self, signals, &(priv->enabled), FALSE, LOCATION_STATUS_NO_FIX);
+               if (!location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED)) {
+                       LOCATION_LOGD("enable_signaling : SERVICE_DISABLED");
+                       enable_signaling(self, signals, &(priv->enabled), FALSE, LOCATION_STATUS_NO_FIX);
+               }
        }
 }
 
@@ -314,6 +317,12 @@ location_wps_dispose(GObject *gobject)
        g_return_if_fail(priv);
 
        g_mutex_clear(&priv->mutex);
+
+       if (priv->is_mock) {
+               priv->mod->ops.clear_mock_location(priv->mod->handler, NULL, gobject);
+               priv->is_mock = FALSE;
+       }
+
        if (priv->app_type != CPPAPP && priv->set_noti == TRUE) {
                location_setting_ignore_notify(VCONFKEY_LOCATION_NETWORK_ENABLED, location_setting_wps_cb);
                location_state_ignore_notify(VCONFKEY_LOCATION_WPS_STATE, location_setting_search_cb);
@@ -723,6 +732,46 @@ location_wps_get_nmea(LocationWps *self, char **nmea_data)
        return LOCATION_ERROR_NOT_SUPPORTED;
 }
 
+static int
+location_wps_set_mock_location(LocationWps *self, LocationPosition *position, LocationVelocity *velocity, LocationAccuracy *accuracy)
+{
+       LOC_FUNC_LOG
+       LocationWpsPrivate *priv = GET_PRIVATE(self);
+       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+       g_return_val_if_fail(priv->mod->ops.set_mock_location, LOCATION_ERROR_NOT_AVAILABLE);
+
+       int ret = LOCATION_ERROR_NONE;
+       if (!location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED)) {
+               ret = LOCATION_ERROR_SETTING_OFF;
+       } else {
+               ret = priv->mod->ops.set_mock_location(priv->mod->handler, position, velocity, accuracy, NULL, self);
+               LOC_IF_FAIL_LOG(ret, _E, "Failed to set_mock_location [%s]", err_msg(ret));
+               priv->is_mock = TRUE;
+       }
+
+       return ret;
+}
+
+static int
+location_wps_clear_mock_location(LocationWps *self)
+{
+       LOC_FUNC_LOG
+       LocationWpsPrivate *priv = GET_PRIVATE(self);
+       g_return_val_if_fail(priv->mod->handler, LOCATION_ERROR_NOT_AVAILABLE);
+       g_return_val_if_fail(priv->mod->ops.clear_mock_location, LOCATION_ERROR_NOT_AVAILABLE);
+
+       int ret = LOCATION_ERROR_NONE;
+       if (!location_setting_get_int(VCONFKEY_LOCATION_MOCK_ENABLED)) {
+               ret = LOCATION_ERROR_SETTING_OFF;
+       } else {
+               ret = priv->mod->ops.clear_mock_location(priv->mod->handler, NULL, self);
+               LOC_IF_FAIL_LOG(ret, _E, "Failed to clear_mock_location [%s]", err_msg(ret));
+               priv->is_mock = FALSE;
+       }
+
+       return ret;
+}
+
 static void
 location_ielement_interface_init(LocationIElementInterface *iface)
 {
@@ -739,6 +788,8 @@ location_ielement_interface_init(LocationIElementInterface *iface)
        iface->set_option = (TYPE_SET_OPTION)location_wps_set_option;
        iface->request_single_location = (TYPE_REQUEST_SINGLE_LOCATION)location_wps_request_single_location;
        iface->get_nmea = (TYPE_GET_NMEA)location_wps_get_nmea;
+       iface->set_mock_location = (TYPE_SET_MOCK_LOCATION) location_wps_set_mock_location;
+       iface->clear_mock_location = (TYPE_CLEAR_MOCK_LOCATION) location_wps_clear_mock_location;
 }
 
 static void
@@ -753,6 +804,7 @@ location_wps_init(LocationWps *self)
 
        g_mutex_init(&priv->mutex);
        priv->is_started = FALSE;
+       priv->is_mock = FALSE;
        priv->set_noti = FALSE;
        priv->enabled = FALSE;
 
@@ -791,170 +843,105 @@ location_wps_class_init(LocationWpsClass *klass)
 
        g_type_class_add_private(klass, sizeof(LocationWpsPrivate));
 
-       signals[SERVICE_ENABLED] = g_signal_new("service-enabled",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationWpsClass, enabled),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__UINT,
-                                                                                       G_TYPE_NONE, 1,
-                                                                                       G_TYPE_UINT);
-
-       signals[SERVICE_DISABLED] = g_signal_new("service-disabled",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationWpsClass, disabled),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__UINT,
-                                                                                       G_TYPE_NONE, 1,
-                                                                                       G_TYPE_UINT);
+       signals[SERVICE_ENABLED] =
+                       g_signal_new("service-enabled", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationWpsClass, enabled),
+                       NULL, NULL, location_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT);
+
+       signals[SERVICE_DISABLED] =
+                       g_signal_new("service-disabled", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationWpsClass, disabled),
+                       NULL, NULL, location_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT);
 
 #if 0 /* TODO: STATUS_CHANGED will aggregate SERVICE_ENABLED and SERVICE_DISABLED */
-       signals[STATUS_CHANGED] = g_signal_new("status-changed",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationWpsClass, status_changed),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__UINT,
-                                                                                       G_TYPE_NONE, 1,
-                                                                                       G_TYPE_UINT);
+       signals[STATUS_CHANGED] =
+                       g_signal_new("status-changed", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationWpsClass, status_changed),
+                       NULL, NULL, location_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT);
 #endif
 
-       signals[SERVICE_UPDATED] = g_signal_new("service-updated",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationWpsClass, service_updated),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__INT_POINTER_POINTER_POINTER,
-                                                                                       G_TYPE_NONE, 4,
-                                                                                       G_TYPE_INT,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER);
-
-       signals[LOCATION_UPDATED] = g_signal_new("location-updated",
-                                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                                       G_SIGNAL_RUN_FIRST |
-                                                                                       G_SIGNAL_NO_RECURSE,
-                                                                                       G_STRUCT_OFFSET(LocationWpsClass, location_updated),
-                                                                                       NULL, NULL,
-                                                                                       location_VOID__INT_POINTER_POINTER_POINTER,
-                                                                                       G_TYPE_NONE, 4,
-                                                                                       G_TYPE_INT,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER,
-                                                                                       G_TYPE_POINTER);
-
-       signals[ZONE_IN] = g_signal_new("zone-in",
-                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                       G_SIGNAL_RUN_FIRST |
-                                                                       G_SIGNAL_NO_RECURSE,
-                                                                       G_STRUCT_OFFSET(LocationWpsClass, zone_in),
-                                                                       NULL, NULL,
-                                                                       location_VOID__POINTER_POINTER_POINTER,
-                                                                       G_TYPE_NONE, 3,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER);
-
-       signals[ZONE_OUT] = g_signal_new("zone-out",
-                                                                       G_TYPE_FROM_CLASS(klass),
-                                                                       G_SIGNAL_RUN_FIRST |
-                                                                       G_SIGNAL_NO_RECURSE,
-                                                                       G_STRUCT_OFFSET(LocationWpsClass, zone_out),
-                                                                       NULL, NULL,
-                                                                       location_VOID__POINTER_POINTER_POINTER,
-                                                                       G_TYPE_NONE, 3,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER,
-                                                                       G_TYPE_POINTER);
-
-       properties[PROP_METHOD_TYPE] = g_param_spec_int("method",
-                                                                                                       "method type",
-                                                                                                       "location method type name",
-                                                                                                       LOCATION_METHOD_WPS,
-                                                                                                       LOCATION_METHOD_WPS,
-                                                                                                       LOCATION_METHOD_WPS,
-                                                                                                       G_PARAM_READABLE);
-
-       properties[PROP_IS_STARTED] = g_param_spec_boolean("is_started",
-                                                                                                       "wps is started prop",
-                                                                                                       "wps is started status",
-                                                                                                       FALSE,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_LAST_POSITION] = g_param_spec_boxed("last-position",
-                                                                                                               "wps last position prop",
-                                                                                                               "wps last position data",
-                                                                                                               LOCATION_TYPE_POSITION,
-                                                                                                               G_PARAM_READABLE);
-
-       properties[PROP_POS_INTERVAL] = g_param_spec_uint("pos-interval",
-                                                                                                       "wps position interval prop",
-                                                                                                       "wps position interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_VEL_INTERVAL] = g_param_spec_uint("vel-interval",
-                                                                                                       "wps velocity interval prop",
-                                                                                                       "wps velocity interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_LOC_INTERVAL] = g_param_spec_uint("loc-interval",
-                                                                                                       "gps location interval prop",
-                                                                                                       "gps location interval data",
-                                                                                                       LOCATION_UPDATE_INTERVAL_MIN,
-                                                                                                       LOCATION_UPDATE_INTERVAL_MAX,
-                                                                                                       LOCATION_UPDATE_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_MIN_INTERVAL] = g_param_spec_uint("min-interval",
-                                                                                                       "wps distance-based interval prop",
-                                                                                                       "wps distance-based interval data",
-                                                                                                       LOCATION_MIN_INTERVAL_MIN,
-                                                                                                       LOCATION_MIN_INTERVAL_MAX,
-                                                                                                       LOCATION_MIN_INTERVAL_DEFAULT,
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_MIN_DISTANCE] = g_param_spec_double("min-distance",
-                                                                                                               "wps distance-based distance prop",
-                                                                                                               "wps distance-based distance data",
-                                                                                                               LOCATION_MIN_DISTANCE_MIN,
-                                                                                                               LOCATION_MIN_DISTANCE_MAX,
-                                                                                                               LOCATION_MIN_DISTANCE_DEFAULT,
-                                                                                                               G_PARAM_READWRITE);
-
-       properties[PROP_BOUNDARY] = g_param_spec_pointer("boundary",
-                                                                                                       "wps boundary prop",
-                                                                                                       "wps boundary data",
-                                                                                                       G_PARAM_READWRITE);
-
-       properties[PROP_REMOVAL_BOUNDARY] = g_param_spec_boxed("removal-boundary",
-                                                                                                               "wps removal boundary prop",
-                                                                                                               "wps removal boundary data",
-                                                                                                               LOCATION_TYPE_BOUNDARY,
-                                                                                                               G_PARAM_READWRITE);
+       signals[SERVICE_UPDATED] =
+                       g_signal_new("service-updated", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationWpsClass, service_updated),
+                       NULL, NULL, location_VOID__INT_POINTER_POINTER_POINTER,
+                       G_TYPE_NONE, 4, G_TYPE_INT, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+
+       signals[LOCATION_UPDATED] =
+                       g_signal_new("location-updated", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationWpsClass, location_updated),
+                       NULL, NULL, location_VOID__INT_POINTER_POINTER_POINTER,
+                       G_TYPE_NONE, 4, G_TYPE_INT, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+
+       signals[ZONE_IN] =
+                       g_signal_new("zone-in", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationWpsClass, zone_in),
+                       NULL, NULL, location_VOID__POINTER_POINTER_POINTER,
+                       G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+
+       signals[ZONE_OUT] =
+                       g_signal_new("zone-out", G_TYPE_FROM_CLASS(klass),
+                       G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE,
+                       G_STRUCT_OFFSET(LocationWpsClass, zone_out),
+                       NULL, NULL, location_VOID__POINTER_POINTER_POINTER,
+                       G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
+
+       properties[PROP_METHOD_TYPE] =
+                       g_param_spec_int("method", "method type", "location method type name",
+                       LOCATION_METHOD_WPS, LOCATION_METHOD_WPS, LOCATION_METHOD_WPS, G_PARAM_READABLE);
+
+       properties[PROP_IS_STARTED] =
+                       g_param_spec_boolean("is_started", "wps is started prop",
+                       "wps is started status", FALSE, G_PARAM_READWRITE);
+
+       properties[PROP_LAST_POSITION] =
+                       g_param_spec_boxed("last-position", "wps last position prop",
+                       "wps last position data", LOCATION_TYPE_POSITION, G_PARAM_READABLE);
+
+       properties[PROP_POS_INTERVAL] =
+                       g_param_spec_uint("pos-interval", "wps position interval prop",
+                       "wps position interval data", LOCATION_UPDATE_INTERVAL_MIN,
+                       LOCATION_UPDATE_INTERVAL_MAX, LOCATION_UPDATE_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_VEL_INTERVAL] =
+                       g_param_spec_uint("vel-interval", "wps velocity interval prop",
+                       "wps velocity interval data", LOCATION_UPDATE_INTERVAL_MIN,
+                       LOCATION_UPDATE_INTERVAL_MAX, LOCATION_UPDATE_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_LOC_INTERVAL] =
+                       g_param_spec_uint("loc-interval", "gps location interval prop",
+                       "gps location interval data", LOCATION_UPDATE_INTERVAL_MIN,
+                       LOCATION_UPDATE_INTERVAL_MAX, LOCATION_UPDATE_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_MIN_INTERVAL] =
+                       g_param_spec_uint("min-interval", "wps distance-based interval prop",
+                       "wps distance-based interval data", LOCATION_MIN_INTERVAL_MIN,
+                       LOCATION_MIN_INTERVAL_MAX, LOCATION_MIN_INTERVAL_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_MIN_DISTANCE] =
+                       g_param_spec_double("min-distance", "wps distance-based distance prop",
+                       "wps distance-based distance data", LOCATION_MIN_DISTANCE_MIN,
+                       LOCATION_MIN_DISTANCE_MAX, LOCATION_MIN_DISTANCE_DEFAULT, G_PARAM_READWRITE);
+
+       properties[PROP_BOUNDARY] =
+                       g_param_spec_pointer("boundary", "wps boundary prop",
+                       "wps boundary data", G_PARAM_READWRITE);
+
+       properties[PROP_REMOVAL_BOUNDARY] =
+                       g_param_spec_boxed("removal-boundary", "wps removal boundary prop",
+                       "wps removal boundary data", LOCATION_TYPE_BOUNDARY, G_PARAM_READWRITE);
 
        /* Tizen 3.0 */
-       properties[PROP_SERVICE_STATUS] = g_param_spec_int("service-status",
-                                                                                                       "location service status prop",
-                                                                                                       "location service status data",
-                                                                                                       LOCATION_STATUS_NO_FIX,
-                                                                                                       LOCATION_STATUS_3D_FIX,
-                                                                                                       LOCATION_STATUS_NO_FIX,
-                                                                                                       G_PARAM_READABLE);
-
-       g_object_class_install_properties(gobject_class,
-                                                                       PROP_MAX,
-                                                                       properties);
+       properties[PROP_SERVICE_STATUS] =
+                       g_param_spec_int("service-status", "location service status prop",
+                       "location service status data", LOCATION_STATUS_NO_FIX,
+                       LOCATION_STATUS_3D_FIX, LOCATION_STATUS_NO_FIX, G_PARAM_READABLE);
+
+       g_object_class_install_properties(gobject_class, PROP_MAX, properties);
 }
 
index 33de067..cd641f5 100755 (executable)
@@ -34,7 +34,6 @@
 #include "location-hybrid.h"
 #include "location-gps.h"
 #include "location-wps.h"
-#include "location-mock.h"
 #include "location-position.h"
 #include "module-internal.h"
 #include "location-common-util.h"
@@ -65,7 +64,7 @@ static char *__convert_setting_key(LocationMethod method)
        case LOCATION_METHOD_WPS:
                key = g_strdup(VCONFKEY_LOCATION_NETWORK_ENABLED);
                break;
-       case LOCATION_METHOD_MOCK:
+       case INTERNAL_METHOD_MOCK:
                key = g_strdup(VCONFKEY_LOCATION_MOCK_ENABLED);
                break;
        default:
@@ -84,8 +83,6 @@ static LocationMethod __convert_method_from_key(const char *key)
                _method = LOCATION_METHOD_GPS;
        else if (g_strcmp0(key, VCONFKEY_LOCATION_NETWORK_ENABLED) == 0)
                _method = LOCATION_METHOD_WPS;
-       else if (g_strcmp0(key, VCONFKEY_LOCATION_MOCK_ENABLED) == 0)
-               _method = LOCATION_METHOD_MOCK;
 
        return _method;
 }
@@ -136,8 +133,6 @@ location_new(LocationMethod method)
        case LOCATION_METHOD_WPS:
                self = g_object_new(LOCATION_TYPE_WPS, NULL);
                break;
-       case LOCATION_METHOD_MOCK:
-               self = g_object_new(LOCATION_TYPE_MOCK, NULL);
        default:
                break;
        }
@@ -230,18 +225,15 @@ location_is_supported_method(LocationMethod method)
 
        switch (method) {
        case LOCATION_METHOD_HYBRID:
-                       if (module_is_supported("gps") || module_is_supported("wps") || module_is_supported("mock"))
-                               is_supported = TRUE;
-                       break;
+               if (module_is_supported("gps") || module_is_supported("wps"))
+                       is_supported = TRUE;
+               break;
        case LOCATION_METHOD_GPS:
-                       is_supported = module_is_supported("gps");
-                       break;
+               is_supported = module_is_supported("gps");
+               break;
        case LOCATION_METHOD_WPS:
-                       is_supported = module_is_supported("wps");
-                       break;
-       case LOCATION_METHOD_MOCK:
-                       is_supported = module_is_supported("mock");
-                       break;
+               is_supported = module_is_supported("wps");
+               break;
        default:
                        break;
        }
@@ -634,28 +626,10 @@ location_set_option(LocationObject *obj, const char *option)
 /*
  * Tizen 3.0
  */
-
 EXPORT_API int
-location_get_service_state(LocationObject *obj, int *state)
+location_enable_mock(const int enable)
 {
-       g_return_val_if_fail(obj, LOCATION_ERROR_PARAMETER);
-       g_return_val_if_fail(state, LOCATION_ERROR_PARAMETER);
-
        int ret = LOCATION_ERROR_NONE;
-       ret = location_ielement_get_status(LOCATION_IELEMENT(obj), state);
-       LOC_IF_FAIL(ret, _E, "Fail to get_position [%s]", err_msg(ret));
-
-       return ret;
-}
-
-
-EXPORT_API int
-location_enable_mock(const LocationMethod method, const int enable)
-{
-       int ret = 0;
-       char *_key = NULL;
-
-       LOC_COND_RET(method != LOCATION_METHOD_MOCK, LOCATION_ERROR_PARAMETER, _E, "Method is not mock [%s]", err_msg(LOCATION_ERROR_PARAMETER));
 
 #ifndef TIZEN_PROFILE_TV
        ret = location_check_cynara(LOCATION_PRIVILEGE);
@@ -669,72 +643,15 @@ location_enable_mock(const LocationMethod method, const int enable)
        LOC_COND_RET(!developer_option, LOCATION_ERROR_NOT_ALLOWED, _E, "Cannot enable mock location because developer option is not turned on", ret);
 #endif
 
-       _key = __convert_setting_key(method);
-       LOC_COND_RET(!_key, LOCATION_ERROR_NOT_SUPPORTED, _E, "Invalid method = %d [%s]", method, err_msg(LOCATION_ERROR_NOT_SUPPORTED));
-
-       ret = vconf_set_int(_key, enable);
+       ret = vconf_set_int(VCONFKEY_LOCATION_MOCK_ENABLED, enable);
        if (ret != VCONF_OK) {
-               LOCATION_SECLOG("vconf_set_int failed [%s], ret=[%d]", _key, ret);
-               g_free(_key);
+               LOCATION_SECLOG("vconf_set_int failed [MOCK_ENABLED], ret=[%d]", ret);
                return LOCATION_ERROR_NOT_ALLOWED;
        }
 
-       g_free(_key);
-
        return ret;
 }
 
-#if 0
-static char *__convert_mock_setting_key(LocationMethod method)
-{
-       char *key = NULL;
-       switch (method) {
-       case LOCATION_METHOD_MOCK_GPS:
-                       key = g_strdup(VCONFKEY_LOCATION_MOCK_GPS_ENABLED);
-                       break;
-       case LOCATION_METHOD_MOCK_WPS:
-                       key = g_strdup(VCONFKEY_LOCATION_MOCK_NETWORK_ENABLED);
-                       break;
-       default:
-                       break;
-       }
-       return key;
-}
-
-EXPORT_API int
-location_set_mock_method_enabled(const LocationMethod method, const int enable)
-{
-       int ret = 0;
-       char *_key = NULL;
-       int vconf_val = 0;
-
-       _key = __convert_setting_key(method);
-       LOC_COND_RET(!_key, LOCATION_ERROR_NOT_SUPPORTED, _E, "Invalid method = %d [%s]", method, err_msg(LOCATION_ERROR_NOT_SUPPORTED));
-
-       ret = vconf_get_int(_key, &vconf_val);
-       if (ret != VCONF_OK) {
-               LOCATION_SECLOG("failed [%s], error [%d]", _key, ret);
-               g_free(_key);
-               return LOCATION_ERROR_NOT_ALLOWED;
-       }
-
-       if (vconf_val) {
-               _key = __convert_mock_setting_key(method);
-               LOC_COND_RET(!_key, LOCATION_ERROR_NOT_SUPPORTED, _E, "Invalid method[%d]", method);
-               ret = vconf_set_int(_key, enable);
-               if (ret != VCONF_OK) {
-                       LOCATION_SECLOG("vconf_set_int failed [%s], ret=[%d]", _key, ret);
-                       g_free(_key);
-                       return LOCATION_ERROR_NOT_ALLOWED;
-               }
-               g_free(_key);
-       }
-
-       return ret;
-}
-#endif
-
-
 EXPORT_API int
 location_set_mock_location(LocationObject *obj, const LocationPosition *position, const LocationVelocity *velocity, const LocationAccuracy *accuracy)
 {
index 61669e5..9e37dce 100755 (executable)
@@ -297,10 +297,10 @@ int location_get_nmea(LocationObject *obj, char **nmea_data);
 
 /* Tizen 3.0 */
 
-int location_get_service_state(LocationObject *obj, int *state);
-int location_enable_mock(const LocationMethod method, const int enable);
-int location_set_mock_method_enabled(const LocationMethod method, const int enable);
+int location_enable_mock(const int enable);
+
 int location_set_mock_location(LocationObject *obj, const LocationPosition *position, const LocationVelocity *velocity, const LocationAccuracy *accuracy);
+
 int location_clear_mock_location(LocationObject *obj);
 
 int location_enable_restriction(const int enable);
index af2d1f2..54451bb 100644 (file)
@@ -82,6 +82,8 @@ typedef struct {
        int (*get_last_satellite)(gpointer handle, LocationSatellite **satellite);                                                     /*/< This is used for getting a last satellite information from a plug-in. */
        int (*set_option)(gpointer handle, const char *option);
        int (*set_position_update_interval)(gpointer handle, guint interval);
+       int (*set_mock_location)(gpointer handle, LocationPosition *position, LocationVelocity *velocity, LocationAccuracy *accuracy, LocModStatusCB status_cb, gpointer userdata);
+       int (*clear_mock_location)(gpointer handle, LocModStatusCB status_cb, gpointer userdata);
 } LocModGpsOps;
 
 /**
@@ -93,23 +95,10 @@ typedef struct {
        int (*get_position)(gpointer handle, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy);   /*/< This is used for getting a position from a plug-in. */
        int (*get_last_position)(gpointer handle, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy);   /*/< This is used for getting a last position from a plug-in. */
        int (*set_option)(gpointer handle, const char *option);
+       int (*set_mock_location)(gpointer handle, LocationPosition *position, LocationVelocity *velocity, LocationAccuracy *accuracy, LocModStatusCB status_cb, gpointer userdata);
+       int (*clear_mock_location)(gpointer handle, LocModStatusCB status_cb, gpointer userdata);
 } LocModWpsOps;
 
-typedef struct {
-       int (*start)(gpointer handle, LocModStatusCB status_cb, LocModPositionExtCB pos_ext_cb, gpointer userdata);   /*/< This is used for starting a GPS device from a plug-in. #LocModStatusCB, #LocModPositionExtCB are given from a location framework to a plug-in for asynchronous signaling. */
-       int (*stop)(gpointer handle);   /*/< This is used for stopping a GPS device name from a plug-in. */
-#if 0 /* Mock doesn't support batch */
-       int (*start_batch)(gpointer handle, LocModBatchExtCB batch_ext_cb, guint batch_interval, guint batch_period, gpointer userdata);   /*/< This is used for starting a GPS batch mode from a plug-in. #LocModBatchExtCB are given from a location framework to a plug-in for asynchronous signaling. */
-       int (*stop_batch)(gpointer handle);   /*/< This is used for stopping a GPS batch mode from a plug-in. */
-#endif
-       int (*get_position)(gpointer handle, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy);   /*/< This is used for getting a position from a plug-in. */
-       int (*get_last_position)(gpointer handle, LocationPosition **position, LocationVelocity **velocity, LocationAccuracy **accuracy);   /*/< This is used for getting a last position from a plug-in. */
-       int (*set_option)(gpointer handle, const char *option);
-       /* int (*set_position_update_interval)(gpointer handle, guint interval); */
-       int (*set_mock_location)(gpointer handle, LocationPosition *position, LocationVelocity *velocity, LocationAccuracy *accuracy, LocModStatusCB status_cb, gpointer userdata);   /*/< This is used for getting a position from a plug-in. */
-       int (*clear_mock_location)(gpointer handle, LocModStatusCB status_cb, gpointer userdata);   /*/< This is used for getting a position from a plug-in. */
-} LocModMockOps;
-
 /**
  * @brief This is used for exported APIs in a plug-in for a location framework.
  */
index 5e70447..dca37c2 100755 (executable)
@@ -147,18 +147,6 @@ static gpointer mod_new(const char *module_name)
                        ret_mod = NULL;
                } else
                        ret_mod = (gpointer) _mod;
-       } else if (g_str_has_prefix(module_name, "mock")) {
-               LocationMockMod *_mod = g_new0(LocationMockMod, 1);
-               _mod->gmod = gmod;
-               _mod->init = init;
-               _mod->shutdown = shutdown;
-               _mod->handler = _mod->init(&(_mod->ops));
-               if (!_mod->handler) {
-                       LOCATION_LOGW("module init failed");
-                       gmod_free(_mod->gmod);
-                       ret_mod = NULL;
-               } else
-                       ret_mod = (gpointer) _mod;
        } else {
                LOCATION_LOGW("module name (%s) is wrong", module_name);
                ret_mod = NULL;
@@ -191,16 +179,6 @@ static void mod_free(gpointer mod, const char *module_name)
                _mod->shutdown = NULL;
                gmod_free(_mod->gmod);
                _mod->gmod = NULL;
-       } else if (0 == g_strcmp0(module_name, "mock")) {
-               LocationMockMod *_mod = (LocationMockMod *) mod;
-               if (_mod->shutdown && _mod->handler)
-                       _mod->shutdown(_mod->handler);
-
-               _mod->handler = NULL;
-               _mod->init = NULL;
-               _mod->shutdown = NULL;
-               gmod_free(_mod->gmod);
-               _mod->gmod = NULL;
        } else {
                LOCATION_LOGW("module name (%s) is wrong", module_name);
        }
index 6d2998d..7286f6a 100644 (file)
@@ -54,14 +54,6 @@ typedef struct {
        LocModWpsOps ops;
 } LocationWpsMod;
 
-typedef struct {
-       GMod *gmod;
-       gpointer handler;
-       gpointer(*init)(LocModMockOps *ops);
-       void (*shutdown)(gpointer handle);
-       LocModMockOps ops;
-} LocationMockMod;
-
 gboolean module_init(void);
 gpointer module_new(const char *module_name);
 void module_free(gpointer mod, const char *module_name);
index d2f7f2f..1025a05 100644 (file)
@@ -1,3 +1,9 @@
+[Version]      libslp-location_1.3.2
+[Date]         18 Aug 2016
+[Changes]      Change mock location behavior
+[Developer]    Kyoungjun Sung <kj7.sung@samsung.com>
+
+================================================================================
 [Version]      libslp-location_1.3.1
 [Date]         3 Jun 2016
 [Changes]      Change service state behavior when GPS/WPS searching mode
index c2d6fe9..dc98bbb 100755 (executable)
@@ -1,6 +1,6 @@
 Name: liblbs-location
 Summary: Location Based Service Library
-Version: 1.3.1
+Version: 1.3.2
 Release: 1
 Group: Location/Libraries
 License: Apache-2.0