Implementation of subsession_get_current_user 06/275306/6
authorArkadiusz Nowak <a.nowak3@samsung.com>
Fri, 20 May 2022 09:33:06 +0000 (11:33 +0200)
committerArkadiusz Nowak <a.nowak3@samsung.com>
Fri, 27 May 2022 12:58:13 +0000 (14:58 +0200)
removed subsession_is_supported

Change-Id: I987fe917859571087a2a2abd237facaa0856e15e

libsessiond/include/sessiond.h
libsessiond/src/lib.c
libsessiond/target_test/test_api_switchuser.cpp

index 4d7f702..9171b34 100644 (file)
@@ -87,7 +87,6 @@ int subsession_switch_wait_done(int session_uid, uint64_t switch_id);
 int subsession_get_user_list(int session_uid, int **user_list, int *user_count);
 int subsession_get_current_user(int session_uid, int *user);
 
-
 typedef int (*subsession_event_callback) (subsession_event_info info, void *cb_data);
 int subsession_register_event_callback(int session_uid, subsession_event_type_e event_bits, subsession_event_callback cb, void *cb_data);
 int subsession_unregister_event_callback(int session_uid, subsession_event_type_e event_bits);
index 7fd8cc4..1cfc4ab 100644 (file)
@@ -56,6 +56,7 @@ static struct {
        gchar * RemoveUserDone;
        gchar * GetUserList;
        gchar * SwitchUserDone;
+       gchar * GetCurrentUser;
 
 } dbus_method_call = {
        .AddUser = "AddUser",
@@ -66,7 +67,8 @@ static struct {
        .RemoveUserWait = "RemoveUserWait",
        .RemoveUserDone = "RemoveUserDone",
        .GetUserList = "GetUserList",
-       .SwitchUserDone = "SwitchUserDone"
+       .SwitchUserDone = "SwitchUserDone",
+       .GetCurrentUser = "GetCurrentUser"
 };
 
 static struct {
@@ -1020,10 +1022,41 @@ EXPORT_API int subsession_get_user_list(int session_uid, int **user_list, int *u
 
 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;
 }
index 47d0c19..0df3e87 100644 (file)
@@ -30,6 +30,8 @@ int callback_adduser_reference;
 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;
@@ -116,20 +118,20 @@ TEST(subsession_switch_user_test, APISwitchUserTest) {
        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;
@@ -138,14 +140,18 @@ TEST(subsession_switch_user_test, APISwitchUserTest) {
                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);
@@ -161,6 +167,9 @@ TEST(subsession_switch_user_test, APISwitchUserTest) {
        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);