[M120 Migration][MM] Support W3C EME
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / unittest / utc_blink_ewk_context_menu_nth_item_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_nth_item_get : public utc_blink_ewk_base {
9 public:
10   utc_blink_ewk_context_menu_nth_item_get()
11   : utc_blink_ewk_base()
12   , is_failed(EINA_FALSE)
13   , item(0)
14   {
15   }
16
17 protected:
18  void LoadFinished(Evas_Object* webview) override {
19    feed_mouse_click(3, 100, 100, GetEwkEvas());
20   }
21
22   bool LoadError(Evas_Object* webview, Ewk_Error* error) override {
23     is_failed = EINA_TRUE;
24     EventLoopStop(utc_blink_ewk_base::Success);
25     return false;
26   }
27
28   void PostSetUp() override {
29     /* Enable mouse events to feed events directly. */
30     ewk_view_mouse_events_enabled_set(GetEwkWebView(), EINA_TRUE);
31
32     Eina_Bool result_set = ewk_view_url_set(GetEwkWebView(), GetResourceUrl("/ewk_context_menu/index.html").c_str());
33     if (!result_set) {
34       FAIL();
35     }
36     evas_object_smart_callback_add(GetEwkWebView(), "contextmenu,customize", contextmenu_customize_callback, this);
37   }
38
39   void PreTearDown() override {
40     evas_object_smart_callback_del(GetEwkWebView(), "contextmenu,customize", contextmenu_customize_callback);
41   }
42
43   static void contextmenu_customize_callback(void* data, Evas_Object* webview, void* event_info)
44   {
45     utc_message("[contextmenu_customize_callback] :: \n");
46     if (!data || !event_info) {
47       FAIL();
48     }
49     Ewk_Context_Menu* contextmenu = static_cast<Ewk_Context_Menu*>(event_info);
50     utc_blink_ewk_context_menu_nth_item_get *owner = static_cast<utc_blink_ewk_context_menu_nth_item_get*>(data);
51
52     owner->item = ewk_context_menu_nth_item_get(contextmenu, 0);
53     owner->EventLoopStop(utc_blink_ewk_base::Success);
54   }
55
56 protected:
57   Eina_Bool is_failed;
58   Ewk_Context_Menu_Item* item;
59 };
60
61 /**
62  * @brief Tests whether the appending item to context menu is performed properly.
63  */
64 TEST_F(utc_blink_ewk_context_menu_nth_item_get, POS_TEST)
65 {
66   if (!is_failed) {
67     ASSERT_EQ(Success, EventLoopStart());
68   }
69
70   ASSERT_FALSE(is_failed);
71   EXPECT_TRUE(NULL != item);
72 }
73
74 /**
75  * @brief Tests whether the function works properly for case Ewk_Context_Menu object is NULL.
76  */
77 TEST_F(utc_blink_ewk_context_menu_nth_item_get, NEG_TEST)
78 {
79   EXPECT_EQ(0, ewk_context_menu_nth_item_get(NULL, 0));
80 }