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.
5 #include "utc_blink_ewk_base.h"
7 class utc_blink_ewk_view_main_frame_scrollbar_visible_set
8 : public utc_blink_ewk_base {
10 void PostSetUp() override {
11 evas_object_smart_callback_add(GetEwkWebView(), "contents,size,changed",
12 ContentsSizeChanged, this);
15 void PreTearDown() override {
16 evas_object_smart_callback_del(GetEwkWebView(), "contents,size,changed",
20 static void ContentsSizeChanged(void* data,
24 static_cast<utc_blink_ewk_view_main_frame_scrollbar_visible_set*>(data)
25 ->EventLoopStop(Success);
29 static void ScrollbarVisibleGetCallback(Evas_Object* eObject,
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);
42 Eina_Bool expected_visible_;
45 TEST_F(utc_blink_ewk_view_main_frame_scrollbar_visible_set, TURN_OFF) {
46 Eina_Bool ret = EINA_FALSE;
48 // Loading the page triggers a call to ContentsSizeChanged callback.
49 utc_check_eq(EINA_TRUE, ewk_view_url_set(
51 GetResourceUrl("common/sample_2.html").c_str()));
52 utc_check_eq(Success, EventLoopStart());
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());
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());
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());
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());