e_test_event: Added iconic state change singal callback and event. 18/258218/2
authorJunseok, Kim <juns.kim@samsung.com>
Wed, 12 May 2021 08:49:24 +0000 (17:49 +0900)
committerJunseok, Kim <juns.kim@samsung.com>
Wed, 12 May 2021 09:14:12 +0000 (18:14 +0900)
Change-Id: I99b9ba564a73d08c4a23cb2766afe582a14cfe5c

src/e_test_base.h
src/e_test_event.cpp
src/e_test_event.h
src/e_test_util.h

index f3e1c37070fb85e3183a1528c4106d343b3c9363..0642b6c409ff11e31a1d9736721659dca2a1b374 100644 (file)
@@ -30,6 +30,7 @@ class etTCBase : public ::testing::Test
    std::shared_ptr<rotationEventItem> ev_result_rot;
    std::shared_ptr<focusEventItem> ev_result_focus;
    std::shared_ptr<auxHintEventItem> ev_result_hint;
+   std::shared_ptr<iconicStateEventItem> ev_result_iconic;
 
  private:
    Eina_List *tw_list = NULL;
index cd85f7ebb9f642616207f9b17e56dc7137fc9e19..2d034167189657f0241835b5e0155833e33119b1 100644 (file)
@@ -115,6 +115,7 @@ static void _cb_signal_win_rot_changed(void *data, const Eldbus_Message *msg);
 static void _cb_signal_focus_changed(void *data, const Eldbus_Message *msg);
 static void _cb_signal_render_while_effect_run(void *data, const Eldbus_Message *msg);
 static void _cb_signal_aux_hint_changed(void *data, const Eldbus_Message *msg);
+static void _cb_signal_iconic_state_changed(void *data, const Eldbus_Message *msg);
 
 /* callbacks - ecore */
 static Eina_Bool _cb_ecore_key_down(void *data, int type, void *event);
@@ -1401,6 +1402,11 @@ etRunner::waitEvent(etWin *win, E_TC_Event_Type ev_type)
       case E_TC_EVENT_TYPE_STACK_CHANGED:
          ev_type = E_TC_EVENT_TYPE_STACK_CHANGED;
          break;
+      case E_TC_EVENT_TYPE_ICONIC_STATE_ICONIFIED:
+      case E_TC_EVENT_TYPE_ICONIC_STATE_UNICONIFIED:
+      case E_TC_EVENT_TYPE_ICONIC_STATE_CHANGED:
+         ev_type = E_TC_EVENT_TYPE_ICONIC_STATE_CHANGED;
+         break;
       default:
          break;
      }
@@ -1579,6 +1585,13 @@ etRunner::addSignalHandlers()
    EINA_SAFETY_ON_NULL_GOTO(sh, err);
    ev.sh_list = eina_list_append(ev.sh_list, sh);
 
+   sh = eldbus_proxy_signal_handler_add(dbus.ds_proxy,
+                                        "IconicStateChanged",
+                                        _cb_signal_iconic_state_changed,
+                                        this);
+   EINA_SAFETY_ON_NULL_GOTO(sh, err);
+   ev.sh_list = eina_list_append(ev.sh_list, sh);
+
    eh = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _cb_ecore_key_down, this);
    EINA_SAFETY_ON_NULL_GOTO(eh, err);
    ev.eh_list = eina_list_append(ev.eh_list, eh);
@@ -2275,6 +2288,35 @@ finish:
      }
 }
 
+static void
+_cb_signal_iconic_state_changed(void *data,
+                         const Eldbus_Message *msg)
+{
+   etRunner *runner = (etRunner *)data;
+   const char *name = NULL, *text = NULL;
+   Eina_Bool res = EINA_FALSE;
+   Ecore_Window win = 0;
+   std::shared_ptr<iconicStateEventItem> iconicEvent = NULL;
+   Eina_Bool iconic = EINA_FALSE;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   res = eldbus_message_arguments_get(msg, "ub", &win, &iconic);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+
+   iconicEvent = std::make_shared<iconicStateEventItem>(win, E_TC_EVENT_TYPE_ICONIC_STATE_CHANGED, iconic);
+   EINA_SAFETY_ON_NULL_GOTO(iconicEvent, finish);
+
+   runner->insertEventQueue(iconicEvent);
+
+finish:
+   if ((name) || (text))
+     {
+        ERR("errname:%s errmsg:%s\n", name, text);
+     }
+}
+
 /* callbacks - timer */
 static Eina_Bool
 _cb_work_timeout(void *data)
