[M120 Migration][MM] Support W3C EME
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / unittest / utc_blink_ewk_context_web_database_delete_all_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 class utc_blink_ewk_context_web_database_delete_all : public utc_blink_ewk_base {
10 protected:
11   utc_blink_ewk_context_web_database_delete_all()
12     : ctx(NULL)
13     , origins(NULL)
14   {
15   }
16
17   ~utc_blink_ewk_context_web_database_delete_all() override {
18     SetOrigins(NULL);
19   }
20
21   void PostSetUp() override {
22     utc_message("[postSetUp] :: ");
23     ctx = ewk_view_context_get(GetEwkWebView());
24   }
25
26   void LoadFinished(Evas_Object* webview) override {
27     utc_message("[loadFinished] :: ");
28     EventLoopStop(Success);
29   }
30
31   static void origins_get_cb(Eina_List* origins, void* user_data)
32   {
33     utc_message("origins_get_cb: %p, %p", origins, user_data);
34     ASSERT_TRUE(user_data);
35     utc_blink_ewk_context_web_database_delete_all* owner = static_cast<utc_blink_ewk_context_web_database_delete_all*>(user_data);
36     owner->SetOrigins(origins);
37     owner->EventLoopStop(Success);
38   }
39
40   void SetOrigins(Eina_List* new_origins)
41   {
42     utc_message("[setOrigins] :: ");
43     if (new_origins != origins) {
44       if (origins) {
45         ewk_context_origins_free(origins);
46       }
47
48       origins = new_origins;
49     }
50   }
51
52   void GetOrigins(int expected_count)
53   {
54     // web database operations are async, we must wait for changes to propagate
55     for (int i = 0; i < 3; ++i) {
56       if (EINA_TRUE != ewk_context_web_database_origins_get(ctx, origins_get_cb, this)) {
57         break;
58       }
59
60       if (Success != EventLoopStart()) {
61         break;
62       }
63
64       if (expected_count == eina_list_count(origins)) {
65         break;
66       }
67
68       if (!EventLoopWait(3.0)) {
69         break;
70       }
71     }
72   }
73
74 protected:
75   Ewk_Context* ctx;
76   Eina_List* origins;
77 protected:
78   static const char* const web_database_file;
79 };
80
81 const char* const utc_blink_ewk_context_web_database_delete_all::web_database_file = "ewk_context/WebDB2.html";
82
83 /**
84 * @brief Tests if can delete all web databases.
85 */
86 TEST_F(utc_blink_ewk_context_web_database_delete_all, POS_TEST)
87 {
88   // Load from file
89   std::string resurl = GetResourceUrl(web_database_file);
90   utc_message("Loading resource: %s", resurl.c_str());
91   ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), resurl.c_str()));
92   ASSERT_EQ(Success, EventLoopStart());
93
94   // Check if any origin is loaded
95   ASSERT_GE(1, eina_list_count(origins));
96
97   ASSERT_EQ(EINA_TRUE, ewk_context_web_database_delete_all(ctx));
98   GetOrigins(0);
99   ASSERT_EQ(0, eina_list_count(origins));
100
101   // if there are no origins in db, the "origins" argument passed to callback is NULL
102   // see "void OnGetWebDBOrigins()" in "eweb_context.cc"
103   ASSERT_TRUE(origins == NULL);
104 }
105
106 /**
107 * @brief Tests if returns false when context is null.
108 */
109 TEST_F(utc_blink_ewk_context_web_database_delete_all, NEG_TEST)
110 {
111   ASSERT_EQ(EINA_FALSE, ewk_context_web_database_delete_all(0));
112 }