[M120 Migration][MM] Support W3C EME
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / unittest / utc_blink_ewk_view_add_with_session_data_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_base.h"
6
7 class utc_blink_ewk_view_add_with_session_data_func : public utc_blink_ewk_base
8 {
9 protected:
10   std::string firstPage;
11   std::string testUrl;
12   std::string lastPage;
13
14   const char *sessionData;
15   Evas_Object *otherWebview;
16
17   void PreSetUp() override {
18     firstPage = GetResourceUrl("common/sample.html");
19     testUrl   = GetResourceUrl("common/sample_1.html");
20     lastPage  = GetResourceUrl("common/sample_2.html");
21
22     otherWebview = NULL;
23     sessionData = NULL;
24   }
25
26   void LoadFinished(Evas_Object*) override { EventLoopStop(Success); }
27
28   void PostTearDown() override {
29     if (otherWebview)
30       evas_object_del(otherWebview);
31     if (sessionData)
32     free(const_cast<char *>(sessionData));
33   }
34 };
35
36
37 /**
38  * @brief Tests if returns valid webview when called with correct Evas object.
39  */
40 TEST_F(utc_blink_ewk_view_add_with_session_data_func, POS_TEST)
41 {
42   ewk_view_url_set(GetEwkWebView(), firstPage.c_str());
43   ASSERT_EQ(EventLoopStart(), Success);
44   ewk_view_url_set(GetEwkWebView(), testUrl.c_str());
45   ASSERT_EQ(EventLoopStart(), Success);
46   ewk_view_url_set(GetEwkWebView(), lastPage.c_str());
47   ASSERT_EQ(EventLoopStart(), Success);
48   ewk_view_back(GetEwkWebView());
49   ASSERT_EQ(EventLoopStart(), Success);
50
51   ASSERT_TRUE(ewk_view_forward_possible(GetEwkWebView())) << "before";
52   ASSERT_TRUE(ewk_view_back_possible(GetEwkWebView())) << "before";
53
54   unsigned length = 0;
55   ewk_view_session_data_get(GetEwkWebView(), &sessionData, &length);
56
57   ASSERT_TRUE(sessionData);
58   ASSERT_NE(length, 0);
59
60   otherWebview = ewk_view_add_with_session_data(GetEwkEvas(), sessionData, length);
61   ASSERT_TRUE(otherWebview);
62
63   ASSERT_STREQ(testUrl.c_str(), ewk_view_url_get(otherWebview));
64   ASSERT_TRUE(ewk_view_forward_possible(otherWebview)) << "after";
65   ASSERT_TRUE(ewk_view_back_possible(otherWebview)) << "after";
66 }
67
68 /**
69  * @brief Tests if returns NULL when called with NULL Evas object.
70  */
71 TEST_F(utc_blink_ewk_view_add_with_session_data_func, NEG_TEST_NULL_EVAS)
72 {
73   ewk_view_url_set(GetEwkWebView(), firstPage.c_str());
74   ASSERT_EQ(EventLoopStart(), Success);
75
76   const char *data;
77   unsigned length;
78   ewk_view_session_data_get(GetEwkWebView(), &data, &length);
79
80   EXPECT_TRUE(NULL == ewk_view_add_with_session_data(NULL, data, length));
81 }
82
83 /**
84  * @brief Tests if returns NULL when called with NULL data.
85  */
86 TEST_F(utc_blink_ewk_view_add_with_session_data_func, POS_TEST_NULL_DATA)
87 {
88   const char *data = NULL;
89   unsigned length = 0;
90   Evas_Object* webview = ewk_view_add_with_session_data(GetEwkEvas(), data, length);
91   ASSERT_TRUE(webview != NULL);
92   evas_object_del(webview);
93 }
94
95 /**
96  * @brief Tests if returns NULL when called with invalid data.
97  */
98 TEST_F(utc_blink_ewk_view_add_with_session_data_func, NEG_TEST_INVALID_DATA)
99 {
100   const char data[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
101   unsigned length = sizeof(data) / sizeof(data[0]);
102
103   ASSERT_FALSE(ewk_view_add_with_session_data(GetEwkEvas(), data, length));
104 }