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.
5 #include "utc_blink_ewk_base.h"
6 #include "utc_blink_ewk_context_menu.h"
8 class utc_blink_ewk_context_menu_item_tag_get : public utc_blink_ewk_base {
10 utc_blink_ewk_context_menu_item_tag_get()
11 : utc_blink_ewk_base()
13 , is_failed(EINA_FALSE)
15 , tag(EWK_CONTEXT_MENU_ITEM_BASE_APPLICATION_TAG)
20 void LoadFinished(Evas_Object* webview) override {
21 feed_mouse_click(3, 100, 100, GetEwkEvas());
24 bool LoadError(Evas_Object* webview, Ewk_Error* error) override {
25 is_failed = EINA_TRUE;
26 EventLoopStop(utc_blink_ewk_base::Success);
30 void PostSetUp() override {
31 /* Enable mouse events to feed events directly. */
32 ewk_view_mouse_events_enabled_set(GetEwkWebView(), EINA_TRUE);
34 Eina_Bool result_set = ewk_view_url_set(GetEwkWebView(), GetResourceUrl("/ewk_context_menu/index.html").c_str());
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);
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);
46 ecore_timer_del(select_timer);
50 static void contextmenu_customize_callback(void* data, Evas_Object* webview, void* event_info)
52 utc_message("[contextmenu_customize_callback] :: \n");
53 if (!data || !event_info) {
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);
59 ewk_context_menu_item_remove(contextmenu, item);
60 item = ewk_context_menu_nth_item_get(contextmenu, 0);
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);
67 utc_blink_ewk_context_menu_item_tag_get *owner = static_cast<utc_blink_ewk_context_menu_item_tag_get*>(data);
71 static void contextmenu_selected_callback(void* data, Evas_Object* webview, void* event_info)
73 utc_message("[contextmenu_selected_callback] :: \n");
74 if (!data || !event_info) {
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);
80 owner->tag = ewk_context_menu_item_tag_get(item);
81 owner->EventLoopStop(utc_blink_ewk_base::Success);
84 static Eina_Bool select_timer_callback(void* data)
86 utc_message("[select_timer_callback] :: \n");
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;
92 return ECORE_CALLBACK_CANCEL;
97 select_timer = ecore_timer_add(1, select_timer_callback, this);
103 Ecore_Timer* select_timer;
104 Ewk_Context_Menu_Item_Tag tag;
109 * @brief Tests whether the getting tag from context menu item is performed properly.
111 TEST_F(utc_blink_ewk_context_menu_item_tag_get, POS_TEST)
114 utc_blink_ewk_base::MainLoopResult result_loop = EventLoopStart();
115 if (result_loop != utc_blink_ewk_base::Success) {
123 EXPECT_EQ(tag, CUSTOM_CONTEXT_MENU_ITEM_TEST_TAG);
127 * @brief Tests whether the function works properly for case Ewk_Context_Menu object is NULL.
129 TEST_F(utc_blink_ewk_context_menu_item_tag_get, NEG_TEST)
131 EXPECT_EQ(ewk_context_menu_item_tag_get(NULL), EWK_CONTEXT_MENU_ITEM_TAG_NO_ACTION);