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_link_url_get : public utc_blink_ewk_base {
10 utc_blink_ewk_context_menu_item_link_url_get()
11 : utc_blink_ewk_base()
12 , is_failed(EINA_FALSE)
19 void LoadFinished(Evas_Object* webview) override {
20 feed_mouse_click(3, 100, 100, GetEwkEvas());
23 bool LoadError(Evas_Object* webview, Ewk_Error* error) override {
24 is_failed = EINA_TRUE;
25 EventLoopStop(utc_blink_ewk_base::Success);
29 void PostSetUp() override {
30 /* Enable mouse events to feed events directly. */
31 ewk_view_mouse_events_enabled_set(GetEwkWebView(), EINA_TRUE);
33 Eina_Bool result_set = ewk_view_url_set(GetEwkWebView(), GetResourceUrl("/ewk_context_menu/index.html").c_str());
37 evas_object_smart_callback_add(GetEwkWebView(), "contextmenu,customize", contextmenu_customize_callback, this);
38 evas_object_smart_callback_add(GetEwkWebView(), "contextmenu,selected", contextmenu_selected_callback, this);
41 void PreTearDown() override {
42 evas_object_smart_callback_del(GetEwkWebView(), "contextmenu,customize", contextmenu_customize_callback);
43 evas_object_smart_callback_del(GetEwkWebView(), "contextmenu,selected", contextmenu_selected_callback);
48 ecore_timer_del(select_timer);
52 static void contextmenu_customize_callback(void* data, Evas_Object* webview, void* event_info)
54 utc_message("[contextmenu_customize_callback] :: \n");
55 if (!data || !event_info) {
58 Ewk_Context_Menu* contextmenu = static_cast<Ewk_Context_Menu*>(event_info);
59 ewk_context_menu_item_append_as_action(contextmenu, CUSTOM_CONTEXT_MENU_ITEM_TEST_TAG, "< Item for Test >", EINA_TRUE);
60 ewk_context_menu_item_append_as_action(contextmenu, CUSTOM_CONTEXT_MENU_ITEM_TEST_TAG, "< Item for Test >", EINA_TRUE);
61 ewk_context_menu_item_append_as_action(contextmenu, CUSTOM_CONTEXT_MENU_ITEM_TEST_TAG, "< Item for Test >", EINA_TRUE);
63 utc_blink_ewk_context_menu_item_link_url_get *owner = static_cast<utc_blink_ewk_context_menu_item_link_url_get*>(data);
67 static void contextmenu_selected_callback(void* data, Evas_Object* webview, void* event_info)
69 utc_message("[contextmenu_selected_callback] :: \n");
70 if (!data || !event_info) {
73 Ewk_Context_Menu_Item* item = static_cast<Ewk_Context_Menu_Item*>(event_info);
74 utc_blink_ewk_context_menu_item_link_url_get *owner = static_cast<utc_blink_ewk_context_menu_item_link_url_get*>(data);
76 const char* link_url = ewk_context_menu_item_link_url_get(item);
78 owner->is_failed = EINA_TRUE;
81 owner->url = strdup(link_url);
83 owner->EventLoopStop(utc_blink_ewk_base::Success);
86 static Eina_Bool select_timer_callback(void* data)
88 utc_message("[select_timer_callback] :: \n");
90 utc_blink_ewk_context_menu_item_link_url_get *owner = static_cast<utc_blink_ewk_context_menu_item_link_url_get*>(data);
91 feed_mouse_click(1, 250, 500, owner->GetEwkEvas());
92 owner->select_timer = 0;
94 return ECORE_CALLBACK_CANCEL;
99 select_timer = ecore_timer_add(1, select_timer_callback, this);
106 Ecore_Timer* select_timer;
110 * @brief Tests whether the getting link url from context menu item is performed properly.
112 TEST_F(utc_blink_ewk_context_menu_item_link_url_get, POS_TEST)
115 utc_blink_ewk_base::MainLoopResult result_loop = EventLoopStart();
116 if (result_loop != utc_blink_ewk_base::Success) {
127 EXPECT_STREQ(url, "http://www.webkit.org/");
131 * @brief Tests whether the function works properly for case Ewk_Context_Menu object is NULL.
133 TEST_F(utc_blink_ewk_context_menu_item_link_url_get, NEG_TEST)
136 if (ewk_context_menu_item_link_url_get(NULL)) {