Fix defects detected by static analysis tool
[platform/core/uifw/isf.git] / ism / modules / panelagent / ecoresocket / ecore_socket_panel_agent_module.cpp
index ebae5bf..38c4d29 100644 (file)
@@ -52,8 +52,6 @@
 #endif
 #define LOG_TAG             "ISF_ECORE_SOCKET_MODULE"
 
-#define MIN_REPEAT_TIME     2.0
-
 #define IMEMANAGER_PRIVILEGE "http://tizen.org/privilege/imemanager"
 
 #define SCIM_CONFIG_PANEL_SOCKET_CONFIG_READONLY    "/Panel/Socket/ConfigReadOnly"
@@ -79,9 +77,9 @@ void aul_wakeup_ime_application(int sockfd)
     socklen_t len = sizeof(struct ucred);
     if (getsockopt(sockfd, SOL_SOCKET, SO_PEERCRED, &ucred, &len) == 0) {
         int ret = aul_update_freezer_status((long)ucred.pid, "wakeup");
-        LOGD("aul_update_freezer_status : %d %d\n", ucred.pid, ret);
+        LOGD("aul_update_freezer_status : %d %d", ucred.pid, ret);
     } else {
-        LOGD("getsockopt failed : %d\n", errno);
+        LOGD("getsockopt failed : %d", errno);
     }
 }
 #define DEFAULT_CONTEXT_VALUE 0xfff
@@ -134,7 +132,6 @@ public:
     }
 
     bool initialize(InfoManager* info_manager, const String& display, bool resident) {
-        LOGD ("");
         m_info_manager = info_manager;
         m_socket_address = scim_get_default_panel_socket_address(display);
 
@@ -146,7 +143,7 @@ public:
             _read_handler_list.push_back(panel_agent_read_handler);
             return true;
         }
-        LOGE("create server failed\n");
+        LOGE("create server failed");
         return false;
     }
 
@@ -156,7 +153,6 @@ public:
 
     void stop(void) {
         SCIM_DEBUG_MAIN(1) << "PanelAgent::stop ()\n";
-        LOGD ("");
         lock();
         m_should_exit = true;
         unlock();
@@ -167,7 +163,7 @@ public:
     }
 private:
     void update_panel_event(int client, uint32 context_id, int cmd, uint32 nType, uint32 nValue) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
         Socket client_socket(client);
         m_send_trans.clear();
         m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
@@ -180,7 +176,7 @@ private:
 
     void move_preedit_caret(int client, uint32 context_id, uint32 position) {
         SCIM_DEBUG_MAIN(1) << "PanelAgent::move_preedit_caret (" << position << ")\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
         Socket client_socket(client);
         m_send_trans.clear();
         m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
@@ -202,7 +198,6 @@ private:
         m_send_trans.put_data((uint32) context_id);
         m_send_trans.put_command(SCIM_TRANS_CMD_PANEL_REQUEST_HELP);
         m_send_trans.write_to_socket(client_socket);
-
     }
 
     void request_factory_menu(int client_id, uint32 context_id) {
@@ -217,7 +212,7 @@ private:
 #endif
 
     void reset_keyboard_ise(int client, uint32 context_id) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
         Socket client_socket(client);
         m_send_trans.clear();
         m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
@@ -227,7 +222,7 @@ private:
     }
 
     void update_keyboard_ise_list(int client, uint32 context) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -239,7 +234,7 @@ private:
 
     void change_factory(int client, uint32 context, const String&  uuid) {
         SCIM_DEBUG_MAIN(1) << "PanelAgent::change_factory (" << uuid << ")\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -252,8 +247,7 @@ private:
 
     void helper_candidate_show(int client, uint32 context, const String&  uuid) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << "...\n";
-        LOGD ("client id:%d\n", client);
-
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -266,7 +260,7 @@ private:
     }
 
     void helper_candidate_hide(int client, uint32 context, const String&  uuid) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -280,8 +274,7 @@ private:
 
     void candidate_more_window_show(int client, uint32 context) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << "...\n";
-        LOGD ("client id:%d\n", client);
-
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -296,7 +289,7 @@ private:
 
     void candidate_more_window_hide(int client, uint32 context) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << "...\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -311,7 +304,7 @@ private:
 
     void update_helper_lookup_table(int client, uint32 context, const String& uuid, const LookupTable& table) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << "...\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -326,7 +319,7 @@ private:
 
     void select_aux(int client, uint32 contextid, uint32 item) {
         SCIM_DEBUG_MAIN(1) << "PanelAgent::select_aux (" << item << ")\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -342,7 +335,7 @@ private:
     }
 
     void select_candidate(int client, uint32 context, uint32 item) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -359,7 +352,7 @@ private:
 
     void lookup_table_page_up(int client, uint32 context) {
         SCIM_DEBUG_MAIN(1) << "PanelAgent::lookup_table_page_up ()\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -374,7 +367,7 @@ private:
     }
 
     void lookup_table_page_down(int client, uint32 context) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -389,7 +382,7 @@ private:
     }
 
     void update_lookup_table_page_size(int client, uint32 context, uint32 size) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -405,7 +398,7 @@ private:
     }
 
     void update_candidate_item_layout(int client, uint32 context, const std::vector<uint32>& row_items) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -421,7 +414,7 @@ private:
     }
 
     void select_associate(int client, uint32 context, uint32 item) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -437,7 +430,7 @@ private:
     }
 
     void associate_table_page_up(int client, uint32 context) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -452,7 +445,7 @@ private:
     }
 
     void associate_table_page_down(int client, uint32 context) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -467,7 +460,7 @@ private:
     }
 
     void update_associate_table_page_size(int client, uint32 context, uint32 size) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -483,7 +476,7 @@ private:
     }
 
     void update_displayed_candidate_number(int client, uint32 context, uint32 size) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -499,7 +492,7 @@ private:
     }
 
     void send_longpress_event(int client, uint32 context, int index) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -515,7 +508,7 @@ private:
     }
 
     void trigger_property(int client, uint32 context, const String&  property) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -531,7 +524,7 @@ private:
     }
 
     void focus_out_helper(int client, uint32 context, const String& uuid) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -543,7 +536,7 @@ private:
     }
 
     void focus_in_helper(int client, uint32 context, const String& uuid) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -555,7 +548,7 @@ private:
     }
 
     void show_helper(int client, uint32 context, const String& uuid, char* data, size_t& len) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -571,7 +564,7 @@ private:
     }
 
     void hide_helper(int client, uint32 context, const String& uuid) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -583,7 +576,7 @@ private:
     }
 
     void set_helper_mode(int client, uint32 context, const String& uuid, uint32& mode) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -596,7 +589,7 @@ private:
     }
 
     void set_helper_language(int client, uint32 context, const String& uuid, uint32& language) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -609,7 +602,7 @@ private:
     }
 
     void set_helper_imdata(int client, uint32 context, const String& uuid, const char* imdata, size_t& len) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -622,7 +615,7 @@ private:
     }
 
     void set_helper_return_key_type(int client, uint32 context, const String& uuid, uint32 type) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -635,7 +628,7 @@ private:
     }
 
     void get_helper_return_key_type(int client, uint32 context, const String& uuid, _OUT_ uint32& type) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         Transaction trans;
@@ -654,12 +647,12 @@ private:
             SCIM_DEBUG_MAIN(1) << __func__ << " success\n";
 
         } else {
-            LOGW ("read failed\n");
+            LOGW ("read failed");
         }
     }
 
     void set_helper_return_key_disable(int client, uint32 context, const String& uuid, uint32 disabled) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -672,7 +665,6 @@ private:
     }
 
     void get_helper_return_key_disable(int client, uint32 context, const String& uuid, _OUT_ uint32& disabled) {
-
         Socket client_socket(client);
         LOGD ("client id:%d", client);
 
@@ -698,7 +690,7 @@ private:
     }
 
     void set_helper_layout(int client, uint32 context, const String& uuid, uint32& layout) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -711,7 +703,7 @@ private:
     }
 
     void set_helper_input_mode(int client, uint32 context, const String& uuid, uint32& mode) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -724,7 +716,7 @@ private:
     }
 
     void set_helper_input_hint(int client, uint32 context, const String& uuid, uint32& hint) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -737,7 +729,7 @@ private:
     }
 
     void set_helper_bidi_direction(int client, uint32 context, const String& uuid, uint32& direction) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -750,7 +742,7 @@ private:
     }
 
     void set_helper_caps_mode(int client, uint32 context, const String& uuid, uint32& mode) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -763,7 +755,7 @@ private:
     }
 
     void show_helper_option_window(int client, uint32 context, const String& uuid) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -778,7 +770,7 @@ private:
     }
 
     void resume_helper_option_window(int client, uint32 context, const String& uuid) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -793,7 +785,7 @@ private:
     }
 
     void set_helper_keyboard_mode(int client, uint32 context, const String& uuid, uint32& mode) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -805,8 +797,60 @@ private:
         m_send_trans.write_to_socket(client_socket);
     }
 
