[M120 Migration][MM] Support W3C EME
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / unittest / utc_blink_ewk_notification_permission_reply_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_permission_reply : public utc_blink_ewk_notification_test_base {
8  protected:
9   utc_blink_ewk_notification_permission_reply()
10     : notification_permission_request_cnt(0)
11   {}
12
13   Eina_Bool NotificationPermissionRequest(
14       Evas_Object* webview,
15       Ewk_Notification_Permission_Request* request) override {
16     EXPECT_EQ(EINA_TRUE, ewk_notification_permission_reply(request, EINA_TRUE));
17     ++notification_permission_request_cnt;
18     return EINA_TRUE;
19   }
20
21   void NotificationShow(Ewk_Notification* notification) override {
22     EventLoopStop(Success);
23   }
24
25  protected:
26   int notification_permission_request_cnt;
27 };
28
29 /**
30  * @brief Positive test case for ewk_notification_permission_reply function
31  */
32 TEST_F(utc_blink_ewk_notification_permission_reply, POS_TEST)
33 {
34   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), notification_sample_1.c_str()));
35   ASSERT_EQ(Success, EventLoopStart());
36   ASSERT_EQ(1, notification_permission_request_cnt);
37
38   ASSERT_EQ(EINA_TRUE, ewk_view_script_execute(GetEwkWebView(), "new Notification('Notification title');", NULL, NULL));
39   ASSERT_EQ(Success, EventLoopStart());
40   // once granted it should not request permission anymore
41   ASSERT_EQ(1, notification_permission_request_cnt);
42
43   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), notification_sample_1.c_str()));
44   ASSERT_EQ(Success, EventLoopStart());
45   // once granted it should not request permission anymore
46   ASSERT_EQ(1, notification_permission_request_cnt);
47 }
48
49 /**
50  * @brief Tests whether function works properly in case of nullptr value pass.
51  */
52 TEST_F(utc_blink_ewk_notification_permission_reply, NEG_TEST)
53 {
54   /* TODO: this code should use ewk_notification_cached_permissions_set and check its behaviour.
55   Results should be reported using one of utc_ macros */
56   ewk_notification_permission_reply(nullptr, EINA_TRUE);
57
58   // If  nullptr argument passing wont give segmentation fault negative test case will pass
59   SUCCEED();
60 }