1 // Copyright 2016 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 static const char* const kThemeColor1Url = "common/theme-color_1.html";
8 static const char* const kThemeColor2Url = "common/theme-color_2.html";
9 static const char* const kNoThemeColorUrl = "common/sample.html";
11 class utc_blink_ewk_view_did_change_theme_color_callback_set
12 : public utc_blink_ewk_base {
14 utc_blink_ewk_view_did_change_theme_color_callback_set()
15 : evas_object_(nullptr), url_loaded_(false) {}
17 void LoadFinished(Evas_Object* o) override { url_loaded_ = true; }
19 static void DidChangeThemeColorCallback(Evas_Object* o,
28 static_cast<utc_blink_ewk_view_did_change_theme_color_callback_set*>(
30 owner->evas_object_ = o;
35 owner->EventLoopStop(Success);
38 static void ThemeColor1UrlSetJob(utc_blink_ewk_base* data) {
40 static_cast<utc_blink_ewk_view_did_change_theme_color_callback_set*>(
42 ewk_view_url_set(owner->GetEwkWebView(),
43 owner->GetResourceUrl(kThemeColor1Url).c_str());
46 static void ThemeColor2UrlSetJob(utc_blink_ewk_base* data) {
48 static_cast<utc_blink_ewk_view_did_change_theme_color_callback_set*>(
50 ewk_view_url_set(owner->GetEwkWebView(),
51 owner->GetResourceUrl(kThemeColor2Url).c_str());
54 static void NoThemeColorUrlSetJob(utc_blink_ewk_base* data) {
56 static_cast<utc_blink_ewk_view_did_change_theme_color_callback_set*>(
58 ewk_view_url_set(owner->GetEwkWebView(),
59 owner->GetResourceUrl(kNoThemeColorUrl).c_str());
67 Evas_Object* evas_object_;
68 Eina_Bool url_loaded_;
72 * @brief Checks if color received in callback is same as in "theme-color" meta
75 TEST_F(utc_blink_ewk_view_did_change_theme_color_callback_set,
77 ASSERT_EQ(EINA_TRUE, ewk_view_did_change_theme_color_callback_set(
78 GetEwkWebView(), DidChangeThemeColorCallback, this));
79 SetTestJob(ThemeColor1UrlSetJob);
80 ASSERT_EQ(Success, EventLoopStart());
81 ASSERT_EQ(GetEwkWebView(), evas_object_);
89 * @brief Checks if callback is received only first time, when urls with same
90 * theme color are loaded one after another.
92 TEST_F(utc_blink_ewk_view_did_change_theme_color_callback_set,
93 POS_THEME_COLORS_SAME) {
94 ASSERT_EQ(EINA_TRUE, ewk_view_did_change_theme_color_callback_set(
95 GetEwkWebView(), DidChangeThemeColorCallback, this));
96 SetTestJob(ThemeColor1UrlSetJob);
97 ASSERT_EQ(Success, EventLoopStart());
98 ASSERT_EQ(GetEwkWebView(), evas_object_);
99 SetTestJob(ThemeColor1UrlSetJob);
100 ASSERT_EQ(Timeout, EventLoopStart(3.0));
101 ASSERT_TRUE(url_loaded_);
105 * @brief Checks if callback is received twice first time, when urls with
106 * different theme color are loaded one after another.
108 TEST_F(utc_blink_ewk_view_did_change_theme_color_callback_set,
109 POS_THEME_COLORS_DIFFERENT) {
110 ASSERT_EQ(EINA_TRUE, ewk_view_did_change_theme_color_callback_set(
111 GetEwkWebView(), DidChangeThemeColorCallback, this));
112 SetTestJob(ThemeColor1UrlSetJob);
113 ASSERT_EQ(Success, EventLoopStart());
114 evas_object_ = nullptr;
115 SetTestJob(ThemeColor2UrlSetJob);
116 ASSERT_EQ(Success, EventLoopStart());
117 ASSERT_EQ(GetEwkWebView(), evas_object_);
125 * @brief Checks if color is not received if url with no theme color is loaded
128 TEST_F(utc_blink_ewk_view_did_change_theme_color_callback_set,
129 POS_NO_THEME_COLOR) {
130 ASSERT_EQ(EINA_TRUE, ewk_view_did_change_theme_color_callback_set(
131 GetEwkWebView(), DidChangeThemeColorCallback, this));
132 SetTestJob(NoThemeColorUrlSetJob);
133 ASSERT_EQ(Timeout, EventLoopStart(3.0));
134 ASSERT_TRUE(url_loaded_);
138 * @brief Checks if callback is received if url with no theme color is loaded
139 * after url with theme color.
141 TEST_F(utc_blink_ewk_view_did_change_theme_color_callback_set,
142 POS_NO_THEME_COLOR_AFTER_THEME_COLOR) {
143 ASSERT_EQ(EINA_TRUE, ewk_view_did_change_theme_color_callback_set(
144 GetEwkWebView(), DidChangeThemeColorCallback, this));
145 SetTestJob(ThemeColor1UrlSetJob);
146 ASSERT_EQ(Success, EventLoopStart());
147 SetTestJob(NoThemeColorUrlSetJob);
148 ASSERT_EQ(Success, EventLoopStart());
149 ASSERT_EQ(GetEwkWebView(), evas_object_);
157 * @brief Checks if callback is reset properly.
159 TEST_F(utc_blink_ewk_view_did_change_theme_color_callback_set,
160 POS_RESET_CALLBACK) {
161 ASSERT_EQ(EINA_TRUE, ewk_view_did_change_theme_color_callback_set(
162 GetEwkWebView(), DidChangeThemeColorCallback, this));
163 SetTestJob(ThemeColor1UrlSetJob);
164 ASSERT_EQ(Success, EventLoopStart());
165 ASSERT_EQ(EINA_TRUE, ewk_view_did_change_theme_color_callback_set(
166 GetEwkWebView(), nullptr, this));
167 SetTestJob(ThemeColor2UrlSetJob);
168 ASSERT_EQ(Timeout, EventLoopStart(3.0));
169 ASSERT_TRUE(url_loaded_);
173 * @brief Checks if fails with webview being null.
175 TEST_F(utc_blink_ewk_view_did_change_theme_color_callback_set,
176 NEG_INVALID_WEBVIEW) {
177 ASSERT_EQ(EINA_FALSE, ewk_view_did_change_theme_color_callback_set(
178 nullptr, DidChangeThemeColorCallback, this));