[WebView] [TCSACR-219] Adds WebView.BackForwardList (#620)
[platform/core/csapi/tizenfx.git] / src / Tizen.WebView / Tizen.WebView / Context.cs
1 /*
2  * Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 using System;
18
19 namespace Tizen.WebView
20 {
21     /// <summary>
22     /// Enumeration for cache model options.
23     /// </summary>
24     /// <since_tizen> 4 </since_tizen>
25     public enum CacheModel
26     {
27         /// <summary>
28         /// Use the smallest cache capacity.
29         /// </summary>
30         DocumentViewer,
31         /// <summary>
32         /// Use the bigger cache capacity than DocumentBrowser.
33         /// </summary>
34         DocumentBrowser,
35         /// <summary>
36         /// Use the biggest cache capacity.
37         /// </summary>
38         PrimaryWebBrowser
39     }
40
41     /// <summary>
42     /// This class encapsulates all the pages related to the specific use of the Chromium-efl.
43     /// </summary>
44     /// <remarks>
45     /// Applications have the option of creating a context different from the default one and using it for a group of pages.
46     /// All pages in the same context share the same preferences, visited link set, local storage, and so on.
47     /// </remarks>
48     /// <since_tizen> 4 </since_tizen>
49     public class Context
50     {
51         private IntPtr _handle;
52         private CookieManager _cookieManager;
53
54         internal Context(IntPtr handle)
55         {
56             _handle = handle;
57         }
58
59         /// <summary>
60         /// The cache model.
61         /// </summary>
62         /// <remarks>
63         /// The default cache model is DocumentViewer.
64         /// </remarks>
65         /// <since_tizen> 4 </since_tizen>
66         public CacheModel CacheModel
67         {
68             get
69             {
70                 return (CacheModel)Interop.ChromiumEwk.ewk_context_cache_model_get(_handle);
71             }
72
73             set
74             {
75                 Interop.ChromiumEwk.ewk_context_cache_model_set(_handle, (Interop.ChromiumEwk.CacheModel)value);
76             }
77         }
78
79         /// <summary>
80         /// Gets the CookieManager object for this context.
81         /// </summary>
82         /// <returns>The CookieManager object.</returns>
83         /// <since_tizen> 4 </since_tizen>
84         public CookieManager GetCookieManager()
85         {
86             if (_cookieManager == null)
87             {
88                 IntPtr cookieManagerHandle = Interop.ChromiumEwk.ewk_context_cookie_manager_get(_handle);
89                 if (cookieManagerHandle == IntPtr.Zero)
90                 {
91                     return null;
92                 }
93                 _cookieManager = new CookieManager(cookieManagerHandle);
94             }
95             return _cookieManager;
96         }
97     }
98 }