index 624410275b9144360191ee41e0ef60c7ef4f2725..a7773cbdffaf2ad4eb37cd91ce4c0c821efb0768 100644 (file)
@@ -119,6 +119,26 @@ private:
    std::string val;
 };
 
+class iconicStateEventItem : public eventItem
+{
+public:
+   iconicStateEventItem() = delete;
+   iconicStateEventItem (Ecore_Window win, E_TC_Event_Type type, int iconic) :
+   eventItem(win, type),
+   iconic(iconic)
+   {
+   }
+   ~iconicStateEventItem()
+   {
+   }
+
+   Eina_Bool isIconified() { return this->iconic; }
+   Eina_Bool isUniconified() { return !this->iconic; }
+
+private:
+   int iconic;
+};
+
 class etRunner
 {
 private:
index 740565d508aba10f70c9d0c56b4c96b33d14fb73..d8335fdc645e4bd9042d4c0aa25035fd07f7a5e5 100644 (file)
@@ -87,6 +87,9 @@ typedef enum _E_TC_Event_Type
    E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE,
    E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG,
    E_TC_EVENT_TYPE_AUX_HINT_CHANGED,
+   E_TC_EVENT_TYPE_ICONIC_STATE_ICONIFIED,
+   E_TC_EVENT_TYPE_ICONIC_STATE_UNICONIFIED,
+   E_TC_EVENT_TYPE_ICONIC_STATE_CHANGED,
    E_TC_EVENT_TYPE_MAX
 } E_TC_Event_Type;
 
@@ -264,6 +267,27 @@ typedef struct _Window_Info_List
      } \
    } while (0)
 
+#define ASSERT_ICONIFIED(TEST_WINDOW) \
+   do { \
+     ASSERT_NE(TEST_WINDOW, nullptr) << "Window is NULL"; \
+     ev_result_iconic = std::static_pointer_cast<iconicStateEventItem>(etRunner::get().waitEvent(TEST_WINDOW, E_TC_EVENT_TYPE_ICONIC_STATE_CHANGED)); \
+     ASSERT_NE(ev_result_iconic, nullptr) << "result is NULL"; \
+     ASSERT_FALSE(ev_result_iconic->isTimeout) << "waitEvent timeout (1.0 sec)"; \
+     ASSERT_TRUE(ev_result_iconic->result) << "waitEvent failed"; \
+     ASSERT_TRUE(ev_result_iconic->isIconified()) << "Window is uniconified"; \
+   } while (0)
+
+#define ASSERT_UNICONIFIED(TEST_WINDOW) \
+   do { \
+     ASSERT_NE(TEST_WINDOW, nullptr) << "Window is NULL"; \
+     ev_result_iconic = std::static_pointer_cast<iconicStateEventItem>(etRunner::get().waitEvent(TEST_WINDOW, E_TC_EVENT_TYPE_ICONIC_STATE_CHANGED)); \
+     ASSERT_NE(ev_result_iconic, nullptr) << "result is NULL"; \
+     ASSERT_FALSE(ev_result_iconic->isTimeout) << "waitEvent timeout (1.0 sec)"; \
+     ASSERT_TRUE(ev_result_iconic->result) << "waitEvent failed"; \
+     ASSERT_TRUE(ev_result_iconic->isUniconified()) << "Window is iconified"; \
+   } while (0)
+
+
 #define CAPTURE_WIDTH 720
 #define CAPTURE_HEIGHT 1280
 #define PNG_DEPTH 8