Enable sending change assistant requests 80/191080/4
authorJi-hoon Lee <dalton.lee@samsung.com>
Thu, 11 Oct 2018 07:27:52 +0000 (16:27 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Tue, 23 Oct 2018 07:40:00 +0000 (16:40 +0900)
Change-Id: I95bb27354a71285374a3433f7e44125e34f216d9

client/ma_ui.c
client/ma_ui_dbus.c
client/ma_ui_dbus.h

index 44b00b063d79efc92875ed7dbb67b630706bf131..12d8ad08546b033de864c36e8a6ef6b43d9d421d 100644 (file)
@@ -715,12 +715,13 @@ int ma_ui_change_assistant(const char* app_id)
        }
 
        /* check state */
-       if (MA_STATE_INITIALIZED!= state) {
+       if (MA_STATE_READY != state) {
                SLOG(LOG_ERROR, TAG_MAUI, "[UI ERROR] Invalid state: Current state is not 'Initialized' (%d)", state);
                return MA_ERROR_INVALID_STATE;
        }
 
        int ret = -1;
+       ma_ui_dbus_request_change_assistant(app_id);
 /*     ret = ma_config_mgr_change_assistant(app_id);
        if (0 != ret) {
                SLOG(LOG_ERROR, TAG_MAUI, "[UI ERROR] Fail to set default assistant")_;
index 5630b063a4c35d64ae61ea66284556abbc8243ea..7cedc1983437f77c61cd97c674161fbe1e49fb26 100644 (file)
@@ -634,3 +634,76 @@ int ma_ui_dbus_request_deinitialize(int pid)
        return result;
 }
 
+int ma_ui_dbus_request_change_assistant(const char *appid)
+{
+       DBusError err;
+       dbus_error_init(&err);
+
+       bool exist = dbus_bus_name_has_owner(g_ui_conn_sender, MA_SERVER_SERVICE_NAME, &err);
+       if (dbus_error_is_set(&err)) {
+               SLOG(LOG_ERROR, TAG_MAUI, "[ERROR] Dbus Error (%s)", err.message);
+               dbus_error_free(&err);
+       }
+
+       int ret;
+       if (false == exist) {
+               ret = __dbus_restore_daemon();
+               if (MA_ERROR_NONE != ret) {
+                       SLOG(LOG_ERROR, TAG_MAUI, "[ERROR] Fail to restore daemon");
+                       return MA_ERROR_TIMED_OUT;
+               }
+               return MA_ERROR_OPERATION_FAILED;
+       }
+
+       DBusMessage* msg;
+
+       msg = dbus_message_new_method_call(
+                         MA_SERVER_SERVICE_NAME,
+                         MA_SERVER_SERVICE_OBJECT_PATH,
+                         MA_SERVER_SERVICE_INTERFACE,
+                         MA_UI_METHOD_CHANGE_ASSISTANT);
+
+       if (NULL == msg) {
+               SLOG(LOG_ERROR, TAG_MAUI, "[ERROR] multi-assistant ui change assistant : Fail to make message");
+               return MA_ERROR_OPERATION_FAILED;
+       }
+
+       dbus_message_append_args(msg, DBUS_TYPE_STRING, &appid, DBUS_TYPE_INVALID);
+       DBusMessage* result_msg;
+       int result = MA_ERROR_OPERATION_FAILED;
+
+       result_msg = dbus_connection_send_with_reply_and_block(g_ui_conn_sender, msg, g_ui_waiting_time, &err);
+       dbus_message_unref(msg);
+
+       if (dbus_error_is_set(&err)) {
+               SLOG(LOG_ERROR, TAG_MAUI, "[ERROR] Dbus Error (%s)", err.message);
+               dbus_error_free(&err);
+       }
+
+       if (NULL != result_msg) {
+               dbus_message_get_args(result_msg, &err,
+                       DBUS_TYPE_INT32, &result,
+                       DBUS_TYPE_INVALID);
+
+               if (dbus_error_is_set(&err)) {
+                       SLOG(LOG_ERROR, TAG_MAUI, "[ERROR] Get arguments error (%s)", err.message);
+                       dbus_error_free(&err);
+                       result = MA_ERROR_OPERATION_FAILED;
+               }
+
+               dbus_message_unref(result_msg);
+
+               if (0 == result) {
+                       SLOG(LOG_DEBUG, TAG_MAUI, "[DEBUG] multi-assistant ui change assistant : result = %d", result);
+               } else {
+                       SLOG(LOG_ERROR, TAG_MAUI, "[ERROR] multi-assistant ui change assistant : result = %d", result);
+               }
+       } else {
+               SLOG(LOG_ERROR, TAG_MAUI, "[ERROR] Result message is NULL ");
+               ma_ui_dbus_reconnect();
+               result = MA_ERROR_TIMED_OUT;
+       }
+
+       return result;
+}
+
index ac7ea2dbb06f1e378346227db04736a20b43826d..326f0f82599e385f19ec05657f2e79a032a99348 100644 (file)
@@ -38,6 +38,8 @@ int ma_ui_dbus_request_initialize(int pid);
 
 int ma_ui_dbus_request_deinitialize(int pid);
 
+int ma_ui_dbus_request_change_assistant(const char* appid);
+
 
 #ifdef __cplusplus
 }