+    void set_helper_prediction_hint(int client, uint32 context, const String& uuid, String& prediction_hint) {
+        LOGD ("client id:%d", client);
+
+        Socket client_socket(client);
+        m_send_trans.clear();
+        m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
+        m_send_trans.put_data(context);
+        m_send_trans.put_data(uuid);
+        m_send_trans.put_command(ISM_TRANS_CMD_SET_PREDICTION_HINT);
+        m_send_trans.put_data(prediction_hint);
+        m_send_trans.write_to_socket(client_socket);
+    }
+
+    void set_helper_mime_type(int client, uint32 context, const String& uuid, String& mime_type) {
+        LOGD ("client id:%d", client);
+
+        Socket client_socket(client);
+        m_send_trans.clear();
+        m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
+        m_send_trans.put_data(context);
+        m_send_trans.put_data(uuid);
+        m_send_trans.put_command(ISM_TRANS_CMD_SET_MIME_TYPE);
+        m_send_trans.put_data(mime_type);
+        m_send_trans.write_to_socket(client_socket);
+    }
+
+    void set_helper_prediction_hint_data(int client, uint32 context, const String& uuid, String& key, String &value) {
+        Socket client_socket(client);
+        m_send_trans.clear();
+        m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
+        m_send_trans.put_data(context);
+        m_send_trans.put_data(uuid);
+        m_send_trans.put_command(ISM_TRANS_CMD_SET_PREDICTION_HINT_DATA);
+        m_send_trans.put_data(key);
+        m_send_trans.put_data(value);
+        m_send_trans.write_to_socket(client_socket);
+    }
+
+    void finalize_content_helper(int client, uint32 context, const String& uuid, String& text, uint32& cursor_pos) {
+        LOGD("client id:%d", client);
+
+        Socket client_socket(client);
+        m_send_trans.clear();
+        m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
+        m_send_trans.put_data(context);
+        m_send_trans.put_data(uuid);
+        m_send_trans.put_command(ISM_TRANS_CMD_FINALIZE_CONTENT);
+        m_send_trans.put_data(text);
+        m_send_trans.put_data(cursor_pos);
+        m_send_trans.write_to_socket(client_socket);
+    }
+
     bool process_key_event(int client, uint32 context, const String& uuid, KeyEvent& key, uint32 serial) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -824,14 +868,14 @@ private:
             SCIM_DEBUG_MAIN(1) << __func__ << " success\n";
             return true;
         } else {
-            LOGW ("read failed\n");
+            LOGW ("read failed");
         }
 
         return false;
     }
 
     bool get_helper_geometry(int client, uint32 context, String& uuid, _OUT_ struct rectinfo& info) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -856,15 +900,15 @@ private:
                 SCIM_DEBUG_MAIN(1) << __func__ << " is successful\n";
                 return true;
             } else
-                LOGW ("read failed\n");
+                LOGW ("read failed");
         } else
-            LOGW ("write failed\n");
+            LOGW ("write failed");
 
         return false;
     }
 
     void get_helper_imdata(int client, uint32 context, String& uuid, char** imdata, size_t& len) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
         Socket client_socket(client);
 
         Transaction trans;
@@ -878,16 +922,16 @@ private:
 
         if (trans.write_to_socket(client_socket)
             && trans.read_from_socket(client_socket)
-            && trans.get_command(cmd) && cmd == SCIM_TRANS_CMD_REPLY) {
-            trans.get_data(imdata, len);
+            && trans.get_command(cmd) && cmd == SCIM_TRANS_CMD_REPLY
+            && trans.get_data(imdata, len)) {
             LOGD ("length of imdata is %d", len);
         } else {
-            LOGW ("read imdata failed\n");
+            LOGW ("read imdata failed");
         }
     }
 
     void get_helper_layout(int client, uint32 context, String& uuid, uint32& layout) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -906,12 +950,12 @@ private:
             && trans.get_data(layout)) {
             SCIM_DEBUG_MAIN(1) << "get_helper_layout success\n";
         } else
-            LOGW ("failed\n");
+            LOGW ("failed");
     }
 
     void get_ise_language_locale(int client, uint32 context, String& uuid, char** data,  size_t& len) {
         SCIM_DEBUG_MAIN(4) << __func__ << "\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Transaction trans;
 
@@ -929,12 +973,12 @@ private:
             && trans.get_command(cmd) && cmd == SCIM_TRANS_CMD_REPLY
             && trans.get_data(data, len)) {
         } else {
-            LOGW ("failed\n");
+            LOGW ("failed");
         }
     }
 
     void check_option_window(int client, uint32 context, String& uuid, _OUT_ uint32& avail) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         int cmd;
         Socket client_socket(client);
@@ -951,12 +995,12 @@ private:
         if (!trans.read_from_socket(client_socket, m_socket_timeout) ||
             !trans.get_command(cmd) || cmd != SCIM_TRANS_CMD_REPLY ||
             !trans.get_data(avail)) {
-            LOGW ("ISM_TRANS_CMD_CHECK_OPTION_WINDOW failed\n");
+            LOGW ("ISM_TRANS_CMD_CHECK_OPTION_WINDOW failed");
         }
     }
 
     void reset_ise_option(int client, uint32 context) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -967,7 +1011,7 @@ private:
     }
 
     void reset_helper_context(int client, uint32 context, const String& uuid) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
         Transaction trans;
         Socket client_socket(client);
         m_send_trans.clear();
