gchar * RemoveUserDone;
gchar * GetUserList;
gchar * SwitchUserDone;
+ gchar * GetCurrentUser;
} dbus_method_call = {
.AddUser = "AddUser",
.RemoveUserWait = "RemoveUserWait",
.RemoveUserDone = "RemoveUserDone",
.GetUserList = "GetUserList",
- .SwitchUserDone = "SwitchUserDone"
+ .SwitchUserDone = "SwitchUserDone",
+ .GetCurrentUser = "GetCurrentUser"
};
static struct {
EXPORT_API int subsession_get_current_user(int session_uid, int *user) {
- return TIZEN_ERROR_ACCOUNT;
-}
+ GError *error = NULL;
-EXPORT_API int subsession_is_supported (int *supported) {
+ if (session_connection_data.connection == NULL) {
+ session_connection_data.connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
+ if(error != NULL) {
+ g_error_free(error);
+ return SUBSESSION_ERROR_NOT_AVAILABLE;
+ }
+ }
- return TIZEN_ERROR_ACCOUNT;
+ GVariant * params = g_variant_new("(i)", session_uid);
+ if(params == NULL) {
+ return SUBSESSION_ERROR_OUT_OF_MEMORY;
+ }
+
+ GVariant *retgv = NULL;
+ GError *call_sync_error = NULL;
+
+ retgv = g_dbus_connection_call_sync(
+ conn_config_,
+ dbus_method_call.GetCurrentUser, params,
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ libsessiond_default_timeout,
+ NULL,
+ &call_sync_error
+ );
+
+ if (!retgv || call_sync_error) {
+ int ret = map_dbus_call_error_to_return_value(call_sync_error);
+ g_error_free(call_sync_error);
+ return ret;
+ }
+
+ maybe_g_variant_get_int_(retgv,"(i)", user);
+
+ return SUBSESSION_ERROR_NONE;
}
int callback_removeuser_reference;
int callback_switchuser_reference;
+const int test_session_id = 5001;
+
gboolean callback_pending(gpointer data) {
ud_ctrl *ud = (ud_ctrl*)data;
g_atomic_int_set(&callback_removeuser_reference, 0);
test_user_data test_add_1_1;
- test_add_1_1.session_id = 5001;
+ test_add_1_1.session_id = test_session_id;
test_add_1_1.user_id = 1;
test_add_1_1.callback_result = -1;
int add_user_res_1_1 = subsession_add_user(test_add_1_1.session_id, test_add_1_1.user_id, test_reply_adduser_callback, (void *)&test_add_1_1);
test_user_data test_add_1_2;
- test_add_1_2.session_id = 5001;
+ test_add_1_2.session_id = test_session_id;
test_add_1_2.user_id = 2;
test_add_1_2.callback_result = -1;
int add_user_res_1_2 = subsession_add_user(test_add_1_2.session_id, test_add_1_2.user_id, test_reply_adduser_callback, (void *)&test_add_1_2);
test_user_data_switch test_switch_1_1_to_2;
- test_switch_1_1_to_2.session_id = 5001;
+ test_switch_1_1_to_2.session_id = test_session_id;
test_switch_1_1_to_2.prev_user_id = 1;
test_switch_1_1_to_2.next_user_id = 2;
test_switch_1_1_to_2.callback_result = -1;
test_switch_1_1_to_2.next_user_id,
test_reply_switchuser_callback, (void *)&test_switch_1_1_to_2);
+ int got_current_user = 0;
+
+ int get_curr_user_res = subsession_get_current_user(test_session_id, &got_current_user);
+
test_user_data test_remove_1_1;
- test_remove_1_1.session_id = 5001;
+ test_remove_1_1.session_id = test_session_id;
test_remove_1_1.user_id = 1;
test_remove_1_1.callback_result = -1;
int remove_user_res_1_1 = subsession_remove_user(test_remove_1_1.session_id, test_remove_1_1.user_id, test_reply_removeuser_callback, (void *)&test_remove_1_1);
test_user_data test_remove_1_2;
- test_remove_1_2.session_id = 5001;
+ test_remove_1_2.session_id = test_session_id;
test_remove_1_2.user_id = 2;
test_remove_1_2.callback_result = -1;
int remove_user_res_1_2 = subsession_remove_user(test_remove_1_2.session_id, test_remove_1_2.user_id, test_reply_removeuser_callback, (void *)&test_remove_1_2);
EXPECT_EQ(switch_user_res_1_1_to_2, 0);
EXPECT_EQ(remove_user_res_1_1, 0);
EXPECT_EQ(remove_user_res_1_2, 0);
+ EXPECT_EQ(get_curr_user_res, 0);
+
+ EXPECT_EQ(got_current_user, 2);
EXPECT_EQ(0, test_add_1_1.callback_result);
EXPECT_EQ(0, test_add_1_2.callback_result);