e_test_event: supporting multiple event 66/201966/7 accepted/tizen/unified/20190610.082638 submit/tizen/20190607.045805 submit/tizen/20190610.041752
authorJunseok, Kim <juns.kim@samsung.com>
Fri, 4 Jan 2019 07:29:32 +0000 (16:29 +0900)
committerJunSeok Kim <juns.kim@samsung.com>
Fri, 7 Jun 2019 04:01:27 +0000 (04:01 +0000)
existing e_test_event can support only single event that registered window.
this patch makes e_test_event can support multiple event of all of testcase's window.

From now on, you can use waitEvent without registerTCWin.
but, waitEvent needs etWin pointer to check event.

Change-Id: I3cc9d92db78bc5d52d4b11a9b56af45d493a58a2

18 files changed:
src/Makefile.am
src/e_test_base.cpp
src/e_test_base.h
src/e_test_event.cpp
src/e_test_event.h
src/e_test_util.h
src/eina_list_ext.h
src/testcase/0001_easy.cpp
src/testcase/0002_base_operation.cpp
src/testcase/0003_base_operation_multi_wins.cpp
src/testcase/0004_transient_for.cpp
src/testcase/0005_notification.cpp
src/testcase/0006_tzsh.cpp
src/testcase/0007_rotation.cpp
src/testcase/0008_focus.cpp
src/testcase/0009_input.cpp
src/testcase/0010_splash.cpp
src/testcase/0011_effect.cpp

index 1bcbe2a..22619e7 100644 (file)
@@ -9,7 +9,7 @@ e_tizen_unittests_LDADD = \
 -lgtest \
 @E_TEST_RUNNER_LIBS@
 
-e_tizen_unittests_TESTCASES = \
+tc_sources = \
 testcase/0001_easy.cpp \
 testcase/0002_base_operation.cpp \
 testcase/0003_base_operation_multi_wins.cpp \
@@ -31,17 +31,7 @@ e_test_base.cpp \
 e_test_win.h \
 e_test_win.cpp \
 e_test_util.h \
-testcase/0001_easy.cpp \
-testcase/0002_base_operation.cpp \
-testcase/0003_base_operation_multi_wins.cpp \
-testcase/0004_transient_for.cpp \
-testcase/0005_notification.cpp \
-testcase/0006_tzsh.cpp \
-testcase/0007_rotation.cpp \
-testcase/0008_focus.cpp \
-testcase/0009_input.cpp \
-testcase/0010_splash.cpp \
-testcase/0011_effect.cpp
+${tc_sources}
 
 MAINTAINERCLEANFILES = \
 Makefile.in
index 8654809..0baec02 100644 (file)
@@ -2,12 +2,21 @@
 
 using ::testing::Test;
 
