[M120 Migration][MM] Support W3C EME
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / unittest / utc_blink_ewk_view_main_frame_scrollbar_visible_set_func.cpp
1 // Copyright 2022 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
7 class utc_blink_ewk_view_main_frame_scrollbar_visible_set
8     : public utc_blink_ewk_base {
9  protected:
10   void PostSetUp() override {
11     evas_object_smart_callback_add(GetEwkWebView(), "contents,size,changed",
12                                    ContentsSizeChanged, this);
13   }
14
15   void PreTearDown() override {
16     evas_object_smart_callback_del(GetEwkWebView(), "contents,size,changed",
17                                    ContentsSizeChanged);
18   }
19
20   static void ContentsSizeChanged(void* data,
21                                   Evas_Object* eObject,
22                                   void* dataFinished) {
23     if (data) {
24       static_cast<utc_blink_ewk_view_main_frame_scrollbar_visible_set*>(data)
25           ->EventLoopStop(Success);
26     }
27   }
28
29   static void ScrollbarVisibleGetCallback(Evas_Object* eObject,
30                                           Eina_Bool visible,
31                                           void* data) {
32     utc_check_ne(data, nullptr);
33     utc_blink_ewk_view_main_frame_scrollbar_visible_set* owner = nullptr;
34     OwnerFromVoid(data, &owner);
35     utc_message("[ScrollbarVisibleGetCallback] :: visible = %s\n",
36                 visible == EINA_TRUE ? "EINA_TRUE" : "EINA_FALSE");
37     utc_check_eq(owner->expected_visible_, visible);
38     owner->EventLoopStop(Success);
39   }
40
41  protected:
42   Eina_Bool expected_visible_;
43 };
44
45 TEST_F(utc_blink_ewk_view_main_frame_scrollbar_visible_set, TURN_OFF) {
46   Eina_Bool ret = EINA_FALSE;
47
48   // Loading the page triggers a call to ContentsSizeChanged callback.
49   utc_check_eq(EINA_TRUE, ewk_view_url_set(
50                               GetEwkWebView(),
51                               GetResourceUrl("common/sample_2.html").c_str()));
52   utc_check_eq(Success, EventLoopStart());
53
54   // Initially the scrollbar is visible.
55   expected_visible_ = EINA_TRUE;
56   ret = ewk_view_main_frame_scrollbar_visible_get(
57       GetEwkWebView(), ScrollbarVisibleGetCallback, this);
58   utc_check_eq(ret, EINA_TRUE);
59   utc_check_eq(Success, EventLoopStart());
60
61   // Check that changing scrollbar visiblity triggers "contents,size,changed"
62   // callback. Indeed at this point only ContentsSizeChanged callback can stop
63   // the next call to EventLoopStart.
64   ret = ewk_view_main_frame_scrollbar_visible_set(GetEwkWebView(), false);
65   utc_check_eq(ret, EINA_TRUE);
66   utc_check_eq(Success, EventLoopStart());
67
68   // Check that the scrollbar is not visible.
69   expected_visible_ = EINA_FALSE;
70   ret = ewk_view_main_frame_scrollbar_visible_get(
71       GetEwkWebView(), ScrollbarVisibleGetCallback, this);
72   utc_check_eq(ret, EINA_TRUE);
73   utc_check_eq(Success, EventLoopStart());
74
75   // Make the scrollbar visible again.
76   ret = ewk_view_main_frame_scrollbar_visible_set(GetEwkWebView(), true);
77   utc_check_eq(ret, EINA_TRUE);
78   utc_check_eq(Success, EventLoopStart());
79   expected_visible_ = EINA_TRUE;
80   ret = ewk_view_main_frame_scrollbar_visible_get(
81       GetEwkWebView(), ScrollbarVisibleGetCallback, this);
82   utc_check_eq(ret, EINA_TRUE);
83   utc_check_eq(Success, EventLoopStart());
84 }