From: Juyeon Lee Date: Fri, 19 Oct 2018 11:53:47 +0000 (+0900) Subject: 0011_effect: TC is added X-Git-Tag: submit/tizen/20181030.101450^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=abab0bfa40f97137057cd245dab7c4af2234c00f;p=platform%2Fcore%2Fuifw%2Fe-tizen-testcase.git 0011_effect: TC is added Change-Id: I90c775fd33b54c5df66fdb4315ece2471d110814 --- diff --git a/src/Makefile.am b/src/Makefile.am index 11d93bf..e21ec92 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -19,7 +19,8 @@ testcase/0006_tzsh.cpp \ testcase/0007_rotation.cpp \ testcase/0008_focus.cpp \ testcase/0009_input.cpp \ -testcase/0010_splash.cpp +testcase/0010_splash.cpp \ +testcase/0011_effect.cpp e_test_runner_SOURCES = \ e_test_main.cpp \ @@ -39,7 +40,8 @@ testcase/0006_tzsh.cpp \ testcase/0007_rotation.cpp \ testcase/0008_focus.cpp \ testcase/0009_input.cpp \ -testcase/0010_splash.cpp +testcase/0010_splash.cpp \ +testcase/0011_effect.cpp MAINTAINERCLEANFILES = \ Makefile.in diff --git a/src/e_test_event.cpp b/src/e_test_event.cpp index 8aaa8d7..87729b7 100644 --- a/src/e_test_event.cpp +++ b/src/e_test_event.cpp @@ -25,12 +25,14 @@ static void _cb_method_win_info_get(void *data, const Eldbus_Message *msg, Eldbu static void _cb_method_win_info_list_get(void *data, const Eldbus_Message *msg, Eldbus_Pending *p); 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); /* callbacks - signal */ static void _cb_signal_vis_changed(void *data, const Eldbus_Message *msg); static void _cb_signal_stack_changed(void *data, const Eldbus_Message *msg); static void _cb_signal_win_rot_changed(void *data, const Eldbus_Message *msg); static void _cb_signal_focus_changed(void *data, const Eldbus_Message *msg); +static void _cb_signal_effect_run(void *data, const Eldbus_Message *msg); /* callbacks - ecore */ static Eina_Bool _cb_ecore_key(void *data, int type, void *event); @@ -753,9 +755,9 @@ etRunner::setSplashLaunch(const char *path, int type) wl_array_init(&options2); tizen_launch_splash_launch(tzlaunch_splash, path, type, - 24, 0, 0, - effect_type, NULL, &options2); - wl_array_release(&options2); + 24, 0, 0, + effect_type, NULL, &options2); + wl_array_release(&options2); return EINA_TRUE; } @@ -771,6 +773,35 @@ etRunner::setSplashOwner() return EINA_TRUE; } +Eina_Bool +etRunner::setWindowEffectType(etWin *tw, E_TC_Window_Effect_type type) +{ + Eldbus_Pending *p = NULL; + Eina_Bool accepted = EINA_FALSE; + + this->ev.effect.type = type; + this->ev.win = tw->elm_win; + + p = eldbus_proxy_call(dbus.proxy, + "SetWindowEffect", + _cb_method_window_effect, + &accepted, + -1, + "ui", + tw->native_win, + type); + EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE); + + this->ev.sh = eldbus_proxy_signal_handler_add(dbus.proxy, + "EffectRun", + _cb_signal_effect_run, + this); + EINA_SAFETY_ON_NULL_RETURN_VAL(this->ev.sh, EINA_FALSE); + work(); + + return accepted; +} + Eina_Bool etRunner::freezeEvent() { @@ -868,6 +899,10 @@ etRunner::waitEvent(E_TC_Event_Type ev_type) this->generateKeyEvent(this->ev.key.name, 1.0); break; + case E_TC_EVENT_TYPE_EFFECT: + EINA_SAFETY_ON_NULL_GOTO(this->ev.sh, finish); + break; + 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); @@ -896,6 +931,8 @@ etRunner::waitEvent(E_TC_Event_Type ev_type) } if (sh) eldbus_signal_handler_del(sh); + if (this->ev.sh) eldbus_signal_handler_del(this->ev.sh); + if (eh) ecore_event_handler_del(eh); if (eh2) ecore_event_handler_del(eh2); @@ -1250,6 +1287,33 @@ finish: etRunner::get().finishWork(); } +static void +_cb_method_window_effect(void *data, + const Eldbus_Message *msg, + Eldbus_Pending *p) +{ + const char *name = NULL, *text = NULL; + Eina_Bool res = EINA_FALSE; + Eina_Bool *allowed = (Eina_Bool *)data; + + *allowed = EINA_FALSE; + + res = eldbus_message_error_get(msg, &name, &text); + EINA_SAFETY_ON_TRUE_GOTO(res, finish); + + res = eldbus_message_arguments_get(msg, "b", allowed); + EINA_SAFETY_ON_FALSE_GOTO(res, finish); + EINA_SAFETY_ON_FALSE_GOTO(*allowed, 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, @@ -1360,6 +1424,34 @@ finish: } } +static void +_cb_signal_effect_run(void *data, + const Eldbus_Message *msg) +{ + etRunner *runner = (etRunner *)data; + const char *name = NULL, *text = NULL; + Eina_Bool res = EINA_FALSE; + unsigned int effect_type = 0; + Ecore_Window id; + + res = eldbus_message_error_get(msg, &name, &text); + EINA_SAFETY_ON_TRUE_GOTO(res, finish); + + res = eldbus_message_arguments_get(msg, "ui", &id, &effect_type); + EINA_SAFETY_ON_FALSE_GOTO(res, finish); + + if (effect_type == runner->ev.effect.type) + { + runner->ev.response = runner->ev.request; + elm_exit(); + } +finish: + if ((name) || (text)) + { + ERR("errname:%s errmsg:%s\n", name, text); + } +} + /* callbacks - timer */ static Eina_Bool _cb_work_timeout(void *data) diff --git a/src/e_test_event.h b/src/e_test_event.h index c3c8e57..789b7c1 100644 --- a/src/e_test_event.h +++ b/src/e_test_event.h @@ -65,6 +65,7 @@ public: /* TODO: make it hidden */ E_TC_Event_Type request; E_TC_Event_Type response; Evas_Object *win; + Eldbus_Signal_Handler *sh; struct { Eina_Stringshare *name; @@ -74,6 +75,7 @@ public: /* TODO: make it hidden */ struct { unsigned int state_smcb; + unsigned int type; } effect; } ev; @@ -123,6 +125,7 @@ public: void generateKeyEvent(const char *keyname, double delay); Eina_Bool setSplashLaunch(const char *path, int type); Eina_Bool setSplashOwner(); + Eina_Bool setWindowEffectType(etWin *tw, E_TC_Window_Effect_type type); Eina_Bool freezeEvent(); Eina_Bool thawEvent(); Eina_Bool waitEvent(E_TC_Event_Type ev); diff --git a/src/e_test_util.h b/src/e_test_util.h index e2afeff..b412ff3 100644 --- a/src/e_test_util.h +++ b/src/e_test_util.h @@ -78,6 +78,7 @@ typedef enum _E_TC_Event_Type E_TC_EVENT_TYPE_INPUT_ECORE_KEY, E_TC_EVENT_TYPE_INPUT_EVAS_KEY, E_TC_EVENT_TYPE_EFFECT_EVAS_CB, + E_TC_EVENT_TYPE_EFFECT, E_TC_EVENT_TYPE_MAX } E_TC_Event_Type; @@ -149,6 +150,17 @@ typedef enum _E_TC_EVAS_SMART_CB_STATE E_TC_EVAS_SMART_CB_STATE_LAUNCH_DONE // Server -> Client [PID:xxx] tizen_effect@19.end(wl_surface@41, 4) } E_TC_EFFECT_STATE; +typedef enum _E_TC_Window_Effect_type +{ + E_TC_EFFECT_NONE = 0, + E_TC_EFFECT_SHOW, + E_TC_EFFECT_HIDE, + E_TC_EFFECT_RESTACK_SHOW, + E_TC_EFFECT_RESTACK_HIDE, + E_TC_EFFECT_LAUNCH_DONE, + E_TC_EFFECT_BG, +} E_TC_Window_Effect_type; + typedef struct _Window_Info_List { Eina_List *list; diff --git a/src/testcase/0001_easy.cpp b/src/testcase/0001_easy.cpp index 253dbde..16dcc0f 100644 --- a/src/testcase/0001_easy.cpp +++ b/src/testcase/0001_easy.cpp @@ -45,10 +45,12 @@ _cb_introspect(void *data, (!strstr(arg, "method name=\"HWC\"" )) || (!strstr(arg, "method name=\"GetCurrentZoneRotation\"" )) || (!strstr(arg, "method name=\"ChangeZoneRotation\"" )) || + (!strstr(arg, "method name=\"SetWindowEffect\"" )) || (!strstr(arg, "signal name=\"VisibilityChanged\"" )) || (!strstr(arg, "signal name=\"StackChanged\"" )) || (!strstr(arg, "signal name=\"WinRotationChanged\"" )) || (!strstr(arg, "signal name=\"FocusChanged\"" )) || + (!strstr(arg, "signal name=\"EffectRun\"" )) || (!strstr(arg, "property name=\"Registrant\"" ))) { ERR("missing mehod, signal or property:%s\n", arg); diff --git a/src/testcase/0011_effect.cpp b/src/testcase/0011_effect.cpp new file mode 100644 index 0000000..315336b --- /dev/null +++ b/src/testcase/0011_effect.cpp @@ -0,0 +1,53 @@ +#include "e_test_event.h" +#include "e_test_base.h" + +class etTestEffect : public ::etTCBase +{ + public: + etTestEffect() { }; + ~etTestEffect() { }; + + protected: + etWin *tw = NULL; + +}; + +TEST_F(etTestEffect, effect_show) +{ + Eina_Bool res = EINA_FALSE; + tw = initNormalWin("TCWin_Effect_Show", EINA_FALSE, EINA_FALSE); + ASSERT_TRUE(tw != NULL) << "failed to initiation window"; + + res = etRunner::get().setWindowEffectType(tw, E_TC_EFFECT_SHOW); + ASSERT_TRUE(res); + + tw->updateGeometry(); + tw->show(); + + res = etRunner::get().waitEvent(E_TC_EVENT_TYPE_EFFECT); + ASSERT_TRUE(res); + + return; +} + +TEST_F(etTestEffect, effect_hide) +{ + Eina_Bool res = EINA_FALSE; + tw = initNormalWin("TCWin_Effect_Hide", EINA_FALSE, EINA_FALSE); + ASSERT_TRUE(tw != NULL) << "failed to initiation window"; + + tw->updateGeometry(); + tw->show(); + etRunner::get().work(1.1); + + res = etRunner::get().setWindowEffectType(tw, E_TC_EFFECT_HIDE); + ASSERT_TRUE(res); + etRunner::get().work(1.1); + + tw->hide(); + + res = etRunner::get().waitEvent(E_TC_EVENT_TYPE_EFFECT); + ASSERT_TRUE(res); + + return; +}