+etTCBase::etTCBase()
+{
+   etRunner::get().flushEventQueue();
+   etRunner::get().setTCStart();
+}
+
 etTCBase::~etTCBase()
 {
    etWin *tw = NULL;
    numGeomTw = 0;
    numTw = 0;
 
+   etRunner::get().setTCEnd();
+   etRunner::get().flushEventQueue();
+
    // if there are any error, print list of window
    if (HasFailure())
      {
@@ -15,13 +24,6 @@ etTCBase::~etTCBase()
         etRunner::get().waitForDestroy();
      }
 
-   // remove register win
-   if (tw_register)
-     {
-        etRunner::get().deregisterWin(tw_register);
-        tw_register = NULL;
-     }
-
    // remove all testcase win
    if (tw_list)
      {
@@ -29,6 +31,7 @@ etTCBase::~etTCBase()
           {
              if (tw)
                {
+                  deregisterTCWin(tw);
                   tw->hide();
                   delete tw;
                   tw = NULL;
@@ -55,7 +58,7 @@ etTCBase::initFakeWin()
 
 
 etWin *
-etTCBase::initNormalWin(const char *name, Eina_Bool show_win, Eina_Bool usr_geom)
+etTCBase::initNormalWin(const char *name, Eina_Bool usr_geom)
 {
    Eina_Bool res = EINA_FALSE;
    etWin *tw = new etWin();
@@ -69,11 +72,8 @@ etTCBase::initNormalWin(const char *name, Eina_Bool show_win, Eina_Bool usr_geom
    EINA_SAFETY_ON_FALSE_GOTO(res, err);
    tw->native_win = etRunner::get().getWinId(tw->elm_win);
 
-   if (show_win)
-     {
-        res = showTCWin(tw);
-        EINA_SAFETY_ON_FALSE_GOTO(res, err);
-     }
+   res = registerTCWin(tw);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
 
    numTw++;
    if (usr_geom) numGeomTw++;
@@ -88,7 +88,7 @@ err:
 }
 
 etWin *
-etTCBase::initNotiWin(const char *name, Eina_Bool show_win, Eina_Bool usr_geom, Eina_Bool set_noti_level_normal)
+etTCBase::initNotiWin(const char *name, Eina_Bool usr_geom, Eina_Bool set_noti_level_normal)
 {
    Eina_Bool res = EINA_FALSE;
    etWin *tw = new etWin();
@@ -105,11 +105,8 @@ etTCBase::initNotiWin(const char *name, Eina_Bool show_win, Eina_Bool usr_geom,
    if (set_noti_level_normal)
      etRunner::get().setWinNotiLevel(tw, EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
 
-   if (show_win)
-     {
-        res = showTCWin(tw);
-        EINA_SAFETY_ON_FALSE_GOTO(res, err);
-     }
+   res = registerTCWin(tw);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
 
    numTw++;
    if (usr_geom) numGeomTw++;
@@ -129,21 +126,10 @@ etTCBase::registerTCWin(etWin *tw)
    Eina_Bool res = EINA_FALSE;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
-   if (tw == tw_register) return EINA_TRUE;
-
-   if (tw_register)
-     {
-        res = etRunner::get().deregisterWin(tw_register);
-        EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
-
-        tw_register = NULL;
-     }
 
    res = etRunner::get().registerWin(tw);
    EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
 
-   tw_register = tw;
-
    return EINA_TRUE;
 }
 
@@ -152,34 +138,23 @@ etTCBase::deregisterTCWin(etWin *tw)
 {
    Eina_Bool res = EINA_FALSE;
 
-   if (!tw_register) return EINA_TRUE;
    EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
-   EINA_SAFETY_ON_TRUE_RETURN_VAL(tw != tw_register, EINA_FALSE);
 
    res = etRunner::get().deregisterWin(tw);
    EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
 
-   tw_register = NULL;
-
    return EINA_TRUE;
 }
 
 Eina_Bool
 etTCBase::showTCWin(etWin *tw)
 {
-   Eina_Bool res = EINA_FALSE;
-
    EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(tw->elm_win, EINA_FALSE);
 
-   res = registerTCWin(tw);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
-
    tw->updateGeometry();
    tw->show();
 
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
-
    return EINA_TRUE;
 }
 
@@ -191,39 +166,23 @@ etTCBase::showActivateTCWin(etWin *tw)
    EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(tw->elm_win, EINA_FALSE);
 
-   res = registerTCWin(tw);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
-
    tw->updateGeometry();
    tw->show();
 
    res = etRunner::get().setWinActivate(tw);
    EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
 
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
-
    return EINA_TRUE;
 }
 
 Eina_Bool
 etTCBase::removeTCWin(etWin *tw)
 {
-   Eina_Bool res = EINA_FALSE;
-
    EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(tw->elm_win, EINA_FALSE);
 
-   res = registerTCWin(tw);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
-
    tw->hide();
-
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_OFF);
-
-   res = deregisterTCWin(tw);
-   tw_list = eina_list_remove(tw_list, tw);
-   delete tw;
+   deregisterTCWin(tw);
 
    return EINA_TRUE;
 }
-
index c381cce..31abe7c 100644 (file)
@@ -8,13 +8,13 @@ using ::testing::Test;
 class etTCBase : public ::testing::Test
 {
  public:
-   etTCBase() { };
+   etTCBase();
    ~etTCBase();
 
  public:
    etWin     *initFakeWin();
-   etWin     *initNormalWin(const char *name, Eina_Bool show_win, Eina_Bool usr_geom);
-   etWin     *initNotiWin(const char *name, Eina_Bool show_win, Eina_Bool usr_geom, Eina_Bool set_noti_level_normal);
+   etWin     *initNormalWin(const char *name, Eina_Bool usr_geom);
+   etWin     *initNotiWin(const char *name, Eina_Bool usr_geom, Eina_Bool set_noti_level_normal);
 
    Eina_Bool  registerTCWin(etWin *tw);
    Eina_Bool  deregisterTCWin(etWin *tw);
@@ -23,7 +23,6 @@ class etTCBase : public ::testing::Test
    Eina_Bool  removeTCWin(etWin *tw);
 
  private:
-   etWin     *tw_register = NULL;
    Eina_List *tw_list = NULL;
 
    int        numTw = 0;     // number of wins
index b176064..69ba1f2 100644 (file)
@@ -72,6 +72,7 @@ static void _cb_method_win_info_list_get(void *data, const Eldbus_Message *msg,
 static void _cb_method_window_register(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
 static void _cb_method_zone_rotation_change(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
 static void _cb_method_window_effect(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
+static void _cb_method_set_tc_start_end(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
 
 /* callbacks - signal */
 static void _cb_signal_vis_changed(void *data, const Eldbus_Message *msg);
@@ -81,8 +82,8 @@ 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);
 
 /* callbacks - ecore */
-static Eina_Bool _cb_ecore_key(void *data, int type, void *event);
-static Eina_Bool _cb_key_delay_timer(void *data);
+static Eina_Bool _cb_ecore_key_down(void *data, int type, void *event);
+static Eina_Bool _cb_ecore_key_up(void *data, int type, void *event);
 
 /* callbacks - evas */
 static void _cb_evas_key_down(void * data, Evas * evas, Evas_Object * obj, void * event_info);
@@ -95,18 +96,12 @@ static void _cb_evas_smart_cb_launch_done(void *data, Evas_Object * obj, void *e
 
 /* callbacks - timer */
 static Eina_Bool _cb_work_timeout(void *data);
-static Eina_Bool _ev_wait_timeout(void *data);
 
 /* callbacks - gesture */
 static Eina_Bool _cb_gesture_tap(void *data, int type, void *event);
 static Eina_Bool _cb_gesture_edge_swipe(void *data, int type, void *event);
 static Eina_Bool _cb_gesture_edge_drag(void *data, int type, void *event);
 
-/* functions - gesture */
-static void _gesture_tap_generate(etRunner *runner);
-static void _gesture_edge_swipe_generate(etRunner *runner);
-static void _gesture_edge_drag_generate(etRunner *runner);
-
 /**********************
       listeners
  **********************/
@@ -166,6 +161,15 @@ etRunner::init()
 
    // init input generator
    inputGenerator = efl_util_input_initialize_generator(EFL_UTIL_INPUT_DEVTYPE_TOUCHSCREEN | EFL_UTIL_INPUT_DEVTYPE_KEYBOARD);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(inputGenerator, EINA_FALSE);
+
+   // init gesture handler
+   gestureHandler = efl_util_gesture_initialize();
+   EINA_SAFETY_ON_NULL_RETURN_VAL(gestureHandler, EINA_FALSE);
+
+   // add signal handlers
+   res = addSignalHandlers();
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
 
    return EINA_TRUE;
 }
@@ -176,6 +180,7 @@ etRunner::shutdown()
    eina_log_domain_unregister(logDomain);
 
    freeLastWinInfoList();
+   delSignalHandlers();
 
    // deinit tizen_extension protocol
    if (tzPolicy)
@@ -210,6 +215,9 @@ etRunner::shutdown()
 
    // deinit input generator
    efl_util_input_deinitialize_generator(inputGenerator);
+
+   // deinit gesture handler
+   efl_util_gesture_deinitialize(gestureHandler);
 }
 
 Eina_Bool
@@ -402,6 +410,52 @@ etRunner::setZoneRotation(int angle)
 }
 
 Eina_Bool
+etRunner::setTCStart()
+{
+   Eldbus_Pending *p = NULL;
+   Eina_Bool res = EINA_FALSE;
+
+   p = eldbus_proxy_call(dbus.proxy,
+                         "StartTestCase",
+                         _cb_method_set_tc_start_end,
+                         &res,
+                         -1,
+                         "");
+   EINA_SAFETY_ON_NULL_GOTO(p, err);
+
+   work();
+
+   EINA_SAFETY_ON_FALSE_GOTO(res, err);
+
+   return EINA_TRUE;
+
+err:
+   setTCEnd();
+   return EINA_FALSE;
+}
+
+Eina_Bool
+etRunner::setTCEnd()
+{
+   Eldbus_Pending *p = NULL;
+   Eina_Bool res = EINA_FALSE;
+
+   p = eldbus_proxy_call(dbus.proxy,
+                         "EndTestCase",
+                         _cb_method_set_tc_start_end,
+                         &res,
+                         -1,
+                         "");
+   if (p == NULL) res = EINA_FALSE;
+
+   work();
+
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
+
+   return EINA_TRUE;
+}
+
+Eina_Bool
 etRunner::getWinInfo(etWin *tw)
 {
    Eldbus_Pending *p = NULL;
@@ -790,12 +844,18 @@ etRunner::generateKeyRelease(const char *keyname)
    return EINA_TRUE;
 }
 
-void
+Eina_Bool
 etRunner::generateKeyEvent(const char *keyname, double delay)
 {
-   this->ev.key.timer = ecore_timer_add(delay,
-                                        _cb_key_delay_timer,
-                                        this);
+   Eina_Bool res = EINA_FALSE;
+
+   res = etRunner::get().generateKeyPress(keyname);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
+
+   res = etRunner::get().generateKeyRelease(keyname);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
+
+   return res;
 }
 
 Eina_Bool
@@ -921,7 +981,7 @@ etRunner::setWinEffect(etWin *tw)
    Eldbus_Pending *p = NULL;
    Eina_Bool accepted = EINA_FALSE;
 
-   this->ev.win = tw->elm_win;
+   this->ev.elm_win = tw->elm_win;
 
    p = eldbus_proxy_call(dbus.proxy,
                          "RenderTrace",
@@ -968,147 +1028,186 @@ etRunner::thawEvent()
 }
 
 Eina_Bool
-etRunner::waitEvent(E_TC_Event_Type ev_type)
+etRunner::waitEvent(etWin *win, E_TC_Event_Type ev_type)
 {
-   Eldbus_Signal_Handler *sh = NULL;
-   Ecore_Event_Handler *eh = NULL, *eh2 = NULL;
+   E_TC_Event_Item *recv_item = NULL;
    Eina_Bool res = EINA_FALSE;
 
-   EINA_SAFETY_ON_FALSE_RETURN_VAL((E_TC_EVENT_TYPE_NONE < ev_type), res);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL((E_TC_EVENT_TYPE_MAX > ev_type), res);
-
+   // swap event
    switch (ev_type)
      {
       case E_TC_EVENT_TYPE_VIS_ON:
       case E_TC_EVENT_TYPE_VIS_OFF:
       case E_TC_EVENT_TYPE_VIS_CHANGED:
-         sh = eldbus_proxy_signal_handler_add(dbus.proxy,
-                                              "VisibilityChanged",
-                                              _cb_signal_vis_changed,
-                                              this);
-         EINA_SAFETY_ON_NULL_GOTO(sh, finish);
+         ev_type = E_TC_EVENT_TYPE_VIS_CHANGED;
          break;
-
       case E_TC_EVENT_TYPE_STACK_RAISE:
       case E_TC_EVENT_TYPE_STACK_LOWER:
       case E_TC_EVENT_TYPE_STACK_ABOVE:
       case E_TC_EVENT_TYPE_STACK_BELOW:
-         sh = eldbus_proxy_signal_handler_add(dbus.proxy,
-                                              "StackChanged",
-                                              _cb_signal_stack_changed,
-                                              this);
-         EINA_SAFETY_ON_NULL_GOTO(sh, finish);
+      case E_TC_EVENT_TYPE_STACK_CHANGED:
+         ev_type = E_TC_EVENT_TYPE_STACK_CHANGED;
          break;
+     }
 
-      case E_TC_EVENT_TYPE_WINDOW_ROTATION_CHANGE:
-         sh = eldbus_proxy_signal_handler_add(dbus.proxy,
-                                              "WinRotationChanged",
-                                              _cb_signal_win_rot_changed,
-                                              this);
-         EINA_SAFETY_ON_NULL_GOTO(sh, finish);
-         break;
+   // Add event callbacks if needs
+   if (ev_type == E_TC_EVENT_TYPE_EFFECT_EVAS_CB)
+     {
+        ev.elm_win = win->elm_win;
+        ev.native_win = win->native_win;
+        ev.effect.state_smcb = E_TC_EVAS_SMART_CB_STATE_NONE;
 
-      case E_TC_EVENT_TYPE_FOCUS_CHANGED:
-         sh = eldbus_proxy_signal_handler_add(dbus.proxy,
-                                              "FocusChanged",
-                                              _cb_signal_focus_changed,
-                                              this);
-         EINA_SAFETY_ON_NULL_GOTO(sh, finish);
-         break;
+        evas_object_smart_callback_add(this->ev.elm_win, effect_started, _cb_evas_smart_cb_effect_started, this);
+        evas_object_smart_callback_add(this->ev.elm_win, effect_done, _cb_evas_smart_cb_effect_done, this);
+        evas_object_smart_callback_add(this->ev.elm_win, launch_done, _cb_evas_smart_cb_launch_done, this);
+     }
+   else if (ev_type == E_TC_EVENT_TYPE_INPUT_EVAS_KEY)
+     {
+        ev.elm_win = win->elm_win;
+        ev.native_win = win->native_win;
+        evas_object_event_callback_add(this->ev.elm_win, EVAS_CALLBACK_KEY_DOWN, _cb_evas_key_down, this);
+        evas_object_event_callback_add(this->ev.elm_win, EVAS_CALLBACK_KEY_UP, _cb_evas_key_up, this);
 
-      case E_TC_EVENT_TYPE_INPUT_ECORE_KEY:
-         eh = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _cb_ecore_key, this);
-         EINA_SAFETY_ON_NULL_GOTO(eh, finish);
-         eh2 = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _cb_ecore_key, this);
-         EINA_SAFETY_ON_NULL_GOTO(eh2, finish);
+        ev.key.evas_state = EINA_FALSE;
+     }
 
-         this->ev.key.state = EINA_FALSE;
-         this->generateKeyEvent(this->ev.key.name, 1.0);
-         break;
+   // pre-waiting events
+   work(0.5);
 
-      case E_TC_EVENT_TYPE_INPUT_EVAS_KEY:
-         evas_object_event_callback_add(this->ev.win, EVAS_CALLBACK_KEY_DOWN, _cb_evas_key_down, this);
-         evas_object_event_callback_add(this->ev.win, EVAS_CALLBACK_KEY_UP, _cb_evas_key_up, this);
+   if (ev.recv_queue == NULL)
+     {
+        work(0.5); // waiting additional time
+        if (ev.recv_queue == NULL)
+          return EINA_FALSE;
+     }
 
-         this->ev.key.state = EINA_FALSE;
-         this->generateKeyEvent(this->ev.key.name, 1.0);
-         break;
+   EINA_LIST_CAST_FREE(ev.recv_queue, recv_item, E_TC_Event_Item*)
+     {
+        if ((recv_item->win == (win?win->native_win:0)) &&
+            (recv_item->type == ev_type))
+          {
+             ev.recv_queue = eina_list_remove(ev.recv_queue, recv_item);
+             res = EINA_TRUE;
+             break;
+          }
+     }
 
-      case E_TC_EVENT_TYPE_EFFECT:
-         sh = eldbus_proxy_signal_handler_add(dbus.proxy,
-                                                 "RenderRun",
-                                                 _cb_signal_render_while_effect_run,
-                                                 this);
-         break;
+   return res;
+}
 
-      case E_TC_EVENT_TYPE_EFFECT_EVAS_CB:
-         this->ev.effect.state_smcb = E_TC_EVAS_SMART_CB_STATE_NONE;
-         evas_object_smart_callback_add(this->ev.win, effect_started, _cb_evas_smart_cb_effect_started, this);
-         evas_object_smart_callback_add(this->ev.win, effect_done, _cb_evas_smart_cb_effect_done, this);
-         evas_object_smart_callback_add(this->ev.win, launch_done, _cb_evas_smart_cb_launch_done, this);
-         break;
+void
+etRunner::flushEventQueue()
+{
+   if (ev.recv_queue)
+     {
+        ev.recv_queue = eina_list_free(ev.recv_queue);
+        ev.recv_queue = NULL;
+     }
+}
 
-      case E_TC_EVENT_TYPE_GESTURE_TAP:
-         eh = ecore_event_handler_add(EFL_UTIL_EVENT_GESTURE_TAP, _cb_gesture_tap, this);
-         _gesture_tap_generate(this);
-         break;
+Eina_Bool
+etRunner::addEventIntoQueue(Ecore_Window id, E_TC_Event_Type ev_type)
+{
+   E_TC_Event_Item *item = E_NEW(E_TC_Event_Item, 1);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(item, EINA_FALSE);
 
-      case E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE:
-         eh = ecore_event_handler_add(EFL_UTIL_EVENT_GESTURE_EDGE_SWIPE, _cb_gesture_edge_swipe, this);
-         _gesture_edge_swipe_generate(this);
-         break;
+   item->win = id;
+   item->type = ev_type;
+   ev.recv_queue = eina_list_append(ev.recv_queue, item);
 
-      case E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG:
-         eh = ecore_event_handler_add(EFL_UTIL_EVENT_GESTURE_EDGE_DRAG, _cb_gesture_edge_drag, this);
-         _gesture_edge_drag_generate(this);
-         break;
+   return EINA_TRUE;
+}
 
-      default:
-         goto finish;
-         break;
-     }
+Eina_Bool
+etRunner::addSignalHandlers()
+{
+   Eldbus_Signal_Handler *sh = NULL;
+   Ecore_Event_Handler *eh = NULL;
 
-   if (ev.expire_timer)
-     ecore_timer_del(ev.expire_timer);
+   flushEventQueue();
 
-   ev.request = ev_type;
-   ev.response = E_TC_EVENT_TYPE_NONE;
-   ev.expire_timer = ecore_timer_add(5.0, _ev_wait_timeout, this);
+   sh = eldbus_proxy_signal_handler_add(dbus.proxy,
+                                        "VisibilityChanged",
+                                        _cb_signal_vis_changed,
+                                        this);
+   EINA_SAFETY_ON_NULL_GOTO(sh, err);
+   ev.sh_list = eina_list_append(ev.sh_list, sh);
 
-   elm_run();
+   sh = eldbus_proxy_signal_handler_add(dbus.proxy,
+                                        "StackChanged",
+                                        _cb_signal_stack_changed,
+                                        this);
+   EINA_SAFETY_ON_NULL_GOTO(sh, err);
+   ev.sh_list = eina_list_append(ev.sh_list, sh);
 
-   if (ev.expire_timer)
-     {
-        ecore_timer_del(ev.expire_timer);
-        ev.expire_timer = NULL;
-     }
+   sh = eldbus_proxy_signal_handler_add(dbus.proxy,
+                                        "WinRotationChanged",
+                                        _cb_signal_win_rot_changed,
+                                        this);
+   EINA_SAFETY_ON_NULL_GOTO(sh, err);
+   ev.sh_list = eina_list_append(ev.sh_list, sh);
+
+   sh = eldbus_proxy_signal_handler_add(dbus.proxy,
+                                        "FocusChanged",
+                                        _cb_signal_focus_changed,
+                                        this);
+   EINA_SAFETY_ON_NULL_GOTO(sh, err);
+   ev.sh_list = eina_list_append(ev.sh_list, sh);
+
+   sh = eldbus_proxy_signal_handler_add(dbus.proxy,
+                                        "RenderRun",
+                                        _cb_signal_render_while_effect_run,
+                                        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);
+
+   eh = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _cb_ecore_key_up, this);
+   EINA_SAFETY_ON_NULL_GOTO(eh, err);
+   ev.eh_list = eina_list_append(ev.eh_list, eh);
+
+   eh = ecore_event_handler_add(EFL_UTIL_EVENT_GESTURE_TAP, _cb_gesture_tap, this);
+   EINA_SAFETY_ON_NULL_GOTO(eh, err);
+   ev.eh_list = eina_list_append(ev.eh_list, eh);
+
+   eh = ecore_event_handler_add(EFL_UTIL_EVENT_GESTURE_EDGE_SWIPE, _cb_gesture_edge_swipe, this);
+   EINA_SAFETY_ON_NULL_GOTO(eh, err);
+   ev.eh_list = eina_list_append(ev.eh_list, eh);
+
+   eh = ecore_event_handler_add(EFL_UTIL_EVENT_GESTURE_EDGE_DRAG, _cb_gesture_edge_drag, this);
+   EINA_SAFETY_ON_NULL_GOTO(eh, err);
+   ev.eh_list = eina_list_append(ev.eh_list, eh);
 
-   if (sh) eldbus_signal_handler_del(sh);
-   if (this->ev.sh) eldbus_signal_handler_del(this->ev.sh);
+   ev.key.ecore_state = EINA_FALSE;
 
-   if (eh) ecore_event_handler_del(eh);
-   if (eh2) ecore_event_handler_del(eh2);
+   return EINA_TRUE;
 
-   if (ev_type == E_TC_EVENT_TYPE_INPUT_EVAS_KEY)
+err:
+   printf("failed to init handlers\n");
+   delSignalHandlers();
+   return EINA_FALSE;
+}
+
+void
+etRunner::delSignalHandlers()
+{
+   Eldbus_Signal_Handler *sh = NULL;
+   Ecore_Event_Handler *eh = NULL;
+
+   EINA_LIST_CAST_FREE(ev.sh_list, sh, Eldbus_Signal_Handler*)
      {
-        evas_object_event_callback_del(this->ev.win, EVAS_CALLBACK_KEY_DOWN, _cb_evas_key_down);
-        evas_object_event_callback_del(this->ev.win, EVAS_CALLBACK_KEY_UP, _cb_evas_key_up);
+        eldbus_signal_handler_del(sh);
      }
-   else if (ev_type == E_TC_EVENT_TYPE_EFFECT_EVAS_CB)
+
+   EINA_LIST_CAST_FREE(ev.eh_list, eh, Ecore_Event_Handler*)
      {
-        evas_object_smart_callback_del(this->ev.win, effect_started, _cb_evas_smart_cb_effect_started);
-        evas_object_smart_callback_del(this->ev.win, effect_done, _cb_evas_smart_cb_effect_done);
-        evas_object_smart_callback_del(this->ev.win, launch_done, _cb_evas_smart_cb_launch_done);
+        ecore_event_handler_del(eh);
      }
 
-   res = (ev.response == ev.request);
-   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
-
-finish:
-   ev.request = E_TC_EVENT_TYPE_NONE;
-   ev.response = E_TC_EVENT_TYPE_NONE;
-
-   return res;
+   flushEventQueue();
 }
 
 void
@@ -1331,7 +1430,6 @@ _cb_method_win_info_list_get(void *data,
 {
    const char *name = NULL, *text = NULL, *wname = NULL;
    Eldbus_Message_Iter *array = NULL, *ec = NULL;
-   Ecore_Window target_win = 0;
    Window_Info_List *info_list = (Window_Info_List *)data;
    Eina_Bool res = EINA_FALSE, animating = EINA_FALSE;
 
@@ -1341,7 +1439,7 @@ _cb_method_win_info_list_get(void *data,
    res = eldbus_message_error_get(msg, &name, &text);
    EINA_SAFETY_ON_TRUE_GOTO(res, finish);
 
-   res = eldbus_message_arguments_get(msg, "ua(" E_TC_SIGN_WIN_INFO ")", &target_win, &array);
+   res = eldbus_message_arguments_get(msg, "a(" E_TC_SIGN_WIN_INFO ")", &array);
    EINA_SAFETY_ON_FALSE_GOTO(res, finish);
 
    while (eldbus_message_iter_get_and_next(array, 'r', &ec))
@@ -1484,6 +1582,33 @@ finish:
    etRunner::get().finishWork();
 }
 
+static void
+_cb_method_set_tc_start_end(void *data,
+                            const Eldbus_Message *msg,
+                            Eldbus_Pending *p)
+{
+   const char *name = NULL, *text = NULL;
+   Eina_Bool res = EINA_FALSE;
+   Eina_Bool *accept = (Eina_Bool *)data;
+
+   *accept = EINA_FALSE;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   res = eldbus_message_arguments_get(msg, "b", accept);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+   EINA_SAFETY_ON_FALSE_GOTO(*accept, finish);
+
+finish:
+   if ((name) || (text))
+     {
+        ERR("errname: %s errmsg: %s\n", name, text);
+     }
+
+   etRunner::get().finishWork();
+}
+
 /* callbacks - signal */
 static void
 _cb_signal_vis_changed(void *data,
@@ -1501,14 +1626,7 @@ _cb_signal_vis_changed(void *data,
    res = eldbus_message_arguments_get(msg, "ub", &id, &vis);
    EINA_SAFETY_ON_FALSE_GOTO(res, finish);
 
-   /* TODO */
-   if (((E_TC_EVENT_TYPE_VIS_ON  == runner->ev.request) && (vis)) ||
-       ((E_TC_EVENT_TYPE_VIS_OFF == runner->ev.request) && (!vis)) ||
-       (E_TC_EVENT_TYPE_VIS_CHANGED == runner->ev.request))
-     {
-        runner->ev.response = runner->ev.request;
-        elm_exit();
-     }
+   runner->addEventIntoQueue(id, E_TC_EVENT_TYPE_VIS_CHANGED);
 
 finish:
    if ((name) || (text))
@@ -1524,17 +1642,15 @@ _cb_signal_stack_changed(void *data,
    etRunner *runner = (etRunner *)data;
    const char *name = NULL, *text = NULL;
    Eina_Bool res = EINA_FALSE;
+   Ecore_Window id = 0;
 
    res = eldbus_message_error_get(msg, &name, &text);
    EINA_SAFETY_ON_TRUE_GOTO(res, finish);
 
-   /* TODO */
-   if ((E_TC_EVENT_TYPE_STACK_RAISE <= runner->ev.request) &&
-       (E_TC_EVENT_TYPE_STACK_BELOW >= runner->ev.request))
-     {
-        runner->ev.response = runner->ev.request;
-        elm_exit();
-     }
+   res = eldbus_message_arguments_get(msg, "u", &id);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+
+   runner->addEventIntoQueue(id, E_TC_EVENT_TYPE_STACK_CHANGED);
 
 finish:
    if ((name) || (text))
@@ -1560,8 +1676,7 @@ _cb_signal_win_rot_changed(void *data,
    res = eldbus_message_arguments_get(msg, "ui", &id, &angle);
    EINA_SAFETY_ON_FALSE_GOTO(res, finish);
 
-   runner->ev.response = runner->ev.request;
-   elm_exit();
+   runner->addEventIntoQueue(id, E_TC_EVENT_TYPE_WINDOW_ROTATION_CHANGE);
 
 finish:
    if ((name) || (text))
@@ -1577,15 +1692,15 @@ _cb_signal_focus_changed(void *data,
    etRunner *runner = (etRunner *)data;
    const char *name = NULL, *text = NULL;
    Eina_Bool res = EINA_FALSE;
+   Ecore_Window id = 0;
 
    res = eldbus_message_error_get(msg, &name, &text);
    EINA_SAFETY_ON_TRUE_GOTO(res, finish);
 
-   if (E_TC_EVENT_TYPE_FOCUS_CHANGED == runner->ev.request)
-     {
-        runner->ev.response = runner->ev.request;
-        elm_exit();
-     }
+   res = eldbus_message_arguments_get(msg, "u", &id);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+
+   runner->addEventIntoQueue(id, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
 finish:
    if ((name) || (text))
@@ -1601,12 +1716,15 @@ _cb_signal_render_while_effect_run(void *data,
    etRunner *runner = (etRunner *)data;
    const char *name = NULL, *text = NULL;
    Eina_Bool res = EINA_FALSE;
+   Ecore_Window id = 0;
 
    res = eldbus_message_error_get(msg, &name, &text);
    EINA_SAFETY_ON_TRUE_GOTO(res, finish);
 
-   runner->ev.response = runner->ev.request;
-   elm_exit();
+   res = eldbus_message_arguments_get(msg, "u", &id);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+
+   runner->addEventIntoQueue(id, E_TC_EVENT_TYPE_EFFECT);
 
 finish:
    if ((name) || (text))
@@ -1623,41 +1741,42 @@ _cb_work_timeout(void *data)
    return ECORE_CALLBACK_CANCEL;
 }
 
+/* callbacks - ecore */
 static Eina_Bool
-_ev_wait_timeout(void *data)
+_cb_ecore_key_down(void *data, int type, void *event)
 {
+   Ecore_Event_Key *ev = (Ecore_Event_Key *)event;
    etRunner *runner = (etRunner *)data;
 
-   runner->ev.expire_timer = NULL;
-   runner->ev.response = E_TC_EVENT_TYPE_TIMEOUT;
+   if (runner->ev.key.name == NULL) return ECORE_CALLBACK_PASS_ON;
 
-   ERR("ev:%d\n", runner->ev.request);
-
-   elm_exit();
+   if (!strncmp(runner->ev.key.name, ev->keyname, strlen(ev->keyname)))
+     {
+        if (runner->ev.key.ecore_state == EINA_FALSE &&
+            type == ECORE_EVENT_KEY_DOWN)
+          {
+             runner->ev.key.ecore_state = EINA_TRUE;
+          }
+     }
 
-   return ECORE_CALLBACK_DONE;
+   return ECORE_CALLBACK_PASS_ON;
 }
 
-/* callbacks - ecore */
 static Eina_Bool
-_cb_ecore_key(void *data, int type, void *event)
+_cb_ecore_key_up(void *data, int type, void *event)
 {
    Ecore_Event_Key *ev = (Ecore_Event_Key *)event;
    etRunner *runner = (etRunner *)data;
 
+   if (runner->ev.key.name == NULL) return ECORE_CALLBACK_PASS_ON;
+
    if (!strncmp(runner->ev.key.name, ev->keyname, strlen(ev->keyname)))
      {
-        if (runner->ev.key.state == EINA_FALSE &&
-            type == ECORE_EVENT_KEY_DOWN)
-          {
-             runner->ev.key.state = EINA_TRUE;
-          }
-        else if (runner->ev.key.state == EINA_TRUE &&
+        if (runner->ev.key.ecore_state == EINA_TRUE &&
             type == ECORE_EVENT_KEY_UP)
           {
-             runner->ev.response = runner->ev.request;
-             runner->ev.key.state = EINA_FALSE;
-             elm_exit();
+             runner->ev.key.ecore_state = EINA_FALSE;
+             runner->addEventIntoQueue(0, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
           }
      }
 
@@ -1675,10 +1794,10 @@ _cb_evas_key_down(void *data, Evas * evas, Evas_Object * obj, void * event_info)
 
    if (!strncmp(runner->ev.key.name, ev->keyname, strlen(ev->keyname)))
      {
-        if (runner->ev.key.state == EINA_FALSE &&
-            runner->ev.win == obj)
+        if (runner->ev.key.evas_state == EINA_FALSE &&
+            runner->ev.elm_win == obj)
           {
-             runner->ev.key.state = EINA_TRUE;
+             runner->ev.key.evas_state = EINA_TRUE;
           }
      }
 }
@@ -1693,13 +1812,13 @@ _cb_evas_key_up(void * data, Evas * evas, Evas_Object * obj, void * event_info)
 
    if (!strncmp(runner->ev.key.name, ev->keyname, strlen(ev->keyname)))
      {
-        if (runner->ev.key.state == EINA_TRUE &&
-            runner->ev.win == obj)
+        if (runner->ev.key.evas_state == EINA_TRUE &&
+            runner->ev.elm_win == obj)
           {
-             runner->ev.response = runner->ev.request;
-             runner->ev.key.state = EINA_FALSE;
-             runner->ev.win = NULL;
-             elm_exit();
+             runner->ev.key.evas_state = EINA_FALSE;
+             runner->ev.elm_win = NULL;
+
+             runner->addEventIntoQueue(runner->ev.native_win, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
           }
      }
 }
@@ -1709,7 +1828,7 @@ static void
 _cb_evas_smart_cb_effect_started(void *data, Evas_Object * obj, void *event_info)
 {
    etRunner *runner = (etRunner *)data;
-   if (runner && runner->ev.win == obj)
+   if (runner && runner->ev.elm_win == obj)
      {
         runner->ev.effect.state_smcb = E_TC_EVAS_SMART_CB_STATE_EFFECT_STARTED;
      }
@@ -1719,16 +1838,15 @@ static void
 _cb_evas_smart_cb_effect_done(void *data, Evas_Object * obj, void *event_info)
 {
    etRunner *runner = (etRunner *)data;
-   if (runner && runner->ev.win == obj)
+   if (runner && runner->ev.elm_win == obj)
      {
         runner->ev.effect.state_smcb |= E_TC_EVAS_SMART_CB_STATE_EFFECT_DONE;
 
-        if((runner->ev.effect.state_smcb & E_TC_EVAS_SMART_CB_STATE_EFFECT_STARTED) &&
-           (runner->ev.effect.state_smcb & E_TC_EVAS_SMART_CB_STATE_EFFECT_DONE))
-          {
-             runner->ev.response = runner->ev.request;
-             elm_exit();
-          }
+        runner->addEventIntoQueue(runner->ev.native_win, E_TC_EVENT_TYPE_EFFECT_EVAS_CB);
+
+        evas_object_smart_callback_del(runner->ev.elm_win, effect_started, _cb_evas_smart_cb_effect_started);
+        evas_object_smart_callback_del(runner->ev.elm_win, effect_done, _cb_evas_smart_cb_effect_done);
+        evas_object_smart_callback_del(runner->ev.elm_win, launch_done, _cb_evas_smart_cb_launch_done);
      }
 }
 
@@ -1736,7 +1854,7 @@ static void
 _cb_evas_smart_cb_launch_done(void *data, Evas_Object * obj, void *event_info)
 {
    etRunner *runner = (etRunner *)data;
-   if (runner && runner->ev.win == obj)
+   if (runner && runner->ev.elm_win == obj)
      {
         runner->ev.effect.state_smcb  |= E_TC_EVAS_SMART_CB_STATE_LAUNCH_DONE;
 
@@ -1744,26 +1862,16 @@ _cb_evas_smart_cb_launch_done(void *data, Evas_Object * obj, void *event_info)
            (runner->ev.effect.state_smcb & E_TC_EVAS_SMART_CB_STATE_EFFECT_DONE) &&
            (runner->ev.effect.state_smcb & E_TC_EVAS_SMART_CB_STATE_LAUNCH_DONE))
           {
-             runner->ev.response = runner->ev.request;
-             elm_exit();
+             runner->addEventIntoQueue(runner->ev.native_win, E_TC_EVENT_TYPE_EFFECT_EVAS_CB);
+
+             evas_object_smart_callback_del(runner->ev.elm_win, effect_started, _cb_evas_smart_cb_effect_started);
+             evas_object_smart_callback_del(runner->ev.elm_win, effect_done, _cb_evas_smart_cb_effect_done);
+             evas_object_smart_callback_del(runner->ev.elm_win, launch_done, _cb_evas_smart_cb_launch_done);
           }
      }
 }
 
 static Eina_Bool
-_cb_key_delay_timer(void *data)
-{
-   etRunner *runner = (etRunner *)data;
-
-   runner->generateKeyPress(runner->ev.key.name);
-   runner->generateKeyRelease(runner->ev.key.name);
-
-   runner->ev.key.timer = NULL;
-
-   return ECORE_CALLBACK_CANCEL;
-}
-
-static Eina_Bool
 _cb_gesture_tap(void *data, int type, void *event)
 {
    etRunner *runner = (etRunner *)data;
@@ -1773,8 +1881,8 @@ _cb_gesture_tap(void *data, int type, void *event)
    if ((ev->fingers == (unsigned int)runner->ev.gesture.tap.fingers) &&
        (ev->repeats == (unsigned int)runner->ev.gesture.tap.repeats))
      {
-        runner->ev.response = E_TC_EVENT_TYPE_GESTURE_TAP;
-        elm_exit();
+        runner->addEventIntoQueue(0, E_TC_EVENT_TYPE_GESTURE_TAP);
+        //ecore_event_handler_del(runner->ev.key.eh);
      }
 
    return ECORE_CALLBACK_PASS_ON;
@@ -1816,15 +1924,17 @@ _cb_gesture_tap_delay_timer(void *data)
    return ECORE_CALLBACK_CANCEL;
 }
 
-static void
-_gesture_tap_generate(etRunner *runner)
+Eina_Bool
+etRunner::generateTapGesture()
 {
-   runner->ev.gesture.tap.current_repeats = runner->ev.gesture.tap.repeats;
-   runner->ev.gesture.tap.pressed = EINA_FALSE;
+   ev.gesture.tap.current_repeats = ev.gesture.tap.repeats;
+   ev.gesture.tap.pressed = EINA_FALSE;
 
-   runner->ev.gesture.timer = ecore_timer_add(1.0,
-                                              _cb_gesture_tap_delay_timer,
-                                              runner);
+   ev.gesture.timer = ecore_timer_add(0.11,
+                                      _cb_gesture_tap_delay_timer,
+                                      this);
+
+   return EINA_TRUE;
 }
 
 static Eina_Bool
@@ -1837,13 +1947,8 @@ _cb_gesture_edge_swipe(void *data, int type, void *event)
    if ((ev->fingers == (unsigned int)runner->ev.gesture.edge.fingers) &&
        (ev->edge == (unsigned int)runner->ev.gesture.edge.edge))
      {
-        runner->ev.response = E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE;
         if (runner->ev.gesture.timer)
-          {
-             runner->ev.gesture.edge.get_event = EINA_TRUE;
-          }
-        else
-          elm_exit();
+          runner->ev.gesture.edge.get_event = EINA_TRUE;
      }
 
    return ECORE_CALLBACK_PASS_ON;
@@ -1935,8 +2040,8 @@ _cb_gesture_edge_swipe_delay_timer(void *data)
         runner->ev.gesture.timer = NULL;
         if (runner->ev.gesture.edge.get_event)
           {
-             runner->ev.gesture.edge.get_event = EINA_FALSE;
-             elm_exit();
+             runner->addEventIntoQueue(0, E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE);
+             //ecore_event_handler_del(runner->ev.key.eh);
           }
         return ECORE_CALLBACK_CANCEL;
      }
@@ -1949,15 +2054,17 @@ _cb_gesture_edge_swipe_delay_timer(void *data)
    return ECORE_CALLBACK_CANCEL;
 }
 
-static void
-_gesture_edge_swipe_generate(etRunner *runner)
+Eina_Bool
+etRunner::generateEdgeSwipeGesture()
 {
-   runner->ev.gesture.edge.touch_count = 0;
-   runner->ev.gesture.edge.get_event = EINA_FALSE;
+   ev.gesture.edge.touch_count = 0;
+   ev.gesture.edge.get_event = EINA_FALSE;
 
-   runner->ev.gesture.timer = ecore_timer_add(1.0,
-                                              _cb_gesture_edge_swipe_delay_timer,
-                                              runner);
+   ev.gesture.timer = ecore_timer_add(0.11,
+                                      _cb_gesture_edge_swipe_delay_timer,
+                                      this);
+
+   return EINA_TRUE;
 }
 
 static Eina_Bool
@@ -1971,8 +2078,8 @@ _cb_gesture_edge_drag(void *data, int type, void *event)
        (ev->edge == (unsigned int)runner->ev.gesture.edge.edge) &&
        (ev->mode == EFL_UTIL_GESTURE_MODE_END))
      {
-        runner->ev.response = E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG;
-        elm_exit();
+        runner->addEventIntoQueue(0, E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG);
+        //ecore_event_handler_del(runner->ev.key.eh);
      }
 
    return ECORE_CALLBACK_PASS_ON;
@@ -2073,12 +2180,14 @@ _cb_gesture_edge_drag_delay_timer(void *data)
    return ECORE_CALLBACK_CANCEL;
 }
 
-static void
-_gesture_edge_drag_generate(etRunner *runner)
+Eina_Bool
+etRunner::generateEdgeDragGesture()
 {
-   runner->ev.gesture.edge.touch_count = 0;
+   ev.gesture.edge.touch_count = 0;
 
-   runner->ev.gesture.timer = ecore_timer_add(1.0,
-                                              _cb_gesture_edge_drag_delay_timer,
-                                              runner);
+   ev.gesture.timer = ecore_timer_add(0.11,
+                                      _cb_gesture_edge_drag_delay_timer,
+                                      this);
+
+   return EINA_TRUE;
 }
index 77f06b2..eb815cd 100644 (file)
@@ -19,10 +19,7 @@ private:
       tzlaunch_effect = NULL;
       tzlaunch_splash =  NULL;
       wlOutput = NULL;
-      ev.expire_timer = NULL;
-      ev.request = E_TC_EVENT_TYPE_NONE;
-      ev.response = E_TC_EVENT_TYPE_NONE;
-      ev.key = {0,};
+      ev = {0,};
       logDomain = 0;
       dbus.conn = NULL;
       dbus.proxy = NULL;
@@ -64,15 +61,18 @@ private:
 public: /* TODO: make it hidden */
    struct
      {
-        Ecore_Timer *expire_timer;
-        E_TC_Event_Type request;
-        E_TC_Event_Type response;
-        Evas_Object *win;
-        Eldbus_Signal_Handler *sh;
+        Evas_Object *elm_win;
+        Ecore_Window native_win;
+
+        Eina_List *sh_list;
+        Eina_List *eh_list;
+        Eina_List *recv_queue;
+
         struct
           {
              Eina_Stringshare *name;
-             Eina_Bool state;
+             Eina_Bool ecore_state;
+             Eina_Bool evas_state;
              Ecore_Timer *timer;
           } key;
         struct
@@ -128,6 +128,8 @@ public:
    efl_util_notification_level_e getWinNotiLevel(etWin *tw);
    Eina_Bool     setFocusSkip(etWin *tw, Eina_Bool set);
    Eina_Bool     setZoneRotation(int angle);
+   Eina_Bool     setTCStart();
+   Eina_Bool     setTCEnd();
    Eina_Bool     getWinInfo(etWin *tw);
    Eina_List    *getWinInfoList();
    void          freeWinInfoList(Eina_List *list);
@@ -147,24 +149,34 @@ public:
    Eina_Bool     generateMouseUp(int x, int y);
    Eina_Bool     generateKeyPress(const char *key);
    Eina_Bool     generateKeyRelease(const char *key);
-   void          generateKeyEvent(const char *keyname, double delay);
+   Eina_Bool     generateKeyEvent(const char *keyname, double delay);
    Eina_Bool     generateTouchDown(int idx, int x, int y);
    Eina_Bool     generateTouchMove(int idx, int x, int y);
    Eina_Bool     generateTouchUp(int idx, int x, int y);
+   Eina_Bool     generateTapGesture();
+   Eina_Bool     generateEdgeSwipeGesture();
+   Eina_Bool     generateEdgeDragGesture();
    Eina_Bool     setSplashLaunch(const char *path, int type);
    Eina_Bool     setSplashOwner();
    Eina_Bool     setWinEffect(etWin *tw);
    Eina_Bool     freezeEvent();
    Eina_Bool     thawEvent();
-   Eina_Bool     waitEvent(E_TC_Event_Type ev);
+   Eina_Bool     waitEvent(etWin *win, E_TC_Event_Type ev_type);
+
+   void          flushEventQueue();
+   Eina_Bool     addEventIntoQueue(Ecore_Window id, E_TC_Event_Type ev_type);
+   Eina_Bool     addSignalHandlers();
+   void          delSignalHandlers();
 
    Eldbus_Proxy  *getDbusProxy()  { return dbus.proxy; }
    Eldbus_Object *getDbusObject() { return dbus.obj;   }
    int            getLogDomain()  { return logDomain;  }
+   efl_util_gesture_h getGestureHandler() { return gestureHandler; }
 
 protected:
    Eina_Bool initProtocols();
    efl_util_inputgen_h inputGenerator = NULL;
+   efl_util_gesture_h gestureHandler = NULL;
 };
 
 #endif // end of __ET_EVENT_LOOP_H__
index 5abf0f4..9de90ca 100644 (file)
@@ -73,6 +73,7 @@ typedef enum _E_TC_Event_Type
    E_TC_EVENT_TYPE_STACK_LOWER,
    E_TC_EVENT_TYPE_STACK_ABOVE,
    E_TC_EVENT_TYPE_STACK_BELOW,
+   E_TC_EVENT_TYPE_STACK_CHANGED,
    E_TC_EVENT_TYPE_WINDOW_ROTATION_CHANGE,
    E_TC_EVENT_TYPE_FOCUS_CHANGED,
    E_TC_EVENT_TYPE_INPUT_ECORE_KEY,
@@ -170,7 +171,13 @@ typedef struct _Window_Info_List
    Eina_Bool  retry;
 } Window_Info_List;
 
-# define EFL_UTIL_RETURN_TO_STRING(type)                                                \
+typedef struct _E_TC_Event_Item
+{
+   Ecore_Window win;
+   E_TC_Event_Type type;
+} E_TC_Event_Item;
+
+#define EFL_UTIL_RETURN_TO_STRING(type)                                                 \
        ((type == EFL_UTIL_ERROR_NONE)?"None":                                           \
         (type == EFL_UTIL_ERROR_INVALID_PARAMETER)?"Invalid parameter":                 \
         (type == EFL_UTIL_ERROR_OUT_OF_MEMORY)?"Out of memory":                         \
@@ -182,8 +189,7 @@ typedef struct _Window_Info_List
         (type == EFL_UTIL_ERROR_SCREENSHOT_INIT_FAIL)?"Screenshot init fail":           \
         (type == EFL_UTIL_ERROR_SCREENSHOT_EXECUTION_FAIL)?"Screenshot execution fail": \
         (type == EFL_UTIL_ERROR_NO_RESOURCE_AVAILABLE)?"No resource available":         \
-        "Unknown")                                                                      \
-
+        "Unknown")
 #endif // end of E_TC_MAIN_H
 
 #ifdef __cplusplus
index 9798508..c7a204c 100644 (file)
@@ -32,7 +32,7 @@
        EINA_PREFETCH(data),                                        \
        l;                                                          \
        l = l_next,                                                 \
-       l_next = eina_list_prev(l),                                 \
+       l_next = eina_list_next(l),                                 \
        EINA_PREFETCH(l_next),                                      \
        data = (caster)eina_list_data_get(l),                       \
        EINA_PREFETCH(data))
index 1a1d22d..7f13899 100644 (file)
@@ -1,7 +1,8 @@
 #include "e_test_event.h"
 #include "e_test_base.h"
 
-#define _WIN_ID 0x123456
+#define _WIN_ID1 0x123456
+#define _WIN_ID2 0x654321
 
 class etTestEasy : public ::etTCBase
 {
@@ -25,7 +26,9 @@ _cb_introspect(void *data,
    res = eldbus_message_arguments_get(msg, "s", &arg);
    EINA_SAFETY_ON_FALSE_GOTO(res, finish);
 
-   if ((!strstr(arg, "method name=\"RegisterWindow\""         )) ||
+   if ((!strstr(arg, "method name=\"StartTestCase\""          )) ||
+       (!strstr(arg, "method name=\"EndTestCase\""            )) ||
+       (!strstr(arg, "method name=\"RegisterWindow\""         )) ||
        (!strstr(arg, "method name=\"DeregisterWindow\""       )) ||
        (!strstr(arg, "method name=\"ResetRegisterWindow\""    )) ||
        (!strstr(arg, "method name=\"SetWindowStack\""         )) ||
@@ -45,12 +48,12 @@ _cb_introspect(void *data,
        (!strstr(arg, "method name=\"HWC\""                    )) ||
        (!strstr(arg, "method name=\"GetCurrentZoneRotation\"" )) ||
        (!strstr(arg, "method name=\"ChangeZoneRotation\""     )) ||
-       (!strstr(arg, "method name=\"RenderTrace\""     )) ||
+       (!strstr(arg, "method name=\"RenderTrace\""            )) ||
        (!strstr(arg, "signal name=\"VisibilityChanged\""      )) ||
        (!strstr(arg, "signal name=\"StackChanged\""           )) ||
        (!strstr(arg, "signal name=\"WinRotationChanged\""     )) ||
        (!strstr(arg, "signal name=\"FocusChanged\""           )) ||
-       (!strstr(arg, "signal name=\"RenderRun\""           )) ||
+       (!strstr(arg, "signal name=\"RenderRun\""              )) ||
        (!strstr(arg, "property name=\"Registrant\""           )))
      {
         ERR("missing mehod, signal or property:%s\n", arg);
@@ -74,6 +77,7 @@ _cb_prop_registrant(void *data,
    Eina_Bool *ret = (Eina_Bool *)data;
    const char *name = NULL, *text = NULL;
    Eldbus_Message_Iter *variant = NULL;
+   Eldbus_Message_Iter *arr_of_win = NULL;
    Ecore_Window win;
    Eina_Bool res;
    char *type;
@@ -91,14 +95,23 @@ _cb_prop_registrant(void *data,
 
    type = eldbus_message_iter_signature_get(variant);
    EINA_SAFETY_ON_NULL_GOTO(type, finish);
-   EINA_SAFETY_ON_FALSE_GOTO((type[0] == 'u'), finish);
+   EINA_SAFETY_ON_TRUE_GOTO(strncmp("au", type, strlen("au")) != 0, finish);
 
-   res = eldbus_message_iter_arguments_get(variant, "u", &win);
+   res = eldbus_message_iter_arguments_get(variant, "au", &arr_of_win);
    EINA_SAFETY_ON_FALSE_GOTO(res, finish);
-   EINA_SAFETY_ON_FALSE_GOTO((win == _WIN_ID), finish);
 
    *ret = EINA_TRUE;
 
+   while (eldbus_message_iter_get_and_next(arr_of_win, 'u', &win))
+     {
+        if (win == _WIN_ID1)
+          *ret &= EINA_TRUE;
+        else if (win == _WIN_ID2)
+          *ret &= EINA_TRUE;
+        else
+          *ret = EINA_FALSE;
+     }
+
 finish:
    if ((*ret) == EINA_FALSE)
      {
@@ -146,12 +159,19 @@ TEST_F(etTestEasy, win_register)
    Eina_Bool res = EINA_FALSE;
    Eldbus_Pending *p = NULL;
 
-   etWin *tw = initFakeWin();
-   ASSERT_TRUE(tw != NULL);
+   etWin *tw1 = initFakeWin();
+   ASSERT_TRUE(tw1 != NULL);
+
+   etWin *tw2 = initFakeWin();
+   ASSERT_TRUE(tw2 != NULL);
 
-   tw->native_win = _WIN_ID;
+   tw1->native_win = _WIN_ID1;
+   tw2->native_win = _WIN_ID2;
 
-   res = etRunner::get().registerWin(tw);
+   res = etRunner::get().registerWin(tw1);
+   ASSERT_TRUE(res);
+
+   res = etRunner::get().registerWin(tw2);
    ASSERT_TRUE(res);
 
    p = eldbus_proxy_property_get(etRunner::get().getDbusProxy(),
@@ -163,6 +183,9 @@ TEST_F(etTestEasy, win_register)
    etRunner::get().work();
    ASSERT_TRUE(res);
 
-   res = etRunner::get().deregisterWin(tw);
+   res = etRunner::get().deregisterWin(tw1);
+   ASSERT_TRUE(res);
+
+   res = etRunner::get().deregisterWin(tw2);
    ASSERT_TRUE(res);
 }
index 89690d9..fc06232 100644 (file)
@@ -16,7 +16,7 @@ class etTestBaseOperation : public ::etTCBase
 void
 etTestBaseOperation::initTC(Eina_Bool alpha_set)
 {
-   tw = initNormalWin("TCWin_Normal", EINA_FALSE, EINA_TRUE);
+   tw = initNormalWin("TCWin_Normal", EINA_TRUE);
    ASSERT_TRUE(tw != NULL) << "failed to initiation window";
 
    if (alpha_set)
@@ -28,6 +28,9 @@ etTestBaseOperation::initTC(Eina_Bool alpha_set)
 TEST_F(etTestBaseOperation, win_show)
 {
    initTC(EINA_FALSE);
+
+   showTCWin(tw);
+   etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON);
 }
 
 TEST_F(etTestBaseOperation, win_stack)
@@ -38,6 +41,9 @@ TEST_F(etTestBaseOperation, win_stack)
 
    initTC(EINA_FALSE);
 
+   showTCWin(tw);
+   etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON);
+
    list = etRunner::get().getWinInfoList();
    ASSERT_TRUE(list != NULL);
 
@@ -59,6 +65,9 @@ TEST_F(etTestBaseOperation, win_stack)
 TEST_F(etTestBaseOperation, alpha_win_show)
 {
    initTC(EINA_TRUE);
+
+   showTCWin(tw);
+   etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON);
 }
 
 TEST_F(etTestBaseOperation, alpha_win_stack)
@@ -69,6 +78,9 @@ TEST_F(etTestBaseOperation, alpha_win_stack)
 
    initTC(EINA_TRUE);
 
+   showTCWin(tw);
+   etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON);
+
    list = etRunner::get().getWinInfoList();
    ASSERT_TRUE(list != NULL);
 
index d313416..551812f 100644 (file)
@@ -18,14 +18,29 @@ class etTestBaseMulti : public ::etTCBase
 void
 etTestBaseMulti::initTC(Eina_Bool show_win, Eina_Bool usr_geom)
 {
-   tw_red = initNormalWin("TCWin_Normal_red", show_win, usr_geom);
+   tw_red = initNormalWin("TCWin_Normal_red", usr_geom);
    ASSERT_TRUE(tw_red != NULL) << "failed to initiation window";
+   if (show_win)
+     {
+        showTCWin(tw_red);
+        etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
+     }
 
-   tw_green = initNormalWin("TCWin_Normal_green", show_win, usr_geom);
+   tw_green = initNormalWin("TCWin_Normal_green", usr_geom);
    ASSERT_TRUE(tw_green != NULL) << "failed to initiation window";
+   if (show_win)
+     {
+        showTCWin(tw_green);
+        etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_FOCUS_CHANGED);
+     }
 
-   tw_blue = initNormalWin("TCWin_Normal_blue", show_win, usr_geom);
+   tw_blue = initNormalWin("TCWin_Normal_blue", usr_geom);
    ASSERT_TRUE(tw_blue != NULL) << "failed to initiation window";
+   if (show_win)
+     {
+        showTCWin(tw_blue);
+        etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_FOCUS_CHANGED);
+     }
 }
 
 TEST_F(etTestBaseMulti, multi_all_wins_basic)
@@ -85,14 +100,17 @@ TEST_F(etTestBaseMulti, multi_all_wins_show1)
    // show red
    res = showTCWin(tw_red);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // show blue
    res = showTCWin(tw_blue);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON);
 
    // show green
    res = showTCWin(tw_green);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected stack res:
    // [Top] Green -> Blue -> Red [Bottom]
@@ -142,14 +160,17 @@ TEST_F(etTestBaseMulti, multi_all_wins_show2)
    // show blue
    res = showTCWin(tw_blue);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON);
 
    // show red
    res = showTCWin(tw_red);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // show green
    res = showTCWin(tw_green);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected stack res:
    // [Top] Green -> Red -> Blue [Bottom]
@@ -199,14 +220,17 @@ TEST_F(etTestBaseMulti, multi_all_wins_show3)
    // show green
    res = showTCWin(tw_green);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_VIS_ON);
 
    // show blue
    res = showTCWin(tw_blue);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON);
 
    // show red
    res = showTCWin(tw_red);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected stack res:
    // [Top] Red -> Blue -> Green [Bottom]
@@ -254,7 +278,8 @@ TEST_F(etTestBaseMulti, multi_all_wins_raise1)
 
    // Raise Red
    etRunner::get().setWinStack(tw_red, NULL, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected stack res:
    // [Top] Red -> Blue -> Green [Bottom]
@@ -302,7 +327,7 @@ TEST_F(etTestBaseMulti, multi_all_wins_raise2)
 
    // Raise Green
    etRunner::get().setWinStack(tw_green, NULL, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_STACK_RAISE);
 
    // Expected stack res:
    // [Top] Green-> Blue -> Red [Bottom]
@@ -350,7 +375,7 @@ TEST_F(etTestBaseMulti, multi_all_wins_stack_above1)
 
    // Raise Red on the Green
    etRunner::get().setWinStack(tw_red, tw_green, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_ABOVE);
 
    // Expected stack res:
    // [Top] Blue -> Red -> Green [Bottom]
@@ -398,7 +423,7 @@ TEST_F(etTestBaseMulti, multi_all_wins_stack_above2)
 
    // Raise Blue on the Red
    etRunner::get().setWinStack(tw_blue, tw_red, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_STACK_ABOVE);
 
    // Expected stack res:
    // [Top] Green-> Blue -> Red [Bottom]
@@ -446,7 +471,7 @@ TEST_F(etTestBaseMulti, multi_all_wins_stack_above3)
 
    // Raise Red on the Blue
    etRunner::get().setWinStack(tw_red, tw_blue, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_ABOVE);
 
    // Expected stack res:
    // [Top] Green-> Blue -> Red [Bottom]
@@ -494,7 +519,7 @@ TEST_F(etTestBaseMulti, multi_all_wins_lower1)
 
    // Lower Blue
    etRunner::get().setWinStack(tw_blue, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_STACK_LOWER);
 
    // Expected stack res:
    // [Top] Green -> Red -> ... -> Blue [Bottom]
@@ -558,7 +583,7 @@ TEST_F(etTestBaseMulti, multi_all_wins_lower2)
 
    // Lower Green
    etRunner::get().setWinStack(tw_green, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_STACK_LOWER);
 
    // Expected stack res:
    // [Top] Blue -> Red -> ... -> Green [Bottom]
@@ -668,14 +693,17 @@ TEST_F(etTestBaseMulti, multi_all_full_wins_show1)
    // show red
    res = showTCWin(tw_red);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // show blue
    res = showTCWin(tw_blue);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON);
 
    // show green
    res = showTCWin(tw_green);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected stack res:
    // [Top] Green -> Blue -> Red [Bottom]
@@ -725,14 +753,17 @@ TEST_F(etTestBaseMulti, multi_all_full_wins_show2)
    // show blue
    res = showTCWin(tw_blue);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON);
 
    // show red
    res = showTCWin(tw_red);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // show green
    res = showTCWin(tw_green);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected stack res:
    // [Top] Green -> Red -> Blue [Bottom]
@@ -782,14 +813,17 @@ TEST_F(etTestBaseMulti, multi_all_full_wins_show3)
    // show green
    res = showTCWin(tw_green);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_VIS_ON);
 
    // show blue
    res = showTCWin(tw_blue);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON);
 
    // show red
    res = showTCWin(tw_red);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected stack res:
    // [Top] Red -> Blue -> Green [Bottom]
@@ -837,7 +871,7 @@ TEST_F(etTestBaseMulti, multi_all_full_wins_raise1)
 
    // Raise Red
    etRunner::get().setWinStack(tw_red, NULL, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_RAISE);
 
    // Expected stack res:
    // [Top] Red -> Blue -> Green [Bottom]
@@ -885,7 +919,7 @@ TEST_F(etTestBaseMulti, multi_all_full_wins_raise2)
 
    // Raise Green
    etRunner::get().setWinStack(tw_green, NULL, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_STACK_RAISE);
 
    // Expected stack res:
    // [Top] Green-> Blue -> Red [Bottom]
@@ -933,7 +967,7 @@ TEST_F(etTestBaseMulti, multi_all_full_wins_stack_above1)
 
    // Raise Red on the Green
    etRunner::get().setWinStack(tw_red, tw_green, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_ABOVE);
 
    // Expected stack res:
    // [Top] Blue -> Red -> Green [Bottom]
@@ -981,7 +1015,7 @@ TEST_F(etTestBaseMulti, multi_all_full_wins_stack_above2)
 
    // Raise Blue on the Red
    etRunner::get().setWinStack(tw_blue, tw_red, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_STACK_ABOVE);
 
    // Expected stack res:
    // [Top] Green-> Blue -> Red [Bottom]
@@ -1029,7 +1063,7 @@ TEST_F(etTestBaseMulti, multi_all_full_wins_stack_above3)
 
    // Raise Red on the Blue
    etRunner::get().setWinStack(tw_red, tw_blue, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_ABOVE);
 
    // Expected stack res:
    // [Top] Green-> Blue -> Red [Bottom]
@@ -1077,7 +1111,7 @@ TEST_F(etTestBaseMulti, multi_all_full_wins_lower1)
 
    // Lower Blue
    etRunner::get().setWinStack(tw_blue, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_STACK_LOWER);
 
    // Expected stack res:
    // [Top] Green -> Red -> ... -> Blue [Bottom]
@@ -1141,7 +1175,7 @@ TEST_F(etTestBaseMulti, multi_all_full_wins_lower2)
 
    // Lower Green
    etRunner::get().setWinStack(tw_green, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_STACK_LOWER);
 
    // Expected stack res:
    // [Top] Blue -> Red -> ... -> Green [Bottom]
@@ -1207,10 +1241,12 @@ TEST_F(etTestBaseMulti, multi_2wins_show1)
    // show green
    res = showTCWin(tw_green);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_VIS_ON);
 
    // show red
    res = showTCWin(tw_red);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected stack res:
    // [Top] Red -> Green [Bottom]
@@ -1254,10 +1290,12 @@ TEST_F(etTestBaseMulti, multi_2wins_show2)
    // show blue
    res = showTCWin(tw_blue);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON);
 
    // show green
    res = showTCWin(tw_green);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected stack res:
    // [Top] Green -> Blue [Bottom]
@@ -1301,10 +1339,12 @@ TEST_F(etTestBaseMulti, multi_2wins_show3)
    // show red
    res = showTCWin(tw_red);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // show blue
    res = showTCWin(tw_blue);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected stack res:
    // [Top] Blue -> Red [Bottom]
@@ -1348,10 +1388,12 @@ TEST_F(etTestBaseMulti, multi_full_2wins_show1)
    // show green
    res = showTCWin(tw_green);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_VIS_ON);
 
    // show red
    res = showTCWin(tw_red);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected stack res:
    // [Top] Red -> Green [Bottom]