@@ -980,7 +1024,7 @@ private:
 
     void reload_config(int client) {
         SCIM_DEBUG_MAIN(1) << "PanelAgent::reload_config ()\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         m_send_trans.clear();
         m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
@@ -992,7 +1036,7 @@ private:
 
     void exit(int client, uint32 context) {
         SCIM_DEBUG_MAIN(1) << "PanelAgent::exit ()\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         m_send_trans.clear();
         m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
@@ -1006,10 +1050,12 @@ private:
 
         Socket client_socket(client);
         m_send_trans.write_to_socket(client_socket);
+
+        m_info_manager->del_client(client_socket.get_id());
     }
 
     bool process_input_device_event(int client, uint32 context, const String& uuid, uint32 type, const char *data, size_t len, _OUT_ uint32& result) {
-        LOGD("client id:%d\n", client);
+        LOGD("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -1022,17 +1068,13 @@ private:
         trans.put_command(ISM_TRANS_CMD_PROCESS_INPUT_DEVICE_EVENT);
         trans.put_data(type);
         trans.put_data(data, len);
-        int cmd;
 
-        if (trans.write_to_socket(client_socket)
-            && trans.read_from_socket(client_socket)
-            && trans.get_command(cmd) && cmd == SCIM_TRANS_CMD_REPLY
-            && trans.get_data(result)) {
+        if (trans.write_to_socket(client_socket)) {
             SCIM_DEBUG_MAIN(1) << __func__ << " success\n";
             return true;
         }
         else {
-            LOGW("read failed\n");
+            LOGW("read failed");
         }
 
         return false;
@@ -1040,7 +1082,7 @@ private:
 
     void socket_update_surrounding_text(int client, uint32 context, const String& uuid, String& text, uint32 cursor) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << "...\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -1052,11 +1094,16 @@ private:
         m_send_trans.put_data(text);
         m_send_trans.put_data(cursor);
         m_send_trans.write_to_socket(client_socket);
+
+        m_send_trans.clear();
+        m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
+        m_send_trans.put_command(ISM_TRANS_CMD_FLUSH_BUFFER);
+        m_send_trans.write_to_socket(client_socket);
     }
 
     void socket_remoteinput_focus_in (int client) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << "...\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         bool ret;
         ret = (client == -1) ? false : true;
@@ -1073,7 +1120,7 @@ private:
 
     void socket_remoteinput_focus_out (int client) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << "...\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         bool ret;
         ret = (client == -1) ? false : true;
@@ -1090,7 +1137,7 @@ private:
 
     void socket_remoteinput_entry_metadata (int client, uint32 hint, uint32 layout, int variation, uint32 autocapital_type, int return_key_disabled) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << "...\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         bool ret;
         ret = (client == -1) ? false : true;
@@ -1112,7 +1159,7 @@ private:
 
     void socket_remoteinput_surrounding_text (int client, String& text, uint32 cursor) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << "...\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         bool ret;
         ret = (client == -1) ? false : true;
@@ -1131,7 +1178,7 @@ private:
 
     void socket_remoteinput_input_resource (int client, uint32 input_resource) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << "...\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         bool ret;
         ret = (client == -1) ? false : true;
@@ -1148,7 +1195,7 @@ private:
     }
 
     void socket_update_selection(int client, uint32 context, String& uuid, String text) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -1159,10 +1206,15 @@ private:
         m_send_trans.put_command(ISM_TRANS_CMD_UPDATE_SELECTION);
         m_send_trans.put_data(text);
         m_send_trans.write_to_socket(client_socket);
+
+        m_send_trans.clear();
+        m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
+        m_send_trans.put_command(ISM_TRANS_CMD_FLUSH_BUFFER);
+        m_send_trans.write_to_socket(client_socket);
     }
 
     void socket_get_keyboard_ise_list(int client, uint32 context, const String& uuid, std::vector<String>& list) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         m_send_trans.clear();
@@ -1181,7 +1233,7 @@ private:
     void socket_get_candidate_ui(int client, uint32 context, const String& uuid,  int style,  int mode) {
         SCIM_DEBUG_MAIN(4) << "PanelAgent::socket_get_candidate_ui ()\n";
 
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         m_send_trans.clear();
@@ -1197,7 +1249,7 @@ private:
     void socket_get_candidate_geometry(int client, uint32 context, const String& uuid, struct rectinfo& info) {
         SCIM_DEBUG_MAIN(4) << __func__ << " \n";
 
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         m_send_trans.clear();
@@ -1213,7 +1265,7 @@ private:
     }
 
     void socket_get_keyboard_ise(int client, uint32 context, const String& uuid, String& ise_name, String& ise_uuid) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         m_send_trans.clear();
@@ -1229,7 +1281,7 @@ private:
     void socket_start_helper(int client, uint32 context, const String& ic_uuid) {
         SCIM_DEBUG_MAIN(4) << "PanelAgent::socket_start_helper ()\n";
 
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -1243,7 +1295,7 @@ private:
     void helper_detach_input_context(int client, uint32 context, const String& ic_uuid) {
         SCIM_DEBUG_MAIN(4) << "PanelAgent::socket_stop_helper ()\n";
 
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -1256,7 +1308,7 @@ private:
 
     void helper_process_imengine_event(int client, uint32 context, const String& ic_uuid, const Transaction& _nest_trans) {
         SCIM_DEBUG_MAIN(4) << "PanelAgent::socket_send_helper_event ()\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
 
@@ -1278,7 +1330,7 @@ private:
     }
 
     void process_helper_event(int client, uint32 context, String target_uuid, String active_uuid, Transaction& nest_trans) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         SCIM_DEBUG_MAIN(4) << "PanelAgent::socket_helper_send_imengine_event (" << client << ")\n";
         Socket socket_client(client);
@@ -1292,11 +1344,10 @@ private:
         m_send_trans.put_data(nest_trans);
         m_send_trans.write_to_socket(socket_client);
         unlock();
-
     }
 
     void socket_helper_key_event(int client, uint32 context, int cmd, KeyEvent& key) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         lock();
@@ -1310,7 +1361,7 @@ private:
     }
 
     void commit_string(int client, uint32 target_context, const WideString& wstr) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         lock();
@@ -1325,7 +1376,7 @@ private:
 
     void socket_helper_get_surrounding_text(int client, uint32 context_id, uint32 maxlen_before, uint32 maxlen_after) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << " (" << client << ")\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         lock();
@@ -1341,7 +1392,7 @@ private:
 
     void socket_helper_delete_surrounding_text(int client, uint32 context_id, uint32 offset, uint32 len) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << " (" << client << ")\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         lock();
@@ -1357,7 +1408,7 @@ private:
 
     void socket_helper_get_selection(int client, uint32 context_id) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << " (" << client << ")\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
 
         Socket socket_client(client);
@@ -1371,7 +1422,7 @@ private:
     }
 
     void socket_helper_set_selection(int client, uint32 context_id, uint32 start, uint32 end) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         lock();
@@ -1386,7 +1437,7 @@ private:
     }
 
     void show_preedit_string(int client, uint32  target_context) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         lock();
@@ -1399,7 +1450,7 @@ private:
     }
 
     void hide_preedit_string(int client, uint32  target_context) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         lock();
@@ -1412,7 +1463,7 @@ private:
     }
 
     void update_preedit_string(int client, uint32  target_context, WideString preedit, WideString commit, AttributeList& attrs, uint32 caret) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         lock();
@@ -1426,12 +1477,10 @@ private:
         m_send_trans.put_data(caret);
         m_send_trans.write_to_socket(socket_client);
         unlock();
-
     }
 
     void update_preedit_caret(int client, uint32 focused_context, uint32 caret) {
-
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         lock();
@@ -1442,11 +1491,10 @@ private:
         m_send_trans.put_data(caret);
         m_send_trans.write_to_socket(socket_client);
         unlock();
-
     }
 
     void helper_attach_input_context_and_update_screen(int client, std::vector < std::pair <uint32, String> >& helper_ic_index, uint32 current_screen) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         m_send_trans.clear();
@@ -1465,7 +1513,7 @@ private:
     }
 
     void update_ise_input_context(int client, uint32 focused_context, uint32 type, uint32 value) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket(client);
         m_send_trans.clear();
@@ -1475,11 +1523,10 @@ private:
         m_send_trans.put_data(type);
         m_send_trans.put_data(value);
         m_send_trans.write_to_socket(client_socket);
-
     }
 
     void send_private_command(int client, uint32 focused_context, String command) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         lock();
@@ -1489,11 +1536,25 @@ private:
         m_send_trans.put_command(SCIM_TRANS_CMD_SEND_PRIVATE_COMMAND);
         m_send_trans.put_data(command);
         m_send_trans.write_to_socket(socket_client);
+    }
 
+    void commit_content(int client, uint32 focused_context, String content, String description, String mime_types) {
+        LOGD ("client id:%d", client);
+
+        Socket socket_client(client);
+        lock();
+        m_send_trans.clear();
+        m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
+        m_send_trans.put_data(focused_context);
+        m_send_trans.put_command(SCIM_TRANS_CMD_COMMIT_CONTENT);
+        m_send_trans.put_data(content);
+        m_send_trans.put_data(description);
+        m_send_trans.put_data(mime_types);
+        m_send_trans.write_to_socket(socket_client);
     }
 
     void helper_all_update_spot_location(int client, uint32 context_id, String uuid, int x, int y) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         m_send_trans.clear();
         m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
@@ -1509,11 +1570,10 @@ private:
 
         Socket client_socket(client);
         m_send_trans.write_to_socket(client_socket);
-
     }
 
     void helper_all_update_cursor_position(int client, uint32 context_id, String uuid, int cursor_pos) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         m_send_trans.clear();
         m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
@@ -1524,11 +1584,10 @@ private:
 
         Socket client_socket(client);
         m_send_trans.write_to_socket(client_socket);
-
     }
 
     void helper_all_update_screen(int client, uint32 context_id, String uuid, int screen) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         m_send_trans.clear();
         m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
@@ -1543,12 +1602,9 @@ private:
 
         Socket client_socket(client);
         m_send_trans.write_to_socket(client_socket);
