1 // Copyright 2015 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_notification_test_base : public utc_blink_ewk_base
10 utc_blink_ewk_notification_test_base()
11 : security_origins(NULL)
12 , notification_sample_1(GetResourceUrl("/common/sample_notification_1.html"))
16 void PostSetUp() override
18 ewk_view_notification_permission_callback_set(GetEwkWebView(),
19 reinterpret_cast<Ewk_View_Notification_Permission_Callback>(
20 notification_permission_request_callback),
22 ewk_notification_callbacks_set(
23 reinterpret_cast<Ewk_Notification_Show_Callback>(notification_show_callback),
24 reinterpret_cast<Ewk_Notification_Cancel_Callback>(notification_cancel_callback),
28 void PreTearDown() override
30 ewk_view_notification_permission_callback_set(GetEwkWebView(), NULL, NULL);
31 ewk_notification_callbacks_reset();
33 if (security_origins) {
34 // if it fails, than other TCs can produce false negatives/positives
35 EXPECT_EQ(EINA_TRUE, ewk_notification_policies_removed(security_origins));
39 EINA_LIST_FREE(security_origins, data) {
40 Ewk_Security_Origin* origin = static_cast<Ewk_Security_Origin*>(data);
41 ewk_security_origin_free(origin);
46 virtual void NotificationShow(Ewk_Notification* notification)
50 virtual void NotificationCancel(uint64_t notificationId)
54 virtual Eina_Bool NotificationPermissionRequest(Evas_Object* webview, Ewk_Notification_Permission_Request* request)
56 //allow the notification by default
57 EXPECT_EQ(EINA_TRUE, ewk_notification_permission_reply(request, EINA_TRUE));
61 static Eina_Bool notification_permission_request_callback(Evas_Object* webview, Ewk_Notification_Permission_Request* request, utc_blink_ewk_notification_test_base* owner)
63 utc_message("[notification_permission_request_callback] :: ");
69 owner->EventLoopStop(Failure);
73 const Ewk_Security_Origin *perm_origin = ewk_notification_permission_request_origin_get(request);
76 std::string proto, host;
78 if (ewk_security_origin_protocol_get(perm_origin)) {
79 proto = ewk_security_origin_protocol_get(perm_origin);
82 if (ewk_security_origin_host_get(perm_origin)) {
83 host = ewk_security_origin_host_get(perm_origin);
86 Ewk_Security_Origin *origin = ewk_security_origin_new_from_string((proto + "://" + host).c_str());
87 owner->security_origins = eina_list_append(owner->security_origins, origin);
90 return owner->NotificationPermissionRequest(webview, request);
93 static void notification_show_callback(Ewk_Notification* notification, utc_blink_ewk_notification_test_base* owner)
95 utc_message("[notification_show_callback] :: ");
99 owner->EventLoopStop(Failure);
100 ASSERT_TRUE(notification);
103 owner->NotificationShow(notification);
106 static void notification_cancel_callback(uint64_t notificationId, utc_blink_ewk_notification_test_base* owner)
108 utc_message("[notification_cancel_callback] :: ");
111 if (!notificationId) {
112 owner->EventLoopStop(Failure);
113 ASSERT_TRUE(notificationId);
116 owner->NotificationCancel(notificationId);
120 Eina_List* security_origins;
121 const std::string notification_sample_1;