@@ -1395,10 +1437,12 @@ TEST_F(etTestBaseMulti, multi_full_2wins_show2)
    // show blue
    res = showTCWin(tw_blue);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON);
 
    // show green
    res = showTCWin(tw_green);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected stack res:
    // [Top] Green -> Blue [Bottom]
@@ -1442,10 +1486,12 @@ TEST_F(etTestBaseMulti, multi_full_2wins_show3)
    // show red
    res = showTCWin(tw_red);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // show blue
    res = showTCWin(tw_blue);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected stack res:
    // [Top] Blue -> Red [Bottom]
index a4e9b47..2f6a8e9 100644 (file)
@@ -18,13 +18,28 @@ class etTestTransientFor : public ::etTCBase
 void
 etTestTransientFor::initTC(Eina_Bool show_win, Eina_Bool usr_geom)
 {
-   tw_parent = initNormalWin("TCWin_Normal_parent", show_win, usr_geom);
+   tw_parent = initNormalWin("TCWin_Normal_parent", usr_geom);
+   if (show_win)
+     {
+        showTCWin(tw_parent);
+        etRunner::get().waitEvent(tw_parent, E_TC_EVENT_TYPE_FOCUS_CHANGED);
+     }
    ASSERT_TRUE(tw_parent != NULL) << "failed to initiation window";
 
-   tw_child = initNormalWin("TCWin_Normal_child", show_win, usr_geom);
+   tw_child = initNormalWin("TCWin_Normal_child", usr_geom);
+   if (show_win)
+     {
+        showTCWin(tw_child);
+        etRunner::get().waitEvent(tw_child, E_TC_EVENT_TYPE_FOCUS_CHANGED);
+     }
    ASSERT_TRUE(tw_child != NULL) << "failed to initiation window";
 
-   tw_base = initNormalWin("TCWin_Normal_normal", show_win, usr_geom);
+   tw_base = initNormalWin("TCWin_Normal_normal", usr_geom);
+   if (show_win)
+     {
+        showTCWin(tw_base);
+        etRunner::get().waitEvent(tw_base, E_TC_EVENT_TYPE_FOCUS_CHANGED);
+     }
    ASSERT_TRUE(tw_base != NULL) << "failed to initiation window";
 }
 
