[M120 Migration][MM] Support W3C EME
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / unittest / utc_blink_ewk_notification_test_base.h
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.
4
5 #include "utc_blink_ewk_base.h"
6
7 class utc_blink_ewk_notification_test_base : public utc_blink_ewk_base
8 {
9  protected:
10   utc_blink_ewk_notification_test_base()
11     : security_origins(NULL)
12     , notification_sample_1(GetResourceUrl("/common/sample_notification_1.html"))
13   {}
14
15   /* Common setup */
16   void PostSetUp() override;
17   void PreTearDown() override;
18
19   void NotificationShow(Ewk_Notification* notification) override {}
20
21   void NotificationCancel(uint64_t notificationId) override {}
22
23   Eina_Bool NotificationPermissionRequest(
24       Evas_Object* webview,
25       Ewk_Notification_Permission_Request* request) override;
26
27   static Eina_Bool notification_permission_request_callback(Evas_Object* webview, Ewk_Notification_Permission_Request* request, utc_blink_ewk_notification_test_base* owner)
28   {
29     utc_message("[notification_permission_request_callback] :: ");
30     if (!owner) {
31       return EINA_FALSE;
32     }
33
34     if (!request) {
35       owner->EventLoopStop(Failure);
36       return EINA_FALSE;
37     }
38
39     const Ewk_Security_Origin *perm_origin = ewk_notification_permission_request_origin_get(request);
40
41     if (perm_origin) {
42       std::string proto, host;
43
44       if (ewk_security_origin_protocol_get(perm_origin)) {
45         proto = ewk_security_origin_protocol_get(perm_origin);
46       }
47
48       if (ewk_security_origin_host_get(perm_origin)) {
49         host = ewk_security_origin_host_get(perm_origin);
50       }
51
52       Ewk_Security_Origin *origin = ewk_security_origin_new_from_string((proto + "://" + host).c_str());
53       owner->security_origins = eina_list_append(owner->security_origins, origin);
54     }
55
56     return owner->NotificationPermissionRequest(webview, request);
57   }
58
59   static void notification_show_callback(Ewk_Notification* notification, utc_blink_ewk_notification_test_base* owner)
60   {
61     utc_message("[notification_show_callback] :: ");
62     ASSERT_TRUE(owner);
63
64     if (!notification) {
65       owner->EventLoopStop(Failure);
66       ASSERT_TRUE(notification);
67     }
68
69     owner->NotificationShow(notification);
70   }
71
72   static void notification_cancel_callback(uint64_t notificationId, utc_blink_ewk_notification_test_base* owner)
73   {
74     utc_message("[notification_cancel_callback] :: ");
75     ASSERT_TRUE(owner);
76
77     if (!notificationId) {
78       owner->EventLoopStop(Failure);
79       ASSERT_TRUE(notificationId);
80     }
81
82     owner->NotificationCancel(notificationId);
83   }
84
85  protected:
86   Eina_List* security_origins;
87   const std::string notification_sample_1;
88 };