-
     }
 
     void set_autocapital_type(int client, uint32 context, String uuid, int mode) {
-        LOGD ("client id:%d\n", client);
-
         m_send_trans.clear();
         m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
 
@@ -1562,8 +1618,6 @@ private:
     }
 
     void remote_update_preedit_string (int client, uint32 target_context, const WideString str, const WideString commit, const AttributeList &attrs, uint32 caret) {
-        LOGD("client id:%d\n", client);
-
         Socket client_socket(client);
         lock();
         m_send_trans.clear();
@@ -1579,8 +1633,6 @@ private:
     }
 
     void remote_send_key_event (int client, uint32 target_context, const KeyEvent &key) {
-        LOGD("client id:%d\n", client);
-
         Socket client_socket(client);
         lock();
         m_send_trans.clear ();
@@ -1593,8 +1645,6 @@ private:
     }
 
     void remote_forward_key_event (int client, uint32 target_context, const KeyEvent &key) {
-        LOGD("client id:%d\n", client);
-
         Socket client_socket(client);
         lock();
         m_send_trans.clear ();
@@ -1607,7 +1657,7 @@ private:
     }
 
     void remote_commit_string (int client, uint32 target_context, const WideString& wstr) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         lock();
@@ -1622,7 +1672,7 @@ private:
 
     void remote_delete_surrounding_text (int client, uint32 context_id, uint32 offset, uint32 len) {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << " (" << client << ")\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket socket_client(client);
         lock();
@@ -1637,7 +1687,7 @@ private:
     }
 
     void set_prediction_allow (int client, uint32 context, String uuid, int mode) {
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         m_send_trans.clear();
         m_send_trans.put_command(SCIM_TRANS_CMD_REPLY);
@@ -1654,7 +1704,7 @@ private:
     void send_fail_reply (int client)
     {
         SCIM_DEBUG_MAIN(4) << __FUNCTION__ << " (" << client << ")\n";
-        LOGD ("client id:%d\n", client);
+        LOGD ("client id:%d", client);
 
         Socket client_socket (client);
         Transaction trans;
@@ -1695,9 +1745,9 @@ private:
             return true;
 
         if (nbytes < 0) {
-            LOGW ("Error occurred when reading socket: %s\n", client.get_error_message().c_str());
+            LOGW ("Error occurred when reading socket: %s", client.get_error_message().c_str());
         } else {
-            LOGW ("Timeout when reading socket\n");
+            LOGW ("Timeout when reading socket");
         }
 
         return false;
@@ -1718,6 +1768,8 @@ private:
         EcoreSocketPanelAgent* _agent = (EcoreSocketPanelAgent*)data;
 
         int fd = ecore_main_fd_handler_fd_get(fd_handler);
+        if (fd < 0)
+            return ECORE_CALLBACK_RENEW;
 
         for (unsigned int i = 0; i < _agent->_read_handler_list.size(); i++) {
             if (fd_handler == _agent->_read_handler_list [i]) {
@@ -1726,7 +1778,7 @@ private:
                     ::close (fd);
                     ecore_main_fd_handler_del(fd_handler);
 
-                    ISF_SAVE_LOG("_panel_agent->filter_event (fd=%d) is failed!!!\n", fd);
+                    ISF_SAVE_LOG("_panel_agent->filter_event (fd=%d) is failed!!!", fd);
                 }
 
                 return ECORE_CALLBACK_RENEW;
@@ -1738,7 +1790,7 @@ private:
         ::close (fd);
         ecore_main_fd_handler_del(fd_handler);
 
-        ISF_SAVE_LOG("Received exception event (fd=%d)!!!\n", fd);
+        ISF_SAVE_LOG("Received exception event (fd=%d)!!!", fd);
         return ECORE_CALLBACK_RENEW;
     }
 
@@ -1774,7 +1826,7 @@ private:
 
         /* If the connection is closed then close this client. */
         if (!socket_check_client_connection(client)) {
-            LOGW ("check client connection failed\n");
+            LOGW ("check client connection failed");
             socket_close_connection(server, client);
             return;
         }
@@ -1794,7 +1846,7 @@ private:
         if (!m_recv_trans.read_from_socket(client, m_socket_timeout) ||
             !m_recv_trans.get_command(cmd) || cmd != SCIM_TRANS_CMD_REQUEST ||
             !m_recv_trans.get_data(key)    || key != (uint32) client_info.key) {
-            LOGW ("cmd:%d key:%d client info key: %d\n", cmd, key, client_info.key);
+            LOGW ("cmd:%d key:%d client info key: %d", cmd, key, client_info.key);
             return;
         }
 
@@ -1804,7 +1856,7 @@ private:
                 socket_transaction_start();
 
                 while (m_recv_trans.get_command(cmd)) {
-                    LOGD ("PanelAgent::cmd = %d\n", cmd);
+                    LOGD ("PanelAgent::cmd = %d", cmd);
 
                     if (cmd == ISM_TRANS_CMD_REGISTER_PANEL_CLIENT) {
                         uint32 id = 0;
@@ -1812,56 +1864,50 @@ private:
                         if (m_recv_trans.get_data(id)) {
                             m_info_manager->register_panel_client(client_id, id);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
                     }
-
                     else if (cmd == SCIM_TRANS_CMD_PANEL_REGISTER_INPUT_CONTEXT) {
                         if (m_recv_trans.get_data(uuid)) {
                             m_info_manager->register_input_context(client_id, context, uuid);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
                     }
-
                     else if (cmd == SCIM_TRANS_CMD_PANEL_REMOVE_INPUT_CONTEXT) {
                         m_info_manager->remove_input_context(client_id, context);
                         continue;
                     }
-
                     else if (cmd == SCIM_TRANS_CMD_PANEL_RESET_INPUT_CONTEXT) {
                         m_info_manager->socket_reset_input_context(client_id, context);
                         continue;
                     }
-
                     else if (cmd == SCIM_TRANS_CMD_FOCUS_IN) {
                         SCIM_DEBUG_MAIN(4) << "    SCIM_TRANS_CMD_FOCUS_IN (" << "client:" << client_id << " context:" << context << ")\n";
 
                         if (m_recv_trans.get_data(uuid)) {
                             m_info_manager->focus_in(client_id, context, uuid);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
                     }
-
                     else if (cmd == ISM_TRANS_CMD_TURN_ON_LOG) {
                         uint32 isOn;
 
                         if (m_recv_trans.get_data(isOn)) {
                             m_info_manager->socket_turn_on_log(isOn);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
                     }
-
                     else if (cmd == ISM_TRANS_CMD_SHOW_ISF_CONTROL) {
                         m_info_manager->show_isf_panel(client_id);
                         continue;
@@ -1878,7 +1924,7 @@ private:
                         if (m_recv_trans.get_data(client) && m_recv_trans.get_data(context) && m_recv_trans.get_data(&data, len)) {
                             ret = true;
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         Transaction trans;
@@ -1890,12 +1936,12 @@ private:
                         trans.put_data(ret);
                         trans.write_to_socket(client_socket);
 
-                        if (data != NULL)
-                            delete[] data;
-
                         if (ret)
                             m_info_manager->show_ise_panel(client_id, client, context, data, len);
 
+                        if (data != NULL)
+                            delete[] data;
+
                         continue;
                     } else if (cmd == ISM_TRANS_CMD_HIDE_ISE_PANEL) {
                         uint32 client;
@@ -1904,7 +1950,7 @@ private:
                         if (m_recv_trans.get_data(client) && m_recv_trans.get_data(context)) {
                             m_info_manager->hide_ise_panel(client_id, client, context);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
@@ -1966,7 +2012,7 @@ private:
                         if (m_recv_trans.get_data(language)) {
                             m_info_manager->set_ise_language(client_id, language);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
@@ -1977,7 +2023,7 @@ private:
                         if (m_recv_trans.get_data(&imdata, len)) {
                             m_info_manager->set_ise_imdata(client_id, imdata, len);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         if (NULL != imdata)
@@ -2013,7 +2059,7 @@ private:
                         if (m_recv_trans.get_data(type)) {
                             m_info_manager->set_ise_return_key_type(client_id, type);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
@@ -2041,14 +2087,14 @@ private:
                         if (m_recv_trans.get_data(disabled)) {
                             m_info_manager->set_ise_return_key_disable(client_id, disabled);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
                     } else if (cmd == ISM_TRANS_CMD_GET_RETURN_KEY_DISABLE) {
                         uint32 disabled;
                         bool ret = true;
-                        m_info_manager->get_ise_return_key_disable(client_id, disabled);
+                        ret = m_info_manager->get_ise_return_key_disable(client_id, disabled);
                         Transaction trans;
                         Socket client_socket(client_id);
 
@@ -2088,7 +2134,7 @@ private:
                         if (m_recv_trans.get_data(layout)) {
                             m_info_manager->set_ise_layout(client_id, layout);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
@@ -2098,7 +2144,7 @@ private:
                         if (m_recv_trans.get_data(mode)) {
                             m_info_manager->set_ise_caps_mode(client_id, mode);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
@@ -2114,7 +2160,7 @@ private:
                         if (m_recv_trans.get_data(mode)) {
                             m_info_manager->set_keyboard_mode(client_id, mode);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
@@ -2131,7 +2177,7 @@ private:
                             ret      = true;
                             m_info_manager->process_key_event(key, result);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         Transaction trans;
@@ -2180,7 +2226,7 @@ private:
                         if (m_recv_trans.get_data(input_mode)) {
                             m_info_manager->set_ise_input_mode(client_id, input_mode);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
@@ -2190,7 +2236,7 @@ private:
                         if (m_recv_trans.get_data(input_hint)) {
                             m_info_manager->set_ise_input_hint(client_id, input_hint);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
@@ -2200,7 +2246,7 @@ private:
                         if (m_recv_trans.get_data(bidi_direction)) {
                             m_info_manager->update_ise_bidi_direction(client_id, bidi_direction);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
@@ -2221,7 +2267,7 @@ private:
                         if (m_recv_trans.get_data(uuid) && uuid.length()) {
                             m_info_manager->socket_start_helper(client_id, context, uuid);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
@@ -2232,7 +2278,7 @@ private:
                             uuid.length() && m_nest_trans.valid()) {
                             m_info_manager->socket_send_helper_event(client_id, context, uuid, m_nest_trans);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
@@ -2242,7 +2288,7 @@ private:
                         if (m_recv_trans.get_data(uuid) && uuid.length()) {
                             m_info_manager->socket_stop_helper(client_id, context, uuid);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         continue;
@@ -2262,14 +2308,14 @@ private:
                         if (m_recv_trans.get_data(num))
                             m_info_manager->socket_update_screen(client_id, num);
                         else
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                     } else if (cmd == SCIM_TRANS_CMD_UPDATE_SPOT_LOCATION) {
                         uint32 x, y, top_y;
 
                         if (m_recv_trans.get_data(x) && m_recv_trans.get_data(y) && m_recv_trans.get_data(top_y)) {
                             m_info_manager->socket_update_spot_location(x, y, top_y);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
                     } else if (cmd == ISM_TRANS_CMD_UPDATE_CURSOR_POSITION) {
                         uint32 cursor_pos;
@@ -2277,7 +2323,7 @@ private:
                         if (m_recv_trans.get_data(cursor_pos)) {
                             m_info_manager->socket_update_cursor_position(cursor_pos);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
                     } else if (cmd == ISM_TRANS_CMD_UPDATE_SURROUNDING_TEXT) {
                         String text;
@@ -2286,7 +2332,7 @@ private:
                         if (m_recv_trans.get_data(text) && m_recv_trans.get_data(cursor)) {
                             m_info_manager->socket_update_surrounding_text(text, cursor);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
                     } else if (cmd == ISM_TRANS_CMD_UPDATE_SELECTION) {
                         String text;
@@ -2294,7 +2340,7 @@ private:
                         if (m_recv_trans.get_data(text)) {
                             m_info_manager->socket_update_selection(text);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
                     } else if (cmd == ISM_TRANS_CMD_EXPAND_CANDIDATE)
                         m_info_manager->expand_candidate();
@@ -2306,7 +2352,7 @@ private:
                         if (m_recv_trans.get_data(portrait_line) && m_recv_trans.get_data(mode))
                             m_info_manager->socket_set_candidate_ui(portrait_line, mode);
                         else
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                     } else if (cmd == SCIM_TRANS_CMD_PANEL_UPDATE_FACTORY_INFO) {
                         PanelFactoryInfo info;
 
@@ -2314,7 +2360,7 @@ private:
                             m_recv_trans.get_data(info.lang) && m_recv_trans.get_data(info.icon)) {
                             m_info_manager->socket_update_factory_info(info);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
                     } else if (cmd == SCIM_TRANS_CMD_SHOW_PREEDIT_STRING)
                         m_info_manager->socket_show_preedit_string();
@@ -2340,14 +2386,14 @@ private:
                         if (m_recv_trans.get_data(str) && m_recv_trans.get_data(attrs) && m_recv_trans.get_data(caret))
                             m_info_manager->socket_update_preedit_string(str, attrs, caret);
                         else
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                     } else if (cmd == SCIM_TRANS_CMD_UPDATE_PREEDIT_CARET) {
                         uint32 caret;
 
                         if (m_recv_trans.get_data(caret))
                             m_info_manager->socket_update_preedit_caret(caret);
                         else
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                     } else if (cmd == SCIM_TRANS_CMD_UPDATE_AUX_STRING) {
                         String str;
                         AttributeList attrs;
@@ -2355,7 +2401,7 @@ private:
                         if (m_recv_trans.get_data(str) && m_recv_trans.get_data(attrs))
                             m_info_manager->socket_update_aux_string(str, attrs);
                         else
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                     } else if (cmd == ISM_TRANS_CMD_RECAPTURE_STRING) {
                         uint32 target_ic;
                         String target_uuid;
@@ -2374,7 +2420,7 @@ private:
                             m_recv_trans.get_data(attrs)) {
                             m_info_manager->socket_helper_recapture_string(client_id, target_ic, target_uuid, offset, len, preedit, commit, attrs);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
                     } else if (cmd == SCIM_TRANS_CMD_UPDATE_LOOKUP_TABLE) {
                         CommonLookupTable _isf_candidate_table;
@@ -2382,7 +2428,7 @@ private:
                         if (m_recv_trans.get_data(_isf_candidate_table))
                             m_info_manager->socket_update_lookup_table(_isf_candidate_table);
                         else
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
 
                     } else if (cmd == ISM_TRANS_CMD_UPDATE_ASSOCIATE_TABLE) {
                         CommonLookupTable table;
@@ -2390,28 +2436,28 @@ private:
                         if (m_recv_trans.get_data(table))
                             m_info_manager->socket_update_associate_table(table);
                         else
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                     } else if (cmd == SCIM_TRANS_CMD_REGISTER_PROPERTIES) {
                         PropertyList properties;
 
                         if (m_recv_trans.get_data(properties))
                             m_info_manager->socket_register_properties(properties);
                         else
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                     } else if (cmd == SCIM_TRANS_CMD_UPDATE_PROPERTY) {
                         Property property;
 
                         if (m_recv_trans.get_data(property))
                             m_info_manager->socket_update_property(property);
                         else
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                     } else if (cmd == SCIM_TRANS_CMD_PANEL_SHOW_HELP) {
                         String help;
 
                         if (m_recv_trans.get_data(help))
                             m_info_manager->socket_show_help(help);
                         else
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                     } else if (cmd == SCIM_TRANS_CMD_PANEL_SHOW_FACTORY_MENU) {
                         PanelFactoryInfo info;
                         std::vector <PanelFactoryInfo> vec;
@@ -2426,7 +2472,7 @@ private:
                     } else if (cmd == SCIM_TRANS_CMD_FOCUS_OUT) {
                         m_info_manager->focus_out(client_id, context);
                     } else {
-                        LOGW ("unknown cmd: %d\n", cmd);
+                        LOGW ("unknown cmd: %d", cmd);
                     }
                 }
 
@@ -2438,7 +2484,7 @@ private:
                 socket_transaction_start();
 
                 while (m_recv_trans.get_command(cmd)) {
-                    LOGD ("PanelAgent::cmd = %d\n", cmd);
+                    LOGD ("PanelAgent::cmd = %d", cmd);
 
                     if (cmd == ISM_TRANS_CMD_GET_PANEL_CLIENT_ID) {
                         Socket client_socket(client_id);
@@ -2451,7 +2497,7 @@ private:
                         trans.write_to_socket(client_socket);
                         continue;
                     } else {
-                        LOGW ("unknown cmd: %d\n", cmd);
+                        LOGW ("unknown cmd: %d", cmd);
                     }
                 }
 
@@ -2461,8 +2507,6 @@ private:
             socket_transaction_start();
 
             while (m_recv_trans.get_command(cmd)) {
-                LOGD ("PanelAgent::cmd = %d\n", cmd);
-
                 if (cmd == SCIM_TRANS_CMD_PANEL_REGISTER_HELPER) {
                     HelperInfo info;
 
@@ -2475,7 +2519,7 @@ private:
                         m_info_manager->socket_helper_register_helper(client_id, info);
                     }
                 } else {
-                    LOGW ("unknown cmd: %d\n", cmd);
+                    LOGW ("unknown cmd: %d", cmd);
                 }
             }
 
@@ -2484,8 +2528,6 @@ private:
             socket_transaction_start();
 
             while (m_recv_trans.get_command(cmd)) {
-                LOGD ("PanelAgent::cmd = %d\n", cmd);
-
                 if (cmd == SCIM_TRANS_CMD_PANEL_REGISTER_ACTIVE_HELPER) {
                     HelperInfo info;
 
@@ -2497,8 +2539,14 @@ private:
                         info.uuid.length()) {
                         m_info_manager->socket_helper_register_helper_passive(client_id, info);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
+
+                    /* Check whether application already requested the focus_in and showing input_panel
+                     * If so, Input FW request focus_in and show input_panel again to helper IME.
+                     * Because Helper IME couldn't receive these events during the launch.
+                     */
+                    m_info_manager->reshow_input_panel ();
                 } else if (cmd == SCIM_TRANS_CMD_COMMIT_STRING) {
                     uint32 target_ic;
                     String target_uuid;
@@ -2510,7 +2558,7 @@ private:
                         wstr.length()) {
                         m_info_manager->socket_helper_commit_string(client_id, target_ic, target_uuid, wstr);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_SHOW_PREEDIT_STRING) {
                     uint32 target_ic;
@@ -2519,7 +2567,7 @@ private:
                     if (m_recv_trans.get_data(target_ic) && m_recv_trans.get_data(target_uuid)) {
                         m_info_manager->socket_helper_show_preedit_string(client_id, target_ic, target_uuid);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_SHOW_AUX_STRING) {
                     m_info_manager->socket_show_aux_string();
@@ -2534,7 +2582,7 @@ private:
                     if (m_recv_trans.get_data(target_ic) && m_recv_trans.get_data(target_uuid)) {
                         m_info_manager->socket_helper_hide_preedit_string(client_id, target_ic, target_uuid);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_HIDE_AUX_STRING) {
                     m_info_manager->socket_hide_aux_string();
@@ -2558,7 +2606,7 @@ private:
                         m_recv_trans.get_data(caret)) {
                         m_info_manager->socket_helper_update_preedit_string(client_id, target_ic, target_uuid, preedit, commit, attrs, caret);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_UPDATE_PREEDIT_CARET) {
                     uint32 caret;
@@ -2566,7 +2614,7 @@ private:
                     if (m_recv_trans.get_data(caret)) {
                         m_info_manager->socket_helper_update_preedit_caret(client_id, caret);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_UPDATE_AUX_STRING) {
                     String str;
@@ -2575,14 +2623,14 @@ private:
                     if (m_recv_trans.get_data(str) && m_recv_trans.get_data(attrs))
                         m_info_manager->socket_update_aux_string(str, attrs);
                     else
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                 } else if (cmd == SCIM_TRANS_CMD_UPDATE_LOOKUP_TABLE) {
                     CommonLookupTable _isf_candidate_table;
 
                     if (m_recv_trans.get_data(_isf_candidate_table)) {
                         m_info_manager->socket_update_lookup_table(_isf_candidate_table);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == ISM_TRANS_CMD_UPDATE_ASSOCIATE_TABLE) {
                     CommonLookupTable _isf_candidate_table;
@@ -2590,7 +2638,7 @@ private:
                     if (m_recv_trans.get_data(_isf_candidate_table)) {
                         m_info_manager->socket_update_associate_table(_isf_candidate_table);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_PROCESS_KEY_EVENT ||
                            cmd == SCIM_TRANS_CMD_PANEL_SEND_KEY_EVENT) {
@@ -2604,7 +2652,7 @@ private:
                         !key.empty()) {
                         m_info_manager->socket_helper_send_key_event(client_id, target_ic, target_uuid, key);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_FORWARD_KEY_EVENT) {
                     uint32 target_ic;
@@ -2617,7 +2665,7 @@ private:
                         !key.empty()) {
                         m_info_manager->socket_helper_forward_key_event(client_id, target_ic, target_uuid, key);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_PANEL_SEND_IMENGINE_EVENT) {
                     uint32 target_ic;
@@ -2629,7 +2677,7 @@ private:
                         m_nest_trans.valid()) {
                         m_info_manager->socket_helper_send_imengine_event(client_id, target_ic, target_uuid, m_nest_trans);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_REGISTER_PROPERTIES) {
                     PropertyList properties;
@@ -2637,14 +2685,14 @@ private:
                     if (m_recv_trans.get_data(properties))
                         m_info_manager->socket_helper_register_properties(client_id, properties);
                     else
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                 } else if (cmd == SCIM_TRANS_CMD_UPDATE_PROPERTY) {
                     Property property;
 
                     if (m_recv_trans.get_data(property))
                         m_info_manager->socket_helper_update_property(client_id, property);
                     else
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                 } else if (cmd == ISM_TRANS_CMD_UPDATE_ISE_INPUT_CONTEXT) {
                     uint32 type;
                     uint32 value;
@@ -2652,15 +2700,33 @@ private:
                     if (m_recv_trans.get_data(type) && m_recv_trans.get_data(value)) {
                         m_info_manager->socket_helper_update_input_context(client_id, type, value);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
+                    }
+                } else if (cmd == ISM_TRANS_CMD_UPDATE_ISE_LANGUAGE_LOCALE) {
+                    String locale;
+
+                    char* data = NULL;
+                    size_t len;
+                    if (m_recv_trans.get_data(&data, len)) {
+                        if (data && len) {
+                            locale = String(data, len);
+                            m_info_manager->socket_helper_update_language_locale(client_id, locale);
+                        } else {
+                            LOGW("wrong format of transaction : %p %d", data, len);
+                        }
+                    } else {
+                        LOGW("wrong format of transaction");
                     }
+
+                    if (data != NULL)
+                        delete [] data;
                 } else if (cmd == ISM_TRANS_CMD_GET_KEYBOARD_ISE_LIST) {
                     String uuid;
 
                     if (m_recv_trans.get_data(uuid)) {
                         m_info_manager->socket_get_keyboard_ise_list(uuid);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == ISM_TRANS_CMD_SET_CANDIDATE_UI) {
                     uint32 portrait_line, mode;
@@ -2668,14 +2734,14 @@ private:
                     if (m_recv_trans.get_data(portrait_line) && m_recv_trans.get_data(mode))
                         m_info_manager->socket_set_candidate_ui(portrait_line, mode);
                     else
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                 } else if (cmd == ISM_TRANS_CMD_GET_CANDIDATE_UI) {
                     String uuid;
 
                     if (m_recv_trans.get_data(uuid)) {
                         m_info_manager->socket_get_candidate_ui(uuid);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == ISM_TRANS_CMD_SET_CANDIDATE_POSITION) {
                     uint32 left, top;
@@ -2683,7 +2749,7 @@ private:
                     if (m_recv_trans.get_data(left) && m_recv_trans.get_data(top))
                         m_info_manager->socket_set_candidate_position(left, top);
                     else
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                 } else if (cmd == ISM_TRANS_CMD_HIDE_CANDIDATE) {
                     m_info_manager->socket_hide_candidate();
                 } else if (cmd == ISM_TRANS_CMD_GET_CANDIDATE_GEOMETRY) {
@@ -2692,7 +2758,7 @@ private:
                     if (m_recv_trans.get_data(uuid)) {
                         m_info_manager->socket_get_candidate_geometry(uuid);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == ISM_TRANS_CMD_PANEL_RESET_KEYBOARD_ISE) {
                     m_info_manager->reset_keyboard_ise();
@@ -2702,7 +2768,7 @@ private:
                     if (m_recv_trans.get_data(uuid)) {
                         m_info_manager->socket_set_keyboard_ise(uuid);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == ISM_TRANS_CMD_GET_KEYBOARD_ISE) {
                     String uuid;
@@ -2710,7 +2776,7 @@ private:
                     if (m_recv_trans.get_data(uuid)) {
                         m_info_manager->socket_get_keyboard_ise(uuid);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == ISM_TRANS_CMD_UPDATE_ISE_GEOMETRY) {
                     uint32 x, y, width, height;
@@ -2719,7 +2785,7 @@ private:
                         m_recv_trans.get_data(width) && m_recv_trans.get_data(height)) {
                         m_info_manager->socket_helper_update_ise_geometry(client_id, x, y, width, height);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == ISM_TRANS_CMD_EXPAND_CANDIDATE) {
                     m_info_manager->expand_candidate();
@@ -2731,7 +2797,7 @@ private:
                     if (m_recv_trans.get_data(index))
                         m_info_manager->socket_helper_select_candidate(index);
                     else
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                 } else if (cmd == SCIM_TRANS_CMD_GET_SURROUNDING_TEXT) {
                     String uuid;
                     uint32 maxlen_before;
@@ -2742,7 +2808,7 @@ private:
                         m_recv_trans.get_data(maxlen_after)) {
                         m_info_manager->socket_helper_get_surrounding_text(client_id, uuid, maxlen_before, maxlen_after);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_DELETE_SURROUNDING_TEXT) {
                     uint32 offset;
@@ -2751,7 +2817,7 @@ private:
                     if (m_recv_trans.get_data(offset) && m_recv_trans.get_data(len)) {
                         m_info_manager->socket_helper_delete_surrounding_text(client_id, offset, len);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_GET_SELECTION) {
                     String uuid;
@@ -2759,7 +2825,7 @@ private:
                     if (m_recv_trans.get_data(uuid)) {
                         m_info_manager->socket_helper_get_selection(client_id, uuid);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_SET_SELECTION) {
                     uint32 start;
@@ -2768,7 +2834,7 @@ private:
                     if (m_recv_trans.get_data(start) && m_recv_trans.get_data(end)) {
                         m_info_manager->socket_helper_set_selection(client_id, start, end);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == SCIM_TRANS_CMD_SEND_PRIVATE_COMMAND) {
                     String command;
@@ -2776,11 +2842,23 @@ private:
                     if (m_recv_trans.get_data(command)) {
                         m_info_manager->socket_helper_send_private_command(client_id, command);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 //FIXME: useless
                 //} else if (cmd == ISM_TRANS_CMD_UPDATE_ISE_EXIT) {
                 //    m_info_manager->UPDATE_ISE_EXIT(client_id);
+                } else if (cmd == SCIM_TRANS_CMD_COMMIT_CONTENT) {
+                    String content;
+                    String description;
+                    String mime_types;
+
+                    if (m_recv_trans.get_data(content) &&
+                        m_recv_trans.get_data(description) &&
+                        m_recv_trans.get_data(mime_types)) {
+                        m_info_manager->socket_helper_commit_content(client_id, content, description, mime_types);
+                    } else {
+                        LOGW ("wrong format of transaction");
+                    }
                 } else if (cmd == ISM_TRANS_CMD_PROCESS_KEY_EVENT_DONE) {
                     KeyEvent key;
                     uint32 ret;
@@ -2789,7 +2867,7 @@ private:
                     if (m_recv_trans.get_data(key) && m_recv_trans.get_data(ret) && m_recv_trans.get_data(serial)) {
                         m_info_manager->process_key_event_done(key, ret, serial);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else if (cmd == ISM_TRANS_CMD_REQUEST_ISE_HIDE) {
                     m_info_manager->request_ise_hide();
@@ -2811,10 +2889,10 @@ private:
                         m_recv_trans.get_data(attrs)) {
                         m_info_manager->socket_helper_recapture_string(client_id, target_ic, target_uuid, offset, len, preedit, commit, attrs);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
                 } else {
-                    LOGW ("unknown cmd: %d\n", cmd);
+                    LOGW ("unknown cmd: %d", cmd);
                 }
             }
 
@@ -2823,10 +2901,9 @@ private:
             socket_transaction_start();
 
             while (m_recv_trans.get_command(cmd)) {
-                LOGD ("PanelAgent::cmd = %d\n", cmd);
+                LOGD ("PanelAgent::cmd = %d", cmd);
 
                 if (cmd == ISM_TRANS_CMD_GET_ACTIVE_ISE) {
-
                     if (m_info_manager->check_privilege_by_sockfd(client_id, IMEMANAGER_PRIVILEGE)) {
                         String default_uuid;
                         m_info_manager->get_active_ise(client_id, default_uuid);
@@ -2840,7 +2917,7 @@ private:
                         trans.write_to_socket(client_socket);
                     }
                     else {
-                        LOGW ("Access denied to get active ise\n");
+                        LOGW ("Access denied to get active ise");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_SET_ACTIVE_ISE_BY_UUID) {
@@ -2852,7 +2929,7 @@ private:
                         if (m_recv_trans.get_data(&buf, len)) {
                             ret = m_info_manager->set_active_ise_by_uuid(client_id, buf, len);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         Transaction trans;
@@ -2867,21 +2944,20 @@ private:
                             delete[] buf;
                     }
                     else {
-                        LOGW ("Access denied to set active ise\n");
+                        LOGW ("Access denied to set active ise");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_SET_INITIAL_ISE_BY_UUID) {
                     if (m_info_manager->check_privilege_by_sockfd(client_id, IMEMANAGER_PRIVILEGE)) {
                         char*   buf = NULL;
                         size_t  len;
-                        bool ret = true;
 
                         //FIXME
                         //ret need be checked
                         if (m_recv_trans.get_data(&buf, len)) {
                             m_info_manager->set_initial_ise_by_uuid(client_id, buf, len);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         Transaction trans;
@@ -2889,14 +2965,14 @@ private:
 
                         trans.clear();
                         trans.put_command(SCIM_TRANS_CMD_REPLY);
-                        trans.put_command(ret ? SCIM_TRANS_CMD_OK : SCIM_TRANS_CMD_FAIL);
+                        trans.put_command(SCIM_TRANS_CMD_OK);
                         trans.write_to_socket(client_socket);
 
                         if (NULL != buf)
                             delete[] buf;
                     }
                     else {
-                        LOGW ("Access denied to set initial ise\n");
+                        LOGW ("Access denied to set initial ise");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_GET_ISE_LIST) {
@@ -2925,7 +3001,7 @@ private:
                         trans.write_to_socket(client_socket);
                     }
                     else {
-                        LOGW ("Access denied to get ise list\n");
+                        LOGW ("Access denied to get ise list");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_GET_ALL_HELPER_ISE_INFO) {
@@ -2953,7 +3029,7 @@ private:
                         } while (0);
                     }
                     else {
-                        LOGW ("Access denied to get all helper ise info\n");
+                        LOGW ("Access denied to get all helper ise info");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_SET_ENABLE_HELPER_ISE_INFO) {
@@ -2966,7 +3042,7 @@ private:
                             m_info_manager->set_enable_helper_ise_info(client_id, appid, is_enabled);
                             ret = true;
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         Transaction trans;
@@ -2978,7 +3054,7 @@ private:
                         trans.write_to_socket(client_socket);
                     }
                     else {
-                        LOGW ("Access denied to set enable helper ise info\n");
+                        LOGW ("Access denied to set enable helper ise info");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_GET_ISE_INFORMATION) {
@@ -2990,7 +3066,7 @@ private:
                         if (m_recv_trans.get_data(strUuid)) {
                             m_info_manager->get_ise_information(client_id, strUuid, strName, strLanguage, nType, nOption, strModuleName);
                         } else {
-                            LOGW ("wrong format of transaction\n");
+                            LOGW ("wrong format of transaction");
                         }
 
                         Transaction trans;
@@ -3006,7 +3082,7 @@ private:
                         trans.write_to_socket(client_socket);
                     }
                     else {
-                        LOGW ("Access denied to get ise information\n");
+                        LOGW ("Access denied to get ise information");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_RESET_ISE_OPTION) {
@@ -3022,7 +3098,7 @@ private:
                         m_info_manager->reset_ise_option(client_id);
                     }
                     else {
-                        LOGW ("Access denied to reset ise option\n");
+                        LOGW ("Access denied to reset ise option");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_RESET_DEFAULT_ISE) {
@@ -3030,7 +3106,7 @@ private:
                         m_info_manager->reset_default_ise(client_id);
                     }
                     else {
-                        LOGW ("Access denied to reset default ise\n");
+                        LOGW ("Access denied to reset default ise");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_SHOW_ISF_CONTROL) {
@@ -3038,7 +3114,7 @@ private:
                         m_info_manager->show_isf_panel(client_id);
                     }
                     else {
-                        LOGW ("Access denied to show isf control\n");
+                        LOGW ("Access denied to show isf control");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_SHOW_ISE_OPTION_WINDOW) {
@@ -3046,7 +3122,7 @@ private:
                         m_info_manager->show_ise_option_window(client_id);
                     }
                     else {
-                        LOGW ("Access denied to show ise option window\n");
+                        LOGW ("Access denied to show ise option window");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_RESUME_ISE_OPTION_WINDOW) {
@@ -3054,7 +3130,7 @@ private:
                         m_info_manager->resume_ise_option_window(client_id);
                     }
                     else {
-                        LOGW ("Access denied to resume ise option window\n");
+                        LOGW ("Access denied to resume ise option window");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_SHOW_HELPER_ISE_LIST) {
@@ -3070,7 +3146,7 @@ private:
                         m_info_manager->show_helper_ise_list(client_id);
                     }
                     else {
-                        LOGW ("Access denied to show helper ise list\n");
+                        LOGW ("Access denied to show helper ise list");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_SHOW_HELPER_ISE_SELECTOR) {
@@ -3085,33 +3161,25 @@ private:
                         m_info_manager->show_helper_ise_selector(client_id);
                     }
                     else {
-                        LOGW ("Access denied to show helper ise selector\n");
+                        LOGW ("Access denied to show helper ise selector");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_IS_HELPER_ISE_ENABLED) {
                     if (m_info_manager->check_privilege_by_sockfd(client_id, IMEMANAGER_PRIVILEGE)) {
                         String strAppid;
                         uint32 nEnabled = 0;
-                        bool ret = true;
-                        //FIXME
-                        //ret need be checked
+
                         m_info_manager->is_helper_ise_enabled(client_id, strAppid, nEnabled);
                         Transaction trans;
                         Socket client_socket(client_id);
                         trans.clear();
                         trans.put_command(SCIM_TRANS_CMD_REPLY);
-
-                        if (ret) {
-                            trans.put_command(SCIM_TRANS_CMD_OK);
-                            trans.put_data(static_cast<uint32>(nEnabled));
-                        } else {
-                            trans.put_command(SCIM_TRANS_CMD_FAIL);
-                        }
-
+                        trans.put_command(SCIM_TRANS_CMD_OK);
+                        trans.put_data(static_cast<uint32>(nEnabled));
                         trans.write_to_socket(client_socket);
                     }
                     else {
-                        LOGW ("Access denied to check helper ise enabled\n");
+                        LOGW ("Access denied to check helper ise enabled");
                         send_fail_reply (client_id);
                     }
                 } else if (cmd == ISM_TRANS_CMD_GET_RECENT_ISE_GEOMETRY) {
@@ -3146,8 +3214,18 @@ private:
                     trans.put_command(SCIM_TRANS_CMD_OK);
                     trans.write_to_socket(client_socket);
                     m_info_manager->hide_helper_ise ();
+                } else if (cmd == ISM_TRANS_CMD_LAUNCH_ISE) {
+                    m_info_manager->launch_helper_ise();
+
+                    Transaction trans;
+                    Socket client_socket(client_id);
+
+                    trans.clear();
+                    trans.put_command(SCIM_TRANS_CMD_REPLY);
+                    trans.put_command(SCIM_TRANS_CMD_OK);
+                    trans.write_to_socket(client_socket);
                 } else {
-                    LOGW ("unknown cmd: %d\n", cmd);
+                    LOGW ("unknown cmd: %d", cmd);
                 }
             }
 
@@ -3155,7 +3233,6 @@ private:
         } else if (client_info.type == REMOTEINPUT_ACT_CLIENT) {
             socket_transaction_start();
             while (m_recv_trans.get_command(cmd)) {
-                LOGD ("PanelAgent::cmd = %d\n", cmd);
                 if (cmd == ISM_REMOTE_TRANS_CMD_SEND_INPUT_MESSAGE) {
                     char*   buf = NULL;
                     size_t  len;
@@ -3164,7 +3241,7 @@ private:
                     if (m_recv_trans.get_data(&buf, len)) {
                         ret = m_info_manager->remoteinput_send_input_message(client_id, buf, len);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
 
                     Transaction trans;
@@ -3198,7 +3275,7 @@ private:
                     if (m_recv_trans.get_data(offset) && m_recv_trans.get_data(len)) {
                         ret = m_info_manager->remoteinput_delete_surrounding_text(offset, len);
                     } else {
-                        LOGW ("wrong format of transaction\n");
+                        LOGW ("wrong format of transaction");
                     }
 
                     Transaction trans;
@@ -3209,7 +3286,7 @@ private:
                     trans.put_command(ret ? SCIM_TRANS_CMD_OK : SCIM_TRANS_CMD_FAIL);
                     trans.write_to_socket(client_socket);
                 } else {
-                    LOGW ("unknown cmd: %d\n", cmd);
+                    LOGW ("unknown cmd: %d", cmd);
                 }
             }
 
@@ -3220,14 +3297,14 @@ private:
     void socket_exception_callback(SocketServer*   server,
                                    const Socket&   client) {
         SCIM_DEBUG_MAIN(2) << "PanelAgent::socket_exception_callback (" << client.get_id() << ")\n";
-        LOGD ("client id:%d\n", client.get_id());
+        LOGD ("client id:%d", client.get_id());
         socket_close_connection(server, client);
     }
 
     bool socket_open_connection(SocketServer*   server,
                                 const Socket&   client) {
         SCIM_DEBUG_MAIN(3) << "PanelAgent::socket_open_connection (" << client.get_id() << ")\n";
-        LOGD ("client id:%d\n", client.get_id());
+        LOGD ("client id:%d", client.get_id());
         uint32 key;
         String type = scim_socket_accept_connection(key,
                       String("Panel"),
@@ -3250,7 +3327,7 @@ private:
             unlock();
             return true;
         }
-        LOGW ("open_connection failed\n");
+        LOGW ("open_connection failed");
 
         SCIM_DEBUG_MAIN(4) << "Close client connection " << client.get_id() << "\n";
         server->close_connection(client);
@@ -3260,11 +3337,11 @@ private:
     void socket_close_connection(SocketServer*   server,
                                  const Socket&   client) {
         SCIM_DEBUG_MAIN(3) << "PanelAgent::socket_close_connection (" << client.get_id() << ")\n";
-        LOGD ("client id:%d\n", client.get_id());
+        LOGD ("client id:%d", client.get_id());
         int i = 0;
         std::vector<Ecore_Fd_Handler *>::iterator IterPos;
 
-        for (IterPos = _read_handler_list.begin (); IterPos != _read_handler_list.end (); ++IterPos,++i) {
+        for (IterPos = _read_handler_list.begin (); IterPos != _read_handler_list.end (); ++IterPos, ++i) {
             if (ecore_main_fd_handler_fd_get (_read_handler_list[i]) == client.get_id()) {
                 ::close (client.get_id ());
                 ecore_main_fd_handler_del (_read_handler_list[i]);
@@ -3324,7 +3401,7 @@ extern "C" {
                 delete _instance;
                 _instance = NULL;
             }
-            if(_instance)
+            if (_instance)
                 instance = _instance;
         }
         return instance;