@@ -41,6 +56,7 @@ TEST_F(etTestTransientFor, transient_for_basic)
    // set transient_for
    res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_child, E_TC_EVENT_TYPE_STACK_CHANGED);
 
    // Expected stack res:
    // [Top] tw_base -> tw_child -> tw_parent [Bottom]
@@ -89,14 +105,12 @@ TEST_F(etTestTransientFor, transient_for_raise)
    // set transient_for
    res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE);
    ASSERT_TRUE(res);
-
-   res = registerTCWin(tw_parent);
-   EXPECT_TRUE(res);
+   etRunner::get().waitEvent(tw_parent, E_TC_EVENT_TYPE_STACK_CHANGED);
 
    // tw_parent raise
    res = etRunner::get().setWinStack(tw_parent, NULL, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_parent, E_TC_EVENT_TYPE_STACK_CHANGED);
 
    // Expected stack res:
    // [Top] tw_child -> tw_parent -> tw_base [Bottom]
@@ -146,19 +160,17 @@ TEST_F(etTestTransientFor, transient_for_lower)
    // set transient_for
    res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE);
    ASSERT_TRUE(res);
-
-   res = registerTCWin(tw_parent);
-   EXPECT_TRUE(res);
+   etRunner::get().waitEvent(tw_parent, E_TC_EVENT_TYPE_STACK_RAISE);
 
    // tw_parent raise for prepare lower
    res = etRunner::get().setWinStack(tw_parent, NULL, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_parent, E_TC_EVENT_TYPE_STACK_RAISE);
 
    // tw_parent lower
    res = etRunner::get().setWinStack(tw_parent, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_LOWER);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_parent, E_TC_EVENT_TYPE_STACK_LOWER);
 
    // Expected stack res:
    // [Top] tw_base -> ... -> tw_child -> tw_parent [Bottom]
