#include <Ecore_Evas.h>
#include <Evas.h>
#include <Ecore.h>
+#include <vconf.h>
#define WIDTH 480
#define HEIGHT 800
static void STOP_LOOP();
static void WAIT_FOR_CALLBACK();
+static void input_panel_state_changed_cb(keynode_t *key, void* data)
+{
+ if (!key) return;
+
+ int sip_status = vconf_keynode_get_int (key);
+
+ switch (sip_status) {
+ case VCONFKEY_ISF_INPUT_PANEL_STATE_HIDE:
+ printf("state : hide\n");
+ break;
+ case VCONFKEY_ISF_INPUT_PANEL_STATE_WILL_HIDE:
+ printf("state : will_hide\n");
+ break;
+ case VCONFKEY_ISF_INPUT_PANEL_STATE_SHOW:
+ printf("state : show\n");
+ break;
+ case VCONFKEY_ISF_INPUT_PANEL_STATE_WILL_SHOW:
+ printf("state : will_show\n");
+ break;
+ default :
+ printf("sip_status error!\n");
+ break;
+ }
+
+ callback_called = true;
+
+ if (timer_exit) {
+ ecore_timer_del(timer_exit);
+ timer_exit = NULL;
+ }
+
+ STOP_LOOP();
+}
+
class EcoreIMFContextTest : public testing::Test {
public:
virtual void SetUp() {
EXPECT_EQ(input_panel_state, ECORE_IMF_INPUT_PANEL_STATE_HIDE);
}
+TEST_F(EcoreIMFContextWinFocusTest, utc_ime_disable_show)
+{
+ ecore_imf_context_input_panel_enabled_set(ctx, EINA_FALSE);
+ ecore_imf_context_focus_in(ctx);
+ ecore_imf_context_input_panel_show(ctx);
+
+ ecore_imf_context_input_panel_event_callback_add(ctx, ECORE_IMF_INPUT_PANEL_STATE_EVENT, _input_panel_state_cb, NULL);
+
+ WAIT_FOR_CALLBACK();
+
+ Ecore_IMF_Input_Panel_State input_panel_state = ecore_imf_context_input_panel_state_get(ctx);
+
+ EXPECT_EQ(callback_called, true);
+ EXPECT_EQ(input_panel_state, ECORE_IMF_INPUT_PANEL_STATE_SHOW);
+}
+
TEST_F(EcoreIMFContextWinTest, utc_ime_show_in_canvas_no_window_show)
{
callback_called = false;
EXPECT_EQ(input_panel_state, ECORE_IMF_INPUT_PANEL_STATE_SHOW);
}
+TEST_F(EcoreIMFContextWinFocusTest, utc_ime_show_and_context_delete)
+{
+ ecore_imf_context_focus_in(ctx);
+
+ ecore_imf_context_input_panel_event_callback_add(ctx, ECORE_IMF_INPUT_PANEL_STATE_EVENT, _input_panel_state_cb, NULL);
+
+ WAIT_FOR_CALLBACK();
+
+ EXPECT_EQ(callback_called, true);
+ EXPECT_EQ(input_panel_state, ECORE_IMF_INPUT_PANEL_STATE_SHOW);
+
+ callback_called = false;
+ ecore_imf_context_del(ctx);
+ ctx = nullptr;
+
+ vconf_notify_key_changed(VCONFKEY_ISF_INPUT_PANEL_STATE, input_panel_state_changed_cb, NULL);
+
+ WAIT_FOR_CALLBACK();
+
+ int vconf_input_panel_state;
+ int ret = vconf_get_int(VCONFKEY_ISF_INPUT_PANEL_STATE, &vconf_input_panel_state);
+ EXPECT_EQ(ret, 0);
+ EXPECT_EQ(vconf_input_panel_state, VCONFKEY_ISF_INPUT_PANEL_STATE_HIDE);
+
+ vconf_ignore_key_changed(VCONFKEY_ISF_INPUT_PANEL_STATE, input_panel_state_changed_cb);
+}
+
} // namespace