[M120 Migration][MM] Support W3C EME
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / unittest / utc_blink_ewk_certificate_policy_decision_suspend_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 /* Define those macros _before_ you include the utc_blink_ewk.h header file. */
6
7 #include "utc_blink_ewk_base.h"
8
9 #define URL "https://wrong.host.badssl.com/"
10
11 class utc_blink_ewk_certificate_policy_decision_suspend  : public utc_blink_ewk_base
12 {
13 protected:
14   utc_blink_ewk_certificate_policy_decision_suspend()
15     : certificate_policy_decision(NULL)
16     , policy_suspended(false)
17   {}
18
19   void PostSetUp() override
20   {
21     evas_object_smart_callback_add(GetEwkWebView(), "request,certificate,confirm", policy_decision, this);
22   }
23
24   void PreTearDown() override
25   {
26     evas_object_smart_callback_del(GetEwkWebView(), "request,certificate,confirm", policy_decision);
27   }
28
29   void LoadFinished(Evas_Object* webview) override
30   {
31     utc_message("[policy decision] :: Load finished for URL: %s\n", ewk_view_url_get(webview));
32
33     EventLoopStop(utc_blink_ewk_base::Failure);
34   }
35
36   static void policy_decision(void* data, Evas_Object* webview, void* event_info)
37   {
38     utc_message("[policy decision] :: \n");
39
40     utc_blink_ewk_certificate_policy_decision_suspend *owner =
41             static_cast<utc_blink_ewk_certificate_policy_decision_suspend*>(data);
42     ASSERT_TRUE(owner) << "Event triggered with invalid data object";
43
44     owner->certificate_policy_decision = static_cast<Ewk_Certificate_Policy_Decision*>(event_info);
45
46     if (owner->certificate_policy_decision && !owner->policy_suspended) {
47       ewk_certificate_policy_decision_suspend(owner->certificate_policy_decision);
48       owner->policy_suspended = true;
49     }
50   }
51
52   bool TimeOut() override
53   {
54     EventLoopStop(policy_suspended ? Success : Failure);
55
56     return true;
57   }
58
59 protected:
60   Ewk_Certificate_Policy_Decision* certificate_policy_decision;
61   bool policy_suspended;
62 };
63
64 /**
65 * @brief Checking whether certification request confirmation works properly.
66 */
67 TEST_F(utc_blink_ewk_certificate_policy_decision_suspend, POS_TEST)
68 {
69   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), URL));
70
71   ASSERT_EQ(Success, EventLoopStart(5));
72
73   ASSERT_TRUE(policy_suspended);
74   ASSERT_TRUE(certificate_policy_decision != NULL);
75
76   ewk_certificate_policy_decision_allowed_set(certificate_policy_decision, EINA_TRUE);
77   ASSERT_EQ(Failure, EventLoopStart(10));
78 }
79
80 /**
81 * @brief Checking whether function works properly in case of NULL argument.
82 */
83 TEST_F(utc_blink_ewk_certificate_policy_decision_suspend, NEG_TEST)
84 {
85   ASSERT_EQ(EINA_FALSE, ewk_certificate_policy_decision_suspend(NULL));
86 }