@@ -216,17 +228,15 @@ TEST_F(etTestTransientFor, transient_for_above)
    // init TC window, show=true, geom=true
    initTC(EINA_TRUE, EINA_TRUE);
 
-   res = registerTCWin(tw_parent);
-   EXPECT_TRUE(res);
-
    // set transient_for
    res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_child, E_TC_EVENT_TYPE_STACK_CHANGED);
 
    // tw_parent raise for prepare lower
    res = etRunner::get().setWinStack(tw_parent, tw_base, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_ABOVE);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_parent, E_TC_EVENT_TYPE_STACK_CHANGED);
 
    // Expected stack res:
    // [Top] tw_child -> tw_parent -> tw_base [Bottom]
index 28b5ab1..cc41202 100644 (file)
@@ -19,13 +19,19 @@ class etTestNotification : public ::etTCBase
 void
 etTestNotification::initTC(Eina_Bool usr_geom)
 {
-   tw_normal = initNormalWin("TCWin_Normal_normal", EINA_TRUE, usr_geom);
+   tw_normal = initNormalWin("TCWin_Normal_normal", usr_geom);
+   showTCWin(tw_normal);
+   etRunner::get().waitEvent(tw_normal, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(tw_normal != NULL) << "failed to initiation window";
 
-   tw_noti1 = initNotiWin("TCWin_Noti_1", EINA_TRUE, usr_geom, EINA_FALSE);
+   tw_noti1 = initNotiWin("TCWin_Noti_1", usr_geom, EINA_FALSE);
+   showTCWin(tw_noti1);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(tw_noti1 != NULL) << "failed to initiation window";
 
-   tw_noti2 = initNotiWin("TCWin_Noti_2", EINA_TRUE, usr_geom, EINA_FALSE);
+   tw_noti2 = initNotiWin("TCWin_Noti_2", usr_geom, EINA_FALSE);
+   showTCWin(tw_noti2);
+   etRunner::get().waitEvent(tw_noti2, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(tw_noti2 != NULL) << "failed to initiation window";
 }
 
@@ -46,7 +52,7 @@ TEST_F(etTestNotification, notification_level_default)
    EXPECT_TRUE(res);
 
    // TODO:: add ev_wait for notification level
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_RAISE);
 
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT, level);
@@ -109,7 +115,7 @@ TEST_F(etTestNotification, notification_level_medium)
    EXPECT_TRUE(res);
 
    // TODO:: add ev_wait for notification level
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_RAISE);
 
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM, level);
@@ -172,7 +178,7 @@ TEST_F(etTestNotification, notification_level_high)
    EXPECT_TRUE(res);
 
    // TODO:: add ev_wait for notification level
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_RAISE);
 
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_HIGH, level);
@@ -235,7 +241,7 @@ TEST_F(etTestNotification, notification_level_top)
    EXPECT_TRUE(res);
 
    // TODO:: add ev_wait for notification level
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_RAISE);
 
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_TOP, level);
@@ -296,7 +302,7 @@ TEST_F(etTestNotification, notification_level_none)
    res = etRunner::get().setWinNotiLevel(tw_noti1,
                                    EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
    EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_RAISE);
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_HIGH, level);
 
@@ -304,7 +310,7 @@ TEST_F(etTestNotification, notification_level_none)
    res = etRunner::get().setWinNotiLevel(tw_noti2,
                                    EFL_UTIL_NOTIFICATION_LEVEL_TOP);
    EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti2, E_TC_EVENT_TYPE_STACK_RAISE);
    level = etRunner::get().getWinNotiLevel(tw_noti2);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_TOP, level);
 
@@ -355,7 +361,7 @@ TEST_F(etTestNotification, notification_level_none)
    EXPECT_TRUE(res);
 
    // TODO:: add ev_wait for notification level
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti2, E_TC_EVENT_TYPE_STACK_RAISE);
 
    level = etRunner::get().getWinNotiLevel(tw_noti2);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_NONE, level);
@@ -414,7 +420,7 @@ TEST_F(etTestNotification, notification_level_change)
    res = etRunner::get().setWinNotiLevel(tw_noti1,
                                    EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
    EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_RAISE);
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT, level);
 
@@ -422,7 +428,7 @@ TEST_F(etTestNotification, notification_level_change)
    res = etRunner::get().setWinNotiLevel(tw_noti2,
                                    EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
    EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti2, E_TC_EVENT_TYPE_STACK_RAISE);
    level = etRunner::get().getWinNotiLevel(tw_noti2);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM, level);
 
@@ -471,7 +477,7 @@ TEST_F(etTestNotification, notification_level_change)
    res = etRunner::get().setWinNotiLevel(tw_noti1,
                                    EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
    EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_RAISE);
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_HIGH, level);
 
@@ -520,7 +526,7 @@ TEST_F(etTestNotification, notification_level_change)
    res = etRunner::get().setWinNotiLevel(tw_noti2,
                                    EFL_UTIL_NOTIFICATION_LEVEL_TOP);
    EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti2, E_TC_EVENT_TYPE_STACK_RAISE);
    level = etRunner::get().getWinNotiLevel(tw_noti2);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_TOP, level);
 
@@ -582,7 +588,7 @@ TEST_F(etTestNotification, notification_fullsize_level_default)
    EXPECT_TRUE(res);
 
    // TODO:: add ev_wait for notification level
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_RAISE);
 
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT, level);
@@ -645,7 +651,7 @@ TEST_F(etTestNotification, notification_fullsize_level_medium)
    EXPECT_TRUE(res);
 
    // TODO:: add ev_wait for notification level
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_RAISE);
 
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM, level);
@@ -708,7 +714,7 @@ TEST_F(etTestNotification, notification_fullsize_level_high)
    EXPECT_TRUE(res);
 
    // TODO:: add ev_wait for notification level
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_RAISE);
 
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_HIGH, level);
@@ -771,7 +777,7 @@ TEST_F(etTestNotification, notification_fullsize_level_top)
    EXPECT_TRUE(res);
 
    // TODO:: add ev_wait for notification level
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_RAISE);
 
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_TOP, level);
@@ -832,7 +838,7 @@ TEST_F(etTestNotification, notification_fullsize_level_none)
    res = etRunner::get().setWinNotiLevel(tw_noti1,
                                    EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
    EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_RAISE);
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_HIGH, level);
 
@@ -840,7 +846,7 @@ TEST_F(etTestNotification, notification_fullsize_level_none)
    res = etRunner::get().setWinNotiLevel(tw_noti2,
                                    EFL_UTIL_NOTIFICATION_LEVEL_TOP);
    EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti2, E_TC_EVENT_TYPE_STACK_RAISE);
    level = etRunner::get().getWinNotiLevel(tw_noti2);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_TOP, level);
 
@@ -891,7 +897,7 @@ TEST_F(etTestNotification, notification_fullsize_level_none)
    EXPECT_TRUE(res);
 
    // TODO:: add ev_wait for notification level
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti2, E_TC_EVENT_TYPE_STACK_RAISE);
 
    level = etRunner::get().getWinNotiLevel(tw_noti2);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_NONE, level);
@@ -950,7 +956,7 @@ TEST_F(etTestNotification, notification_fullsize_level_change)
    res = etRunner::get().setWinNotiLevel(tw_noti1,
                                    EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
    EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_ABOVE);
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT, level);
 
@@ -958,7 +964,7 @@ TEST_F(etTestNotification, notification_fullsize_level_change)
    res = etRunner::get().setWinNotiLevel(tw_noti2,
                                    EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
    EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti2, E_TC_EVENT_TYPE_STACK_ABOVE);
    level = etRunner::get().getWinNotiLevel(tw_noti2);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM, level);
 
@@ -1007,7 +1013,7 @@ TEST_F(etTestNotification, notification_fullsize_level_change)
    res = etRunner::get().setWinNotiLevel(tw_noti1,
                                    EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
    EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti1, E_TC_EVENT_TYPE_STACK_ABOVE);
    level = etRunner::get().getWinNotiLevel(tw_noti1);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_HIGH, level);
 
@@ -1056,7 +1062,7 @@ TEST_F(etTestNotification, notification_fullsize_level_change)
    res = etRunner::get().setWinNotiLevel(tw_noti2,
                                    EFL_UTIL_NOTIFICATION_LEVEL_TOP);
    EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_noti2, E_TC_EVENT_TYPE_STACK_ABOVE);
    level = etRunner::get().getWinNotiLevel(tw_noti2);
    ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_TOP, level);
 
index 4539723..9bbdcc2 100644 (file)
@@ -43,7 +43,7 @@ class etTestTzsh : public ::etTCBase
 void
 etTestTzsh::initTC()
 {
-   tw_base = initNormalWin("TCWin_Normal_base", EINA_FALSE, EINA_FALSE);
+   tw_base = initNormalWin("TCWin_Normal_base", EINA_FALSE);
    ASSERT_TRUE(tw_base != NULL) << "failed to initiation window";
 }
 
@@ -122,9 +122,8 @@ TEST_F(etTestTzsh, scrsaver_basic)
    tz_scrsaver = tzsh_screensaver_service_create(tzsh, tz_win);
    ASSERT_TRUE(tz_scrsaver != NULL);
 
-   tw_base->updateGeometry();
-   tw_base->show();
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   showTCWin(tw_base);
+   etRunner::get().waitEvent(tw_base, E_TC_EVENT_TYPE_VIS_ON);
 
    list = etRunner::get().getWinInfoList();
    ASSERT_TRUE(list != NULL);
index 46a41b0..0c02a6b 100644 (file)
@@ -20,7 +20,9 @@ class etTestRotation : public ::etTCBase
 void
 etTestRotation::initTC()
 {
-   tw_base = initNormalWin("TCWin_Normal_Rotation",EINA_TRUE, EINA_TRUE);
+   tw_base = initNormalWin("TCWin_Normal_Rotation", EINA_TRUE);
+   showTCWin(tw_base);
+   etRunner::get().waitEvent(tw_base, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(tw_base != NULL) << "failed to initiation window";
 
    // available rotations
@@ -39,7 +41,8 @@ etTestRotation::testWinRotation(etWin *tw, int rot)
         return EINA_FALSE;
      }
 
-   res = etRunner::get().waitEvent(E_TC_EVENT_TYPE_WINDOW_ROTATION_CHANGE);
+   res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_WINDOW_ROTATION_CHANGE);
+
    if (!res)
      {
         ERR("Failed waiting rotation change event");
index 9832cad..4e3a799 100644 (file)
@@ -19,16 +19,31 @@ class etTestFocus : public ::etTCBase
 void
 etTestFocus::initTC(Eina_Bool show_win, Eina_Bool usr_geom)
 {
-   tw_red = initNormalWin("TCWin_Normal_red", show_win, usr_geom);
+   tw_red = initNormalWin("TCWin_Normal_red", usr_geom);
+   if (show_win)
+     {
+        showTCWin(tw_red);
+        etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
+     }
    ASSERT_TRUE(tw_red != NULL) << "failed to initiation window";
 
-   tw_green = initNormalWin("TCWin_Normal_green", show_win, usr_geom);
+   tw_green = initNormalWin("TCWin_Normal_green", usr_geom);
+   if (show_win)
+     {
+        showTCWin(tw_green);
+        etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_FOCUS_CHANGED);
+     }
    ASSERT_TRUE(tw_green != NULL) << "failed to initiation window";
 
-   tw_blue = initNormalWin("TCWin_Normal_blue", show_win, usr_geom);
+   tw_blue = initNormalWin("TCWin_Normal_blue", usr_geom);
+   if (show_win)
+     {
+        showTCWin(tw_blue);
+        etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_FOCUS_CHANGED);
+     }
    ASSERT_TRUE(tw_blue != NULL) << "failed to initiation window";
 
