[M120 Migration][MM] Support W3C EME
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / unittest / utc_blink_ewk_notification_policies_removed_func.cpp
1 // Copyright 2014 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_notification_test_base.h"
6
7 class utc_blink_ewk_notification_policies_removed : public utc_blink_ewk_notification_test_base {
8  protected:
9   utc_blink_ewk_notification_policies_removed()
10     : permission_request_call_cnt(0)
11     , proto_(NULL)
12     , host_(NULL)
13     , expected_proto_("")
14     , expected_host_("")
15   {}
16
17   ~utc_blink_ewk_notification_policies_removed() override {
18     eina_stringshare_del(proto_);
19     eina_stringshare_del(host_);
20   }
21
22   /* Callback for notification permission request */
23   Eina_Bool NotificationPermissionRequest(
24       Evas_Object* obj,
25       Ewk_Notification_Permission_Request* request) override {
26     const Ewk_Security_Origin* origin = ewk_notification_permission_request_origin_get(request);
27
28     if (!origin) {
29       EventLoopStop(Failure);
30       EXPECT_TRUE(origin);
31       return EINA_FALSE;
32     }
33
34     ++permission_request_call_cnt;
35     proto_ = eina_stringshare_add(ewk_security_origin_protocol_get(origin));
36     host_ = eina_stringshare_add(ewk_security_origin_host_get(origin));
37     ewk_notification_permission_reply(request, EINA_TRUE);
38     return EINA_TRUE;
39   }
40
41   void NotificationShow(Ewk_Notification*) override { EventLoopStop(Success); }
42
43  protected:
44   int permission_request_call_cnt;
45   Eina_Stringshare* proto_;
46   Eina_Stringshare* host_;
47   const char* const expected_proto_;
48   const char* const expected_host_;
49 };
50
51 TEST_F(utc_blink_ewk_notification_policies_removed, POS_TEST)
52 {
53   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), notification_sample_1.c_str()));
54   ASSERT_EQ(Success, EventLoopStart());
55
56   ASSERT_EQ(1, permission_request_call_cnt);
57   ASSERT_STREQ(expected_proto_, proto_);
58   ASSERT_STREQ(expected_host_, host_);
59
60   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), notification_sample_1.c_str()));
61   ASSERT_EQ(Success, EventLoopStart());
62   ASSERT_EQ(1, permission_request_call_cnt);
63
64
65   Eina_List *list = NULL;
66   Ewk_Security_Origin *origin = ewk_security_origin_new_from_string((std::string(proto_) + "://" + std::string(host_)).c_str());
67   list = eina_list_append(list, origin);
68
69   ASSERT_EQ(EINA_TRUE, ewk_notification_policies_removed(list));
70
71   void* data = NULL;
72   EINA_LIST_FREE(list, data) {
73     origin = static_cast<Ewk_Security_Origin*>(data);
74     ewk_security_origin_free(origin);
75   }
76
77   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), notification_sample_1.c_str()));
78   ASSERT_EQ(Success, EventLoopStart());
79   ASSERT_EQ(2, permission_request_call_cnt);
80 }
81
82 TEST_F(utc_blink_ewk_notification_policies_removed, NEG_TEST)
83 {
84   ewk_notification_policies_removed(NULL);
85   SUCCEED();
86 }