e_test_helper: added aux hint changed signal 40/256340/5
authorJunseok, Kim <juns.kim@samsung.com>
Thu, 1 Apr 2021 07:58:30 +0000 (16:58 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Tue, 20 Apr 2021 04:05:30 +0000 (04:05 +0000)
Added aux hint changed signal to registered test window.
It hooks E_CLIENT_HOOK_AUX_HINT_CHANGE of registered window and send "AuxHintChanged" signal to e-tizen-unittest.

Change-Id: Ib2549682a5c85f5755d82a1e1df45c10dfac8cdf
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
src/bin/e_test_helper.c

index 4780a6b4a01b65ee80751d7c45a170e709c49b6d..7d642b08db7cf4f7184b123d6b51a52b4439acb5 100644 (file)
@@ -24,6 +24,7 @@ typedef struct _Test_Helper_Data
    Ecore_Event_Handler *dbus_init_done_h;
 
    Eina_List *hdlrs;
+   Eina_List *hooks;
    Eina_List *reg_wins;
 
    Eina_Bool tc_running;
@@ -70,6 +71,7 @@ enum
    E_TEST_HELPER_SIGNAL_WINDOW_ROTATION_CHANGED,
    E_TEST_HELPER_SIGNAL_FOCUS_CHANGED,
    E_TEST_HELPER_SIGNAL_RENDER,
+   E_TEST_HELPER_AUX_HINT_CHANGED,
 };
 
 static const Eldbus_Signal signals[] = {
@@ -103,6 +105,12 @@ static const Eldbus_Signal signals[] = {
           ELDBUS_ARGS({"u", "window id for tracing rendering"}),
           0
        },
+     [E_TEST_HELPER_AUX_HINT_CHANGED] =
+       {
+          "AuxHintChanged",
+          ELDBUS_ARGS({"uuss", "window id, aux_hint id, aux_hint key, aux_hint value"}),
+          0
+       },
        { }
 };
 
@@ -476,6 +484,18 @@ _e_test_helper_send_render(Ecore_Window win)
    eldbus_service_signal_send(th_data->iface, signal);
 }
 
+static void
+_e_test_helper_send_aux_hint_change(Ecore_Window win, int hint_id, const char *hint_key, const char *hint_val)
+{
+   Eldbus_Message *signal;
+
+   EINA_SAFETY_ON_NULL_RETURN(th_data);
+
+   signal = eldbus_service_signal_new(th_data->iface, E_TEST_HELPER_AUX_HINT_CHANGED);
+   eldbus_message_arguments_append(signal, "uuss", win, hint_id, hint_key, hint_val);
+   eldbus_service_signal_send(th_data->iface, signal);
+}
+
 static Test_Helper_Reg_Win *
 _e_test_helper_find_win_on_reg_list(Ecore_Window win)
 {
@@ -1474,6 +1494,32 @@ _e_test_helper_cb_effect_end(void *data EINA_UNUSED,
    return ECORE_CALLBACK_DONE;
 }
 
+static void
+_e_test_helper_hook_cb_client_aux_hint_change(void *data EINA_UNUSED, E_Client *ec)
+{
+   Ecore_Window win = 0;
+   E_Comp_Wl_Client_Data *cdata = e_client_cdata_get(ec);
+   Eina_List *l, *ll;
+   E_Comp_Wl_Aux_Hint *hint;
+
+   EINA_SAFETY_ON_NULL_RETURN(th_data);
+   if (!th_data->tc_running) return;
+
+   win = e_pixmap_res_id_get(ec->pixmap);
+   if (!_e_test_helper_find_win_on_reg_list(win)) return;
+
+   if (win)
+     {
+        EINA_LIST_FOREACH_SAFE(cdata->aux_hint.hints, l, ll, hint)
+          {
+             if (hint->changed)
+               {
+                  _e_test_helper_send_aux_hint_change(win, hint->id, hint->hint, hint->val);
+               }
+          }
+     }
+}
+
 /* externally accessible functions */
 EINTERN int
 e_test_helper_init(void)
@@ -1504,6 +1550,9 @@ e_test_helper_init(void)
    E_LIST_HANDLER_APPEND(th_data->hdlrs, E_EVENT_COMP_OBJECT_IMG_RENDER,
                           _e_test_helper_cb_img_render, NULL);
 
+   E_LIST_HOOK_APPEND(th_data->hooks, E_CLIENT_HOOK_AUX_HINT_CHANGE,
+                      _e_test_helper_hook_cb_client_aux_hint_change, NULL);
+
    return 1;
 
 err: