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_image_url_get : public utc_blink_ewk_base {
10 utc_blink_ewk_context_menu_item_image_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_1.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);
39 image_path = GetResourceUrl("/ewk_context_menu/webkit.png");
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);
49 ecore_timer_del(select_timer);
53 static void contextmenu_customize_callback(void* data, Evas_Object* webview, void* event_info)
55 utc_message("[contextmenu_customize_callback] :: \n");
56 if (!data || !event_info) {
59 Ewk_Context_Menu* contextmenu = static_cast<Ewk_Context_Menu*>(event_info);
61 ewk_context_menu_item_append_as_action(contextmenu, CUSTOM_CONTEXT_MENU_ITEM_TEST_TAG, "< Item for Test >", EINA_TRUE);
62 ewk_context_menu_item_append_as_action(contextmenu, CUSTOM_CONTEXT_MENU_ITEM_TEST_TAG, "< Item for Test1 >", EINA_TRUE);
63 ewk_context_menu_item_append_as_action(contextmenu, CUSTOM_CONTEXT_MENU_ITEM_TEST_TAG, "< Item for Test2 >", EINA_TRUE);
65 utc_blink_ewk_context_menu_item_image_url_get *owner = static_cast<utc_blink_ewk_context_menu_item_image_url_get*>(data);
69 static void contextmenu_selected_callback(void* data, Evas_Object* webview, void* event_info)
71 utc_message("[contextmenu_selected_callback] :: \n");
72 if (!data || !event_info) {
75 Ewk_Context_Menu_Item* item = static_cast<Ewk_Context_Menu_Item*>(event_info);
76 utc_blink_ewk_context_menu_item_image_url_get *owner = static_cast<utc_blink_ewk_context_menu_item_image_url_get*>(data);
78 const char* image_url = ewk_context_menu_item_image_url_get(item);
81 owner->is_failed = EINA_TRUE;
84 owner->url = strdup(image_url);
86 owner->EventLoopStop(utc_blink_ewk_base::Success);
89 static Eina_Bool select_timer_callback(void* data)
91 utc_message("[select_timer_callback] :: \n");
93 utc_blink_ewk_context_menu_item_image_url_get *owner = static_cast<utc_blink_ewk_context_menu_item_image_url_get*>(data);
94 feed_mouse_click(1, 250, 500, owner->GetEwkEvas());
95 owner->select_timer = 0;
97 return ECORE_CALLBACK_CANCEL;
102 select_timer = ecore_timer_add(1, select_timer_callback, this);
107 Ecore_Timer* select_timer;
108 std::string image_path;
113 * @brief Tests whether the getting image url from context menu item is performed properly.
115 TEST_F(utc_blink_ewk_context_menu_item_image_url_get, POS_TEST)
118 utc_blink_ewk_base::MainLoopResult result_loop = EventLoopStart();
119 if (result_loop != utc_blink_ewk_base::Success) {
129 utc_check_str_eq(url, image_path.c_str());
133 * @brief Tests whether the function works properly for case Ewk_Context_Menu object is NULL.
135 TEST_F(utc_blink_ewk_context_menu_item_image_url_get, NEG_TEST)
138 if (ewk_context_menu_item_image_url_get(NULL)) {