-   tw_blocker = initNotiWin("TCWin_Noti_Blocker", EINA_FALSE, EINA_FALSE, EINA_FALSE);
+   tw_blocker = initNotiWin("TCWin_Noti_Blocker", EINA_FALSE, EINA_FALSE);
    ASSERT_TRUE(tw_blocker != NULL) << "failed to initiation window";
 }
 
@@ -66,8 +81,8 @@ TEST_F(etTestFocus, focus_lower)
 
    // make tw_blue lower
    res = etRunner::get().setWinStack(tw_blue, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(res);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Green[focused] -> Red -> ... -> Blue [Bottom]
@@ -94,10 +109,8 @@ TEST_F(etTestFocus, focus_lower2)
    initTC(EINA_TRUE, EINA_TRUE);
 
    // make tw_green lower
-   res = registerTCWin(tw_green);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinStack(tw_green, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_LOWER);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(res);
 
    // Expected focus res:
@@ -125,10 +138,8 @@ TEST_F(etTestFocus, focus_raise)
    initTC(EINA_TRUE, EINA_TRUE);
 
    // make tw_red raise
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinStack(tw_red, NULL, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(res);
 
    // Expected focus res:
@@ -156,6 +167,7 @@ TEST_F(etTestFocus, focus_destroy)
 
    // delete tw_blue
    removeTCWin(tw_blue);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_OFF);
    tw_blue = NULL;
 
    // Expected focus res:
@@ -183,11 +195,9 @@ TEST_F(etTestFocus, focus_activate1)
    initTC(EINA_TRUE, EINA_TRUE);
 
    // Activate tw_red
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinActivate(tw_red);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_RAISE);
 
    // Expected focus res:
    // [Top] Red[focused] -> Blue -> Green [Bottom]
@@ -215,13 +225,12 @@ TEST_F(etTestFocus, focus_activate2)
 
    // show Blocker
    showTCWin(tw_blocker);
+   etRunner::get().waitEvent(tw_blocker, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Activate tw_red
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinActivate(tw_red);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Red[focused] -> Blocker -> Blue -> Green [Bottom]
@@ -248,17 +257,17 @@ TEST_F(etTestFocus, focus_activate3)
    initTC(EINA_TRUE, EINA_TRUE);
 
    // make partial notification window
-   etWin *tw_smallnoti = initNotiWin("TW_Temp_Noti", EINA_TRUE, EINA_TRUE, EINA_TRUE);
+   etWin *tw_smallnoti = initNotiWin("TW_Temp_Noti", EINA_TRUE, EINA_TRUE);
+   showTCWin(tw_smallnoti);
+   etRunner::get().waitEvent(tw_smallnoti, E_TC_EVENT_TYPE_VIS_ON);
    res = etRunner::get().setWinNotiLevel(tw_smallnoti,
                                          EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
    EXPECT_TRUE(res);
 
    // Activate tw_red
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinActivate(tw_red);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_RAISE);
 
    // Expected focus res:
    // [Top] smallnoti -> ... -> Red[focused] -> Blue -> Green [Bottom]
@@ -284,14 +293,16 @@ TEST_F(etTestFocus, focus_show_activate)
    // init TC window, show=true, geom=true
    initTC(EINA_FALSE, EINA_TRUE);
 
-   etWin *tw_small_blocker = initNotiWin("TCWin_Noti_Small_Blocker", EINA_TRUE, EINA_TRUE, EINA_TRUE);
+   etWin *tw_small_blocker = initNotiWin("TCWin_Noti_Small_Blocker", EINA_TRUE, EINA_TRUE);
+   showTCWin(tw_small_blocker);
    etRunner::get().setWinNotiLevel(tw_small_blocker,
                                    EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
+   etRunner::get().waitEvent(tw_small_blocker, E_TC_EVENT_TYPE_VIS_ON);
 
    // Activate tw_red
    res = showActivateTCWin(tw_red);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Red[focused] -> Blue -> Green [Bottom]
@@ -322,13 +333,12 @@ TEST_F(etTestFocus, focus_obscured_activate)
                                          EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
    EXPECT_TRUE(res);
    showTCWin(tw_blocker);
+   etRunner::get().waitEvent(tw_blocker, E_TC_EVENT_TYPE_VIS_ON);
 
    // Activate tw_red
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinActivate(tw_red);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected focus res:
    // [Top] Blocker[focused] -> ... -> Red -> Blue -> Green [Bottom]
@@ -359,19 +369,18 @@ TEST_F(etTestFocus, focus_obscured_activate_destroy)
                                          EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
    EXPECT_TRUE(res);
    showTCWin(tw_blocker);
+   etRunner::get().waitEvent(tw_blocker, E_TC_EVENT_TYPE_VIS_ON);
 
    // Activate tw_red
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinActivate(tw_red);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_RAISE);
 
    // remove tw_blocker
    removeTCWin(tw_blocker);
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().waitEvent(tw_blocker, E_TC_EVENT_TYPE_VIS_OFF);
+   tw_blocker = NULL;
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected focus res:
    // [Top] Red[focused] -> Blue -> Green [Bottom]
@@ -398,11 +407,9 @@ TEST_F(etTestFocus, focus_transient_for1)
    initTC(EINA_TRUE, EINA_TRUE);
 
    // set transient_for Blue(parent) & Red(child)
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinTransientFor(tw_red, tw_blue, EINA_TRUE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_RAISE);
 
    // Expected focus res:
    // [Top] Red[focused] -> Blue -> Green [Bottom]
@@ -429,11 +436,9 @@ TEST_F(etTestFocus, focus_transient_for2)
    initTC(EINA_TRUE, EINA_TRUE);
 
    // set transient_for Blue(parent) & Green(child)
-   res = registerTCWin(tw_green);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinTransientFor(tw_green, tw_blue, EINA_TRUE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_STACK_RAISE);
 
    // Expected focus res:
    // [Top] Green[focused] -> Blue -> Red [Bottom]
@@ -460,11 +465,9 @@ TEST_F(etTestFocus, focus_transient_for3)
    initTC(EINA_TRUE, EINA_TRUE);
 
    // set transient_for Green(parent) & Blue(child)
-   res = registerTCWin(tw_green);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinTransientFor(tw_blue, tw_green, EINA_TRUE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_STACK_RAISE);
 
    // Expected focus res:
    // [Top] Blue[focused] -> Green -> Red [Bottom]
@@ -491,11 +494,9 @@ TEST_F(etTestFocus, focus_iconify1)
    initTC(EINA_TRUE, EINA_TRUE);
 
    // set iconify Blue
-   res = registerTCWin(tw_blue);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinIconic(tw_blue, EINA_TRUE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_OFF);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_OFF);
 
    // Expected focus res:
    // [Top] Blue(iconified) -> Green[focused] -> Red [Bottom]
@@ -522,11 +523,9 @@ TEST_F(etTestFocus, focus_iconify2)
    initTC(EINA_TRUE, EINA_TRUE);
 
    // set iconify Red
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinIconic(tw_red, EINA_TRUE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_OFF);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_OFF);
 
    // Expected focus res:
    // [Top] Blue[focused] -> Green -> Red(iconified) [Bottom]
@@ -553,16 +552,15 @@ TEST_F(etTestFocus, focus_uniconify)
    initTC(EINA_TRUE, EINA_TRUE);
 
    // set iconify Red
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinIconic(tw_red, EINA_TRUE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_OFF);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_OFF);
 
    // set uniconify Red
    res = etRunner::get().setWinIconic(tw_red, EINA_FALSE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().work(2.0);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected focus res:
    // [Top] Red[focused] -> Blue -> Green [Bottom]
@@ -589,16 +587,15 @@ TEST_F(etTestFocus, focus_uniconify2)
    initTC(EINA_TRUE, EINA_TRUE);
 
    // set iconify Blue
-   res = registerTCWin(tw_blue);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinIconic(tw_blue, EINA_TRUE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_OFF);
+   etRunner::get().waitEvent(tw_blue,  E_TC_EVENT_TYPE_VIS_OFF);
 
    // set uniconify Blue
    res = etRunner::get().setWinIconic(tw_blue, EINA_FALSE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().work(2.0);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected focus res:
    // [Top] Blue[focused] -> Green -> Red [Bottom]
@@ -629,11 +626,12 @@ TEST_F(etTestFocus, focus_visibility)
                                          EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
    EXPECT_TRUE(res);
    showTCWin(tw_blocker);
+   etRunner::get().waitEvent(tw_blocker, E_TC_EVENT_TYPE_VIS_ON);
 
    // hide blocker
    removeTCWin(tw_blocker);
-   res = registerTCWin(tw_blue);
-   EXPECT_TRUE(res);
+   etRunner::get().waitEvent(tw_blocker, E_TC_EVENT_TYPE_VIS_OFF);
+   tw_blocker = NULL;
 
    // Expected focus res:
    // [Top] Blue[focused] -> Green -> Red [Bottom]
@@ -660,7 +658,7 @@ TEST_F(etTestFocus, focus_move)
 
    // move tw_blue to out of screen
    tw_blue->move(2000, 2000);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_CHANGED);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_CHANGED);
 
    // Expected focus res:
    // [Top] Blue -> Green[focused] -> Red [Bottom]
@@ -687,11 +685,11 @@ TEST_F(etTestFocus, DISABLED_focus_move2)
 
    // move tw_blue to out of screen
    tw_blue->move(2000, 2000);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_OFF);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_OFF);
 
    // move tw_blue into screen
    tw_blue->move(200, 200);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected focus res:
    // [Top] Blue -> Green[focused] -> Red [Bottom]
@@ -711,18 +709,15 @@ TEST_F(etTestFocus, DISABLED_focus_move2)
 TEST_F(etTestFocus, focus_touch_basic)
 {
    etWin *tw = NULL;
-   Eina_Bool res = EINA_FALSE;
    Eina_List *list = NULL, *l = NULL;
 
    // init TC window, show=true, geom=true
    initTC(EINA_TRUE, EINA_TRUE);
 
    // touch red win
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    etRunner::get().generateMouseDown(50, 50);
    etRunner::get().generateMouseUp(50, 50);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Blue -> Green -> Red[focused] [Bottom]
@@ -742,25 +737,20 @@ TEST_F(etTestFocus, focus_touch_basic)
 TEST_F(etTestFocus, focus_touch_history)
 {
    etWin *tw = NULL;
-   Eina_Bool res = EINA_FALSE;
    Eina_List *list = NULL, *l = NULL;
 
    // init TC window, show=true, geom=true
    initTC(EINA_TRUE, EINA_TRUE);
 
    // touch red win
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    etRunner::get().generateMouseDown(50, 50);
    etRunner::get().generateMouseUp(50, 50);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // touch blue win
-   res = registerTCWin(tw_blue);
-   EXPECT_TRUE(res);
    etRunner::get().generateMouseDown(250, 250);
    etRunner::get().generateMouseUp(250, 250);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Blue[focused] -> Green -> Red [Bottom]
@@ -778,6 +768,10 @@ TEST_F(etTestFocus, focus_touch_history)
 
    // remove blue win
    removeTCWin(tw_blue);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_OFF);
+   tw_blue = NULL;
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
+
 
    // Expected focus res:
    // [Top] Green -> Red[focused] [Bottom]
@@ -795,6 +789,9 @@ TEST_F(etTestFocus, focus_touch_history)
 
    // remove red win
    removeTCWin(tw_red);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_OFF);
+   tw_red = NULL;
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Green[focused] [Bottom]
@@ -814,18 +811,15 @@ TEST_F(etTestFocus, focus_touch_history)
 TEST_F(etTestFocus, DISABLED_focus_touch_history2)
 {
    etWin *tw = NULL;
-   Eina_Bool res = EINA_FALSE;
    Eina_List *list = NULL, *l = NULL;
 
    // init TC window, show=true, geom=true
    initTC(EINA_TRUE, EINA_TRUE);
 
    // touch green win
-   res = registerTCWin(tw_green);
-   EXPECT_TRUE(res);
    etRunner::get().generateMouseDown(150, 150);
    etRunner::get().generateMouseUp(150, 150);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Red -> Green[focused] -> Blue [Bottom]
@@ -842,10 +836,8 @@ TEST_F(etTestFocus, DISABLED_focus_touch_history2)
    etRunner::get().freeWinInfoList(list);
 
    // activate red win
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    etRunner::get().setWinActivate(tw_red);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_ABOVE);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_ABOVE);
 
    // Expected focus res:
    // [Top] Red[focused] -> Blue -> Green [Bottom]
