[M120 Migration][MM] Support W3C EME
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / unittest / utc_blink_ewk_context_menu_item_tag_get_func.cpp
1 // Copyright 2014 Samsung Electronics. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "utc_blink_ewk_base.h"
6 #include "utc_blink_ewk_context_menu.h"
7
8 class utc_blink_ewk_context_menu_item_tag_get : public utc_blink_ewk_base {
9 public:
10   utc_blink_ewk_context_menu_item_tag_get()
11   : utc_blink_ewk_base()
12   , result(EINA_FALSE)
13   , is_failed(EINA_FALSE)
14   , select_timer(0)
15   , tag(EWK_CONTEXT_MENU_ITEM_BASE_APPLICATION_TAG)
16   {
17   }
18
19 protected:
20  void LoadFinished(Evas_Object* webview) override {
21    feed_mouse_click(3, 100, 100, GetEwkEvas());
22   }
23
24   bool LoadError(Evas_Object* webview, Ewk_Error* error) override {
25     is_failed = EINA_TRUE;
26     EventLoopStop(utc_blink_ewk_base::Success);
27     return false;
28   }
29
30   void PostSetUp() override {
31     /* Enable mouse events to feed events directly. */
32     ewk_view_mouse_events_enabled_set(GetEwkWebView(), EINA_TRUE);
33
34     Eina_Bool result_set = ewk_view_url_set(GetEwkWebView(), GetResourceUrl("/ewk_context_menu/index.html").c_str());
35     if (!result_set) {
36       FAIL();
37     }
38     evas_object_smart_callback_add(GetEwkWebView(), "contextmenu,customize", contextmenu_customize_callback, this);
39     evas_object_smart_callback_add(GetEwkWebView(), "contextmenu,selected", contextmenu_selected_callback, this);
40   }
41
42   void PreTearDown() override {
43     evas_object_smart_callback_del(GetEwkWebView(), "contextmenu,customize", contextmenu_customize_callback);
44     evas_object_smart_callback_del(GetEwkWebView(), "contextmenu,selected", contextmenu_selected_callback);
45     if (select_timer) {
46       ecore_timer_del(select_timer);
47     }
48   }
49
50   static void contextmenu_customize_callback(void* data, Evas_Object* webview, void* event_info)
51   {
52     utc_message("[contextmenu_customize_callback] :: \n");
53     if (!data || !event_info) {
54       FAIL();
55     }
56     Ewk_Context_Menu* contextmenu = static_cast<Ewk_Context_Menu*>(event_info);
57     Ewk_Context_Menu_Item* item = ewk_context_menu_nth_item_get(contextmenu, 0);
58     while (item) {
59       ewk_context_menu_item_remove(contextmenu, item);
60       item = ewk_context_menu_nth_item_get(contextmenu, 0);
61     }
62
63     ewk_context_menu_item_append_as_action(contextmenu, CUSTOM_CONTEXT_MENU_ITEM_TEST_TAG, "< Item for Test >", EINA_TRUE);
64     ewk_context_menu_item_append_as_action(contextmenu, CUSTOM_CONTEXT_MENU_ITEM_TEST_TAG, "< Item for Test1 >", EINA_TRUE);
65     ewk_context_menu_item_append_as_action(contextmenu, CUSTOM_CONTEXT_MENU_ITEM_TEST_TAG, "< Item for Test2 >", EINA_TRUE);
66
67     utc_blink_ewk_context_menu_item_tag_get *owner = static_cast<utc_blink_ewk_context_menu_item_tag_get*>(data);
68     owner->select_item();
69   }
70
71   static void contextmenu_selected_callback(void* data, Evas_Object* webview, void* event_info)
72   {
73     utc_message("[contextmenu_selected_callback] :: \n");
74     if (!data || !event_info) {
75       FAIL();
76     }
77     Ewk_Context_Menu_Item* item = static_cast<Ewk_Context_Menu_Item*>(event_info);
78     utc_blink_ewk_context_menu_item_tag_get *owner = static_cast<utc_blink_ewk_context_menu_item_tag_get*>(data);
79
80     owner->tag = ewk_context_menu_item_tag_get(item);
81     owner->EventLoopStop(utc_blink_ewk_base::Success);
82   }
83
84   static Eina_Bool select_timer_callback(void* data)
85   {
86     utc_message("[select_timer_callback] :: \n");
87     if (data) {
88       utc_blink_ewk_context_menu_item_tag_get *owner = static_cast<utc_blink_ewk_context_menu_item_tag_get*>(data);
89       feed_mouse_click(1, 250, 400, owner->GetEwkEvas());
90       owner->select_timer = 0;
91     }
92     return ECORE_CALLBACK_CANCEL;
93   }
94
95   void select_item()
96   {
97     select_timer = ecore_timer_add(1, select_timer_callback, this);
98   }
99
100 protected:
101   Eina_Bool result;
102   Eina_Bool is_failed;
103   Ecore_Timer* select_timer;
104   Ewk_Context_Menu_Item_Tag tag;
105 };
106
107
108 /**
109  * @brief Tests whether the getting tag from context menu item is performed properly.
110  */
111 TEST_F(utc_blink_ewk_context_menu_item_tag_get, POS_TEST)
112 {
113   if (!is_failed) {
114     utc_blink_ewk_base::MainLoopResult result_loop = EventLoopStart();
115     if (result_loop != utc_blink_ewk_base::Success) {
116       FAIL();
117     }
118   }
119
120   if (is_failed) {
121     FAIL();
122   }
123   EXPECT_EQ(tag, CUSTOM_CONTEXT_MENU_ITEM_TEST_TAG);
124 }
125
126 /**
127  * @brief Tests whether the function works properly for case Ewk_Context_Menu object is NULL.
128  */
129 TEST_F(utc_blink_ewk_context_menu_item_tag_get, NEG_TEST)
130 {
131   EXPECT_EQ(ewk_context_menu_item_tag_get(NULL), EWK_CONTEXT_MENU_ITEM_TAG_NO_ACTION);
132 }