@@ -863,7 +855,7 @@ TEST_F(etTestFocus, DISABLED_focus_touch_history2)
 
    // lower red win
    etRunner::get().setWinStack(tw_red, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected focus res:
    // [Top] Blue -> Green[focused] -> ... -> Red [Bottom]
@@ -890,7 +882,7 @@ TEST_F(etTestFocus, focus_skip_set)
 
    // set focus_skip on tw_blue
    etRunner::get().setFocusSkip(tw_blue, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Blue -> Green[focused] -> Red [Bottom]
@@ -919,7 +911,7 @@ TEST_F(etTestFocus, focus_skip_unset)
 
    // set focus_skip on tw_blue
    etRunner::get().setFocusSkip(tw_blue, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Blue -> Green[focused] -> Red [Bottom]
@@ -935,7 +927,7 @@ TEST_F(etTestFocus, focus_skip_unset)
 
    // unset focus_skip on tw_blue
    etRunner::get().setFocusSkip(tw_blue, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().work(0.1); // waiting for adjust focus skip
 
    // Expected focus res:
    // [Top] Blue -> Green[focused] -> Red [Bottom]
@@ -955,22 +947,19 @@ TEST_F(etTestFocus, focus_skip_unset)
 TEST_F(etTestFocus, focus_touch_with_focus_skip)
 {
    etWin *tw = NULL;
-   Eina_Bool res = EINA_FALSE;
    Eina_List *list = NULL, *l = NULL;
 
    // init TC window, show=true, geom=true
    initTC(EINA_TRUE, EINA_TRUE);
 
    // set focus_skip on tw_red
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    etRunner::get().setFocusSkip(tw_red, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().work(0.1); // waiting for adjust focus skip
 
    // touch red win
    etRunner::get().generateMouseDown(50, 50);
    etRunner::get().generateMouseUp(50, 50);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().work(0.1); // waiting for adjust focus skip
 
    // Expected focus res:
    // [Top] Blue[focused] -> Green -> Red [Bottom]
@@ -1021,7 +1010,7 @@ TEST_F(etTestFocus, focus_fullsize_lower)
 
    // make tw_blue lower
    res = etRunner::get().setWinStack(tw_blue, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(res);
 
    // Expected focus res:
@@ -1049,10 +1038,8 @@ TEST_F(etTestFocus, focus_fullsize_lower2)
    initTC(EINA_TRUE, EINA_FALSE);
 
    // make tw_green lower
-   res = registerTCWin(tw_green);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinStack(tw_green, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_LOWER);
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_STACK_LOWER);
    ASSERT_TRUE(res);
 
    // Expected focus res:
@@ -1081,7 +1068,7 @@ TEST_F(etTestFocus, focus_fullsize_raise)
 
    // make tw_red raise
    res = etRunner::get().setWinStack(tw_red, NULL, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(res);
 
    // Expected focus res:
@@ -1109,7 +1096,9 @@ TEST_F(etTestFocus, focus_fullsize_destroy)
 
    // delete tw_blue
    removeTCWin(tw_blue);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_OFF);
    tw_blue = NULL;
+   etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Green[focused] -> Red [Bottom]
@@ -1136,11 +1125,9 @@ TEST_F(etTestFocus, focus_fullsize_activate)
    initTC(EINA_TRUE, EINA_FALSE);
 
    // Activate tw_red
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinActivate(tw_red);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected focus res:
    // [Top] Red[focused] -> Blue -> Green [Bottom]
@@ -1171,13 +1158,12 @@ TEST_F(etTestFocus, focus_fullsize_obscured_activate)
                                          EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
    EXPECT_TRUE(res);
    showTCWin(tw_blocker);
+   etRunner::get().waitEvent(tw_blocker, E_TC_EVENT_TYPE_VIS_ON);
 
    // Activate tw_red
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinActivate(tw_red);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_ABOVE);
 
    // Expected focus res:
    // [Top] Blocker[focused] -> ... -> Red -> Blue -> Green [Bottom]
@@ -1208,19 +1194,18 @@ TEST_F(etTestFocus, focus_fullsize_obscured_activate_destroy)
                                          EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
    EXPECT_TRUE(res);
    showTCWin(tw_blocker);
+   etRunner::get().waitEvent(tw_blocker, E_TC_EVENT_TYPE_VIS_ON);
 
    // Activate tw_red
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinActivate(tw_red);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_STACK_ABOVE);
 
    // remove tw_blocker
    removeTCWin(tw_blocker);
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().waitEvent(tw_blocker, E_TC_EVENT_TYPE_VIS_OFF);
+   tw_blocker = NULL;
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Red[focused] -> Blue -> Green [Bottom]
@@ -1247,11 +1232,9 @@ TEST_F(etTestFocus, focus_fullsize_transient_for)
    initTC(EINA_TRUE, EINA_FALSE);
 
    // set transient_for Blue(parent) & Red(child)
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinTransientFor(tw_red, tw_blue, EINA_TRUE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Red[focused] -> Blue -> Green [Bottom]
@@ -1278,11 +1261,9 @@ TEST_F(etTestFocus, focus_fullsize_iconify)
    initTC(EINA_TRUE, EINA_FALSE);
 
    // set iconify Blue
-   res = registerTCWin(tw_blue);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinIconic(tw_blue, EINA_TRUE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_OFF);
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_OFF);
 
    // Expected focus res:
    // [Top] Blue(iconified) -> Green[focused] -> Red [Bottom]
@@ -1309,16 +1290,14 @@ TEST_F(etTestFocus, focus_fullsize_uniconify)
    initTC(EINA_TRUE, EINA_FALSE);
 
    // set iconify Red
-   res = registerTCWin(tw_red);
-   EXPECT_TRUE(res);
    res = etRunner::get().setWinIconic(tw_red, EINA_TRUE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_OFF);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_OFF);
 
    // set uniconify Red
    res = etRunner::get().setWinIconic(tw_red, EINA_FALSE);
    ASSERT_TRUE(res);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Red[focused] -> Blue -> Green [Bottom]
@@ -1345,7 +1324,7 @@ TEST_F(etTestFocus, focus_fullsize_skip_set)
 
    // set focus_skip on tw_blue
    etRunner::get().setFocusSkip(tw_blue, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().work(0.1); // waiting for adjust focus skip set
 
    // Expected focus res:
    // [Top] Blue -> Green -> Red [Bottom]
@@ -1371,11 +1350,12 @@ TEST_F(etTestFocus, focus_fullsize_skip_unset)
    // Expected focus res:
    // [Top] Blue -> Green -> Red [Bottom]
    etRunner::get().setFocusSkip(tw_blue, EINA_TRUE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().work(0.1); // waiting for adjust focus skip set
 
    // unset focus_skip on tw_blue
    etRunner::get().setFocusSkip(tw_blue, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().work(0.1); // waiting for adjust focus skip set
+   etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_FOCUS_CHANGED);
 
    // Expected focus res:
    // [Top] Blue[focused] -> Green -> Red [Bottom]
index 15929d6..ce802ca 100644 (file)
@@ -5,8 +5,17 @@
 class etTestInput : public ::etTCBase
 {
 public:
-   etTestInput() { };
-   ~etTestInput() { };
+   etTestInput()
+     {
+        key_name = eina_stringshare_add("XF86Menu");
+        etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
+     };
+   ~etTestInput()
+     {
+        eina_stringshare_del(key_name);
+        eina_stringshare_del(etRunner::get().ev.key.name);
+        key_name = NULL;
+     };
 
 protected:
    etWin *tw_shared = NULL;
@@ -14,6 +23,8 @@ protected:
    etWin *tw_orexcl = NULL;
    etWin *tw_excl = NULL;
    etWin *tw_gesture = NULL;
+
+   Eina_Stringshare *key_name = NULL;
 };
 
 TEST_F(etTestInput, keygrab_nowin_shared)
@@ -22,13 +33,10 @@ TEST_F(etTestInput, keygrab_nowin_shared)
    ret = ecore_wl2_window_keygrab_set(NULL, "XF86Menu", 0, 0, 0, ECORE_WL2_WINDOW_KEYGRAB_SHARED);
    ASSERT_TRUE(ret);
 
-   etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
+   etRunner::get().generateKeyEvent(key_name, 0.3);
+   ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
    ASSERT_TRUE(ret);
 
-   eina_stringshare_del(etRunner::get().ev.key.name);
-   etRunner::get().ev.key.name = NULL;
-
    ret = ecore_wl2_window_keygrab_unset(NULL, "XF86Menu", 0, 0);
    ASSERT_TRUE(ret);
 }
@@ -39,13 +47,10 @@ TEST_F(etTestInput, keygrab_nowin_orexcl)
    ret = ecore_wl2_window_keygrab_set(NULL, "XF86Menu", 0, 0, 0, ECORE_WL2_WINDOW_KEYGRAB_OVERRIDE_EXCLUSIVE);
    ASSERT_TRUE(ret);
 
-   etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
+   etRunner::get().generateKeyEvent(key_name, 0.3);
+   ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
    ASSERT_TRUE(ret);
 
-   eina_stringshare_del(etRunner::get().ev.key.name);
-   etRunner::get().ev.key.name = NULL;
-
    ret = ecore_wl2_window_keygrab_unset(NULL, "XF86Menu", 0, 0);
    ASSERT_TRUE(ret);
 }
@@ -56,13 +61,10 @@ TEST_F(etTestInput, keygrab_nowin_excl)
    ret = ecore_wl2_window_keygrab_set(NULL, "XF86Menu", 0, 0, 0, ECORE_WL2_WINDOW_KEYGRAB_EXCLUSIVE);
    ASSERT_TRUE(ret);
 
-   etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
+   etRunner::get().generateKeyEvent(key_name, 0.3);
+   ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
    ASSERT_TRUE(ret);
 
-   eina_stringshare_del(etRunner::get().ev.key.name);
-   etRunner::get().ev.key.name = NULL;
-
    ret = ecore_wl2_window_keygrab_unset(NULL, "XF86Menu", 0, 0);
    ASSERT_TRUE(ret);
 }
@@ -71,26 +73,29 @@ TEST_F(etTestInput, keygrab_win_shared)
 {
    Eina_Bool ret = EINA_FALSE;
 
-   tw_shared = initNormalWin("TCWin_SharedGrab", EINA_TRUE, EINA_FALSE);
+   tw_shared = initNormalWin("TCWin_SharedGrab", EINA_FALSE);
    ASSERT_TRUE(tw_shared != NULL) << "failed to initiation window";
 
+   showTCWin(tw_shared);
+   etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_VIS_ON);
+
    ret = elm_win_keygrab_set(tw_shared->elm_win, "XF86Menu", 0, 0, 0, ELM_WIN_KEYGRAB_SHARED);
    ASSERT_TRUE(ret);
    ret = evas_object_key_grab(tw_shared->elm_win, "XF86Menu", 0, 0, EINA_FALSE);
    ASSERT_TRUE(ret);
 
-   etRunner::get().ev.win = tw_shared->elm_win;
-   etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
+   etRunner::get().ev.elm_win = tw_shared->elm_win;
+   etRunner::get().ev.native_win = tw_shared->native_win;
    ret = etRunner::get().setWinStack(tw_shared, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(ret);
 
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+   etRunner::get().generateKeyEvent(key_name, 0.3);
+   ret = etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
    ASSERT_TRUE(ret);
 
-   eina_stringshare_del(etRunner::get().ev.key.name);
-   etRunner::get().ev.key.name = NULL;
-   etRunner::get().ev.win = NULL;
+   etRunner::get().ev.elm_win = NULL;
+   etRunner::get().ev.native_win = 0;
 
    evas_object_key_ungrab(tw_shared->elm_win, "XF86Menu", 0, 0);
    ret = elm_win_keygrab_unset(tw_shared->elm_win, "XF86Menu", 0, 0);
@@ -101,26 +106,29 @@ TEST_F(etTestInput, keygrab_win_orexcl)
 {
    Eina_Bool ret = EINA_FALSE;
 
-   tw_orexcl = initNormalWin("TCWin_OrexclGrab", EINA_TRUE, EINA_FALSE);
+   tw_orexcl = initNormalWin("TCWin_OrexclGrab", EINA_FALSE);
    ASSERT_TRUE(tw_orexcl != NULL) << "failed to initiation window";
 
+   showTCWin(tw_orexcl);
+   etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_VIS_ON);
+
    ret = elm_win_keygrab_set(tw_orexcl->elm_win, "XF86Menu", 0, 0, 0, ELM_WIN_KEYGRAB_OVERRIDE_EXCLUSIVE);
    ASSERT_TRUE(ret);
    ret = evas_object_key_grab(tw_orexcl->elm_win, "XF86Menu", 0, 0, EINA_TRUE);
    ASSERT_TRUE(ret);
 
-   etRunner::get().ev.win = tw_orexcl->elm_win;
-   etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
+   etRunner::get().ev.elm_win = tw_orexcl->elm_win;
+   etRunner::get().ev.native_win = tw_orexcl->native_win;
    ret = etRunner::get().setWinStack(tw_orexcl, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(ret);
 
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+   etRunner::get().generateKeyEvent(key_name, 0.3);
+   ret = etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
    ASSERT_TRUE(ret);
 
-   eina_stringshare_del(etRunner::get().ev.key.name);
-   etRunner::get().ev.key.name = NULL;
-   etRunner::get().ev.win = NULL;
+   etRunner::get().ev.elm_win = NULL;
+   etRunner::get().ev.native_win = 0;
 
    evas_object_key_ungrab(tw_orexcl->elm_win, "XF86Menu", 0, 0);
    ret = elm_win_keygrab_unset(tw_orexcl->elm_win, "XF86Menu", 0, 0);
@@ -131,26 +139,29 @@ TEST_F(etTestInput, keygrab_win_excl)
 {
    Eina_Bool ret = EINA_FALSE;
 
-   tw_excl = initNormalWin("TCWin_ExclGrab", EINA_TRUE, EINA_FALSE);
+   tw_excl = initNormalWin("TCWin_ExclGrab", EINA_FALSE);
    ASSERT_TRUE(tw_excl != NULL) << "failed to initiation window";
 
+   showTCWin(tw_excl);
+   etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_VIS_ON);
+
    ret = elm_win_keygrab_set(tw_excl->elm_win, "XF86Menu", 0, 0, 0, ELM_WIN_KEYGRAB_EXCLUSIVE);
    ASSERT_TRUE(ret);
    ret = evas_object_key_grab(tw_excl->elm_win, "XF86Menu", 0, 0, EINA_TRUE);
    ASSERT_TRUE(ret);
 
-   etRunner::get().ev.win = tw_excl->elm_win;
-   etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
+   etRunner::get().ev.elm_win = tw_excl->elm_win;
+   etRunner::get().ev.native_win = tw_excl->native_win;
    ret = etRunner::get().setWinStack(tw_excl, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(ret);
 
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+   etRunner::get().generateKeyEvent(key_name, 0.3);
+   ret = etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
    ASSERT_TRUE(ret);
 
-   eina_stringshare_del(etRunner::get().ev.key.name);
-   etRunner::get().ev.key.name = NULL;
-   etRunner::get().ev.win = NULL;
+   etRunner::get().ev.elm_win = NULL;
+   etRunner::get().ev.native_win = 0;
 
    evas_object_key_ungrab(tw_excl->elm_win, "XF86Menu", 0, 0);
    ret = elm_win_keygrab_unset(tw_excl->elm_win, "XF86Menu", 0, 0);
@@ -161,9 +172,12 @@ TEST_F(etTestInput, keygrab_win_topposition)
 {
    Eina_Bool ret = EINA_FALSE;
 
-   tw_topposition = initNormalWin("TCWin_ToppositionGrab", EINA_TRUE, EINA_TRUE);
+   tw_topposition = initNormalWin("TCWin_ToppositionGrab", EINA_TRUE);
    ASSERT_TRUE(tw_topposition != NULL) << "failed to initiation window";
 
+   showTCWin(tw_topposition);
+   etRunner::get().waitEvent(tw_topposition, E_TC_EVENT_TYPE_VIS_ON);
+
    ecore_evas_focus_skip_set(ecore_evas_ecore_evas_get(evas_object_evas_get(tw_topposition->elm_win)), EINA_TRUE);
 
    ret = elm_win_keygrab_set(tw_topposition->elm_win, "XF86Menu", 0, 0, 0, ELM_WIN_KEYGRAB_TOPMOST);
@@ -171,15 +185,15 @@ TEST_F(etTestInput, keygrab_win_topposition)
    ret = evas_object_key_grab(tw_topposition->elm_win, "XF86Menu", 0, 0, EINA_FALSE);
    ASSERT_TRUE(ret);
 
-   etRunner::get().ev.win = tw_topposition->elm_win;
-   etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
+   etRunner::get().ev.elm_win = tw_topposition->elm_win;
+   etRunner::get().ev.native_win = tw_topposition->native_win;
 
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+   etRunner::get().generateKeyEvent(key_name, 0.3);
+   ret = etRunner::get().waitEvent(tw_topposition, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
    ASSERT_TRUE(ret);
 
-   eina_stringshare_del(etRunner::get().ev.key.name);
-   etRunner::get().ev.key.name = NULL;
-   etRunner::get().ev.win = NULL;
+   etRunner::get().ev.elm_win = NULL;
+   etRunner::get().ev.native_win = 0;
 
    evas_object_key_ungrab(tw_topposition->elm_win, "XF86Menu", 0, 0);
    ret = elm_win_keygrab_unset(tw_topposition->elm_win, "XF86Menu", 0, 0);
@@ -190,18 +204,30 @@ TEST_F(etTestInput, keygrab_win)
 {
    Eina_Bool ret = EINA_FALSE;
 
-   tw_shared = initNormalWin("TCWin_SharedGrab", EINA_TRUE, EINA_FALSE);
+   tw_shared = initNormalWin("TCWin_SharedGrab", EINA_FALSE);
    ASSERT_TRUE(tw_shared != NULL) << "failed to initiation window";
 
-   tw_orexcl = initNormalWin("TCWin_OrexclGrab", EINA_TRUE, EINA_FALSE);
+   showTCWin(tw_shared);
+   etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_VIS_ON);
+
+   tw_orexcl = initNormalWin("TCWin_OrexclGrab", EINA_FALSE);
    ASSERT_TRUE(tw_orexcl != NULL) << "failed to initiation window";
 
-   tw_excl = initNormalWin("TCWin_ExclGrab", EINA_TRUE, EINA_FALSE);
+   showTCWin(tw_orexcl);
+   etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_VIS_ON);
+
+   tw_excl = initNormalWin("TCWin_ExclGrab", EINA_FALSE);
    ASSERT_TRUE(tw_excl != NULL) << "failed to initiation window";
 
-   tw_topposition = initNormalWin("TCWin_ToppositionGrab", EINA_TRUE, EINA_TRUE);
+   showTCWin(tw_excl);
+   etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_VIS_ON);
+
+   tw_topposition = initNormalWin("TCWin_ToppositionGrab", EINA_TRUE);
    ASSERT_TRUE(tw_topposition != NULL) << "failed to initiation window";
 
+   showTCWin(tw_topposition);
+   etRunner::get().waitEvent(tw_topposition, E_TC_EVENT_TYPE_VIS_ON);
+
    ecore_evas_focus_skip_set(ecore_evas_ecore_evas_get(evas_object_evas_get(tw_topposition->elm_win)), EINA_TRUE);
 
    ret = elm_win_keygrab_set(tw_excl->elm_win, "XF86Menu", 0, 0, 0, ELM_WIN_KEYGRAB_EXCLUSIVE);
@@ -225,82 +251,75 @@ TEST_F(etTestInput, keygrab_win)
    ASSERT_TRUE(ret);
 
    ret = etRunner::get().setWinStack(tw_excl, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(ret);
 
    ret = etRunner::get().setWinStack(tw_orexcl, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(ret);
 
    ret = etRunner::get().setWinStack(tw_shared, NULL, EINA_FALSE);
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_FOCUS_CHANGED);
+   etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_FOCUS_CHANGED);
    ASSERT_TRUE(ret);
 
    // test exclusive grab
-   etRunner::get().ev.win = tw_excl->elm_win;
-   etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
+   etRunner::get().ev.elm_win = tw_excl->elm_win;
+   etRunner::get().ev.native_win = tw_excl->native_win;
 
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+   etRunner::get().generateKeyEvent(key_name, 0.3);
+   ret = etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
    ASSERT_TRUE(ret);
 
-   eina_stringshare_del(etRunner::get().ev.key.name);
-
    evas_object_key_ungrab(tw_excl->elm_win, "XF86Menu", 0, 0);
    ret = elm_win_keygrab_unset(tw_excl->elm_win, "XF86Menu", 0, 0);
    ASSERT_TRUE(ret);
 
    // test override exclusive grab
-   etRunner::get().ev.win = tw_orexcl->elm_win;
-   etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
+   etRunner::get().ev.elm_win = tw_orexcl->elm_win;
+   etRunner::get().ev.native_win = tw_orexcl->native_win;
 
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+   etRunner::get().generateKeyEvent(key_name, 0.3);
+   ret = etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
    ASSERT_TRUE(ret);
 
-   eina_stringshare_del(etRunner::get().ev.key.name);
-
    evas_object_key_ungrab(tw_orexcl->elm_win, "XF86Menu", 0, 0);
    ret = elm_win_keygrab_unset(tw_orexcl->elm_win, "XF86Menu", 0, 0);
    ASSERT_TRUE(ret);
 
    // test top position grab
-   etRunner::get().ev.win = tw_topposition->elm_win;
-   etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
+   etRunner::get().ev.elm_win = tw_topposition->elm_win;
+   etRunner::get().ev.native_win = tw_topposition->native_win;
 
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+   etRunner::get().generateKeyEvent(key_name, 0.3);
+   ret = etRunner::get().waitEvent(tw_topposition, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
    ASSERT_TRUE(ret);
 
-   eina_stringshare_del(etRunner::get().ev.key.name);
-
    evas_object_key_ungrab(tw_topposition->elm_win, "XF86Menu", 0, 0);
    ret = elm_win_keygrab_unset(tw_topposition->elm_win, "XF86Menu", 0, 0);
    ASSERT_TRUE(ret);
 
    // test shared grab
-   etRunner::get().ev.win = tw_shared->elm_win;
-   etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
+   etRunner::get().ev.elm_win = tw_shared->elm_win;
+   etRunner::get().ev.native_win = tw_shared->native_win;
 
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+   etRunner::get().generateKeyEvent(key_name, 0.3);
+   ret = etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
    ASSERT_TRUE(ret);
 
-   eina_stringshare_del(etRunner::get().ev.key.name);
-
    evas_object_key_ungrab(tw_shared->elm_win, "XF86Menu", 0, 0);
    ret = elm_win_keygrab_unset(tw_shared->elm_win, "XF86Menu", 0, 0);
    ASSERT_TRUE(ret);
    
    etRunner::get().ev.key.name = NULL;
-   etRunner::get().ev.win = NULL;
+   etRunner::get().ev.elm_win = NULL;
 }
 
 TEST_F(etTestInput, gesture_tap22)
 {
    int ret = EFL_UTIL_ERROR_NONE;
-   efl_util_gesture_h gesture_h;
+   efl_util_gesture_h gesture_h = etRunner::get().getGestureHandler();
    efl_util_gesture_data tap_d;
 
-   gesture_h = efl_util_gesture_initialize();
-   ASSERT_TRUE(gesture_h != NULL) << "failed to initiation gesture system";
-
    tap_d = efl_util_gesture_tap_new(gesture_h, 2, 2);
    ASSERT_TRUE(tap_d != NULL) << "failed to generate tap grab data";
 
@@ -311,7 +330,8 @@ TEST_F(etTestInput, gesture_tap22)
    etRunner::get().ev.gesture.tap.fingers = 2;
    etRunner::get().ev.gesture.tap.repeats = 2;
 
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_GESTURE_TAP);
+   etRunner::get().generateTapGesture();
+   ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_TAP);
    ASSERT_TRUE(ret);
 
    etRunner::get().ev.gesture.tap.fingers = 0;
@@ -320,21 +340,14 @@ TEST_F(etTestInput, gesture_tap22)
    ret = efl_util_gesture_ungrab(gesture_h, tap_d);
    ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to ungrab tap gesture: (ret: "
      << EFL_UTIL_RETURN_TO_STRING(ret) << ")";
-
-   efl_util_gesture_tap_free(gesture_h, tap_d);
-   ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to free tap grab data: (ret: "
-     << EFL_UTIL_RETURN_TO_STRING(ret) << ")";
 }
 
 TEST_F(etTestInput, gesture_tap23)
 {
    int ret = EFL_UTIL_ERROR_NONE;
-   efl_util_gesture_h gesture_h;
+   efl_util_gesture_h gesture_h = etRunner::get().getGestureHandler();
    efl_util_gesture_data tap_d;
 
-   gesture_h = efl_util_gesture_initialize();
-   ASSERT_TRUE(gesture_h != NULL) << "failed to initiation gesture system";
-
    tap_d = efl_util_gesture_tap_new(gesture_h, 2, 3);
    ASSERT_TRUE(tap_d != NULL) << "failed to generate tap grab data";
 
@@ -345,12 +358,12 @@ TEST_F(etTestInput, gesture_tap23)
    etRunner::get().ev.gesture.tap.fingers = 2;
    etRunner::get().ev.gesture.tap.repeats = 3;
 
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_GESTURE_TAP);
+   etRunner::get().generateTapGesture();
+   ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_TAP);
    ASSERT_TRUE(ret);
 
    etRunner::get().ev.gesture.tap.fingers = 0;
    etRunner::get().ev.gesture.tap.repeats = 0;
-
    ret = efl_util_gesture_ungrab(gesture_h, tap_d);
    ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to ungrab tap gesture: (ret: "
      << EFL_UTIL_RETURN_TO_STRING(ret) << ")";
@@ -364,12 +377,9 @@ static void
 _test_gesture_edge_swipe(int fingers, efl_util_gesture_edge_e edge)
 {
    int ret = EFL_UTIL_ERROR_NONE;
-   efl_util_gesture_h gesture_h;
+   efl_util_gesture_h gesture_h = etRunner::get().getGestureHandler();
    efl_util_gesture_data edge_swipe_d;
 
-   gesture_h = efl_util_gesture_initialize();
-   ASSERT_TRUE(gesture_h != NULL) << "failed to initialize gesture system";
-
    edge_swipe_d = efl_util_gesture_edge_swipe_new(gesture_h, fingers, edge);
    ASSERT_TRUE(edge_swipe_d != NULL) << "failed to generate edge swipe grab data";
 
@@ -380,7 +390,8 @@ _test_gesture_edge_swipe(int fingers, efl_util_gesture_edge_e edge)
    etRunner::get().ev.gesture.edge.fingers = fingers;
    etRunner::get().ev.gesture.edge.edge = edge;
 
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE);
+   etRunner::get().generateEdgeSwipeGesture();
+   ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE);
    ASSERT_TRUE(ret);
 
    etRunner::get().ev.gesture.edge.fingers = 0;
@@ -393,10 +404,6 @@ _test_gesture_edge_swipe(int fingers, efl_util_gesture_edge_e edge)
    ret = efl_util_gesture_edge_swipe_free(gesture_h, edge_swipe_d);
    ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to free tap grab data: (ret: "
      << EFL_UTIL_RETURN_TO_STRING(ret) << ")";
-
-   ret = efl_util_gesture_deinitialize(gesture_h);
-   ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to deinitialize gesture system: (ret: "
-     << EFL_UTIL_RETURN_TO_STRING(ret) << ")";
 }
 
 TEST_F(etTestInput, gesture_edge_swipe11)
@@ -443,12 +450,9 @@ static void
 _test_gesture_edge_drag(int fingers, efl_util_gesture_edge_e edge)
 {
    int ret = EFL_UTIL_ERROR_NONE;
-   efl_util_gesture_h gesture_h;
+   efl_util_gesture_h gesture_h = etRunner::get().getGestureHandler();
    efl_util_gesture_data edge_drag_d;
 
-   gesture_h = efl_util_gesture_initialize();
-   ASSERT_TRUE(gesture_h != NULL) << "failed to initialize gesture system";
-
    edge_drag_d = efl_util_gesture_edge_drag_new(gesture_h, fingers, edge);
    ASSERT_TRUE(edge_drag_d != NULL) << "failed to generate edge drag grab data";
 
@@ -459,7 +463,8 @@ _test_gesture_edge_drag(int fingers, efl_util_gesture_edge_e edge)
    etRunner::get().ev.gesture.edge.fingers = fingers;
    etRunner::get().ev.gesture.edge.edge = edge;
 
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG);
+   etRunner::get().generateEdgeDragGesture();
+   ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG);
    ASSERT_TRUE(ret);
 
    etRunner::get().ev.gesture.edge.fingers = 0;
@@ -472,10 +477,6 @@ _test_gesture_edge_drag(int fingers, efl_util_gesture_edge_e edge)
    ret = efl_util_gesture_edge_drag_free(gesture_h, edge_drag_d);
    ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to free tap grab data: (ret: "
      << EFL_UTIL_RETURN_TO_STRING(ret) << ")";
-
-   ret = efl_util_gesture_deinitialize(gesture_h);
-   ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to deinitialize gesture system: (ret: "
-     << EFL_UTIL_RETURN_TO_STRING(ret) << ")";
 }
 
 TEST_F(etTestInput, gesture_edge_drag11)
@@ -516,4 +517,4 @@ TEST_F(etTestInput, gesture_edge_drag23)
 TEST_F(etTestInput, gesture_edge_drag24)
 {
    _test_gesture_edge_drag(2, EFL_UTIL_GESTURE_EDGE_LEFT);
-}
\ No newline at end of file
+}
index 860af5c..9e31602 100644 (file)
@@ -24,7 +24,7 @@ etTestSplash::initTC(char * path, int type)
 {
    Eina_Bool ret = EINA_FALSE;
 
-   tw = initNormalWin("TCWin_Splash", EINA_FALSE, EINA_FALSE);
+   tw = initNormalWin("TCWin_Splash", EINA_FALSE);
    ASSERT_TRUE(tw != NULL) << "failed to initiation window";
 
    ret = etRunner::get().setSplashLaunch(path, type);
@@ -38,6 +38,7 @@ TEST_F(etTestSplash, splash_edc)
    Eina_List *list = NULL, *l = NULL;
 
    initTC((char*)path_edc, SPLASH_TYPE_EDC);
+   etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON);
 
    // find Launchscreen from toplv windows
    list = etRunner::get().getWinInfoList();
@@ -61,6 +62,7 @@ TEST_F(etTestSplash, splash_img)
    Eina_List *list = NULL, *l = NULL;
 
    initTC((char*)path_img, SPLASH_TYPE_IMG);
+   etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON);
 
    // find Launchscreen from toplv windows
    list = etRunner::get().getWinInfoList();
@@ -85,9 +87,8 @@ TEST_F(etTestSplash, splash_disappear_after_real)
    initTC((char*)path_img, SPLASH_TYPE_IMG);
    etRunner::get().setSplashOwner();
 
-   tw->updateGeometry();
-   tw->show();
-   etRunner::get().waitEvent(E_TC_EVENT_TYPE_VIS_ON);
+   showTCWin(tw);
+   etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON);
 
    // Expected focus res:
    list = etRunner::get().getWinInfoList();
@@ -112,11 +113,8 @@ TEST_F(etTestSplash, splash_evas_callback_after_real)
    initTC((char*)path_img, SPLASH_TYPE_IMG);
    etRunner::get().setSplashOwner();
 
-   tw->updateGeometry();
-   tw->show();
-
-   etRunner::get().ev.win = tw->elm_win;
-   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_EFFECT_EVAS_CB);
+   showTCWin(tw);
+   ret = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT_EVAS_CB);
    ASSERT_TRUE(ret);
 
    // Expected focus res:
index 4d9602c..fd7b62e 100644 (file)
@@ -11,24 +11,31 @@ class etTestEffect : public ::etTCBase
     etWin *tw = NULL;
     etWin *tw_green = NULL;
 
+    void initTC();
 };
 
+void
+etTestEffect::initTC()
+{
+   tw = initNormalWin("TCWin_Effect_Show1", EINA_FALSE);
+   ASSERT_TRUE(tw != NULL) << "failed to initiation window";
+
+   tw_green = initNormalWin("TCWin_Effect_GREEN", EINA_FALSE);
+   ASSERT_TRUE(tw_green != NULL) << "failed to initiation window";
+}
+
 TEST_F(etTestEffect, effect_show)
 {
    Eina_Bool res = EINA_FALSE;
-   tw = initNormalWin("TCWin_Effect_Show1", EINA_FALSE, EINA_FALSE);
-   ASSERT_TRUE(tw != NULL) << "failed to initiation window";
 
-   res = registerTCWin(tw);
-   ASSERT_TRUE(res);
+   initTC();
 
    res = etRunner::get().setWinEffect(tw);
    ASSERT_TRUE(res);
 
-   tw->updateGeometry();
-   tw->show();
+   showTCWin(tw);
 
-   res = etRunner::get().waitEvent(E_TC_EVENT_TYPE_EFFECT);
+   res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT);
    ASSERT_TRUE(res);
 
    return;
@@ -37,19 +44,15 @@ TEST_F(etTestEffect, effect_show)
 TEST_F(etTestEffect, effect_show_evas_callback)
 {
    Eina_Bool res = EINA_FALSE;
-   tw = initNormalWin("TCWin_Effect_Show2", EINA_FALSE, EINA_FALSE);
-   ASSERT_TRUE(tw != NULL) << "failed to initiation window";
 
-   res = registerTCWin(tw);
-   ASSERT_TRUE(res);
+   initTC();
 
    res = etRunner::get().setWinEffect(tw);
    ASSERT_TRUE(res);
 
-   tw->updateGeometry();
-   tw->show();
+   showTCWin(tw);
 
-   res = etRunner::get().waitEvent(E_TC_EVENT_TYPE_EFFECT_EVAS_CB);
+   res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT_EVAS_CB);
    ASSERT_TRUE(res);
 
    return;
@@ -58,23 +61,16 @@ TEST_F(etTestEffect, effect_show_evas_callback)
 TEST_F(etTestEffect, effect_hide_bylower)
 {
    Eina_Bool res = EINA_FALSE;
-   tw = initNormalWin("TCWin_Effect_Hide_Lower", EINA_FALSE, EINA_FALSE);
-   ASSERT_TRUE(tw != NULL) << "failed to initiation window";
 
-   res = registerTCWin(tw);
-   ASSERT_TRUE(res);
+   initTC();
 
-   tw->updateGeometry();
-   tw->show();
-   etRunner::get().work(1.1);
+   showTCWin(tw);
+   etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON);
 
    res = etRunner::get().setWinEffect(tw);
    ASSERT_TRUE(res);
-   etRunner::get().work(1.1);
-
    elm_win_lower(tw->elm_win);
-
-   res = etRunner::get().waitEvent(E_TC_EVENT_TYPE_EFFECT);
+   res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT);
    ASSERT_TRUE(res);
 
    return;
@@ -83,23 +79,16 @@ TEST_F(etTestEffect, effect_hide_bylower)
 TEST_F(etTestEffect, effect_hide_byunmap)
 {
    Eina_Bool res = EINA_FALSE;
-   tw = initNormalWin("TCWin_Effect_Hide_Unmap", EINA_FALSE, EINA_FALSE);
-   ASSERT_TRUE(tw != NULL) << "failed to initiation window";
 
-   res = registerTCWin(tw);
-   ASSERT_TRUE(res);
+   initTC();
 
-   tw->updateGeometry();
-   tw->show();
-   etRunner::get().work(1.1);
+   showTCWin(tw);
+   etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON);
 
    res = etRunner::get().setWinEffect(tw);
    ASSERT_TRUE(res);
-   etRunner::get().work(1.1);
-
    tw->hide();
-
-   res = etRunner::get().waitEvent(E_TC_EVENT_TYPE_EFFECT);
+   res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT);
    ASSERT_TRUE(res);
 
    return;
@@ -108,26 +97,17 @@ TEST_F(etTestEffect, effect_hide_byunmap)
 TEST_F(etTestEffect, effect_bg)
 {
    Eina_Bool res = EINA_FALSE;
-   tw = initNormalWin("TCWin_Effect_Effect_BG", EINA_FALSE, EINA_FALSE);
-   ASSERT_TRUE(tw != NULL) << "failed to initiation window";
-
-   tw_green = initNormalWin("TCWin_Effect_GREEN", EINA_FALSE, EINA_FALSE);
-   ASSERT_TRUE(tw_green != NULL) << "failed to initiation window";
 
-   res = registerTCWin(tw);
-   ASSERT_TRUE(res);
+   initTC();
 
-   tw->updateGeometry();
-   tw->show();
-   etRunner::get().work(1.1);
+   showTCWin(tw);
+   etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON);
 
    res = etRunner::get().setWinEffect(tw);
    ASSERT_TRUE(res);
-
-   tw_green->updateGeometry();
-   tw_green->show();
-
-   res = etRunner::get().waitEvent(E_TC_EVENT_TYPE_EFFECT);
+   //show upper window
+   showTCWin(tw_green);
+   res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT);
    ASSERT_TRUE(res);
 
    return;