2ca81aa01679c2a5c39baa94a8a5196c1269b12d
[platform/framework/web/crosswalk-tizen.git] /
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 #ifndef ewk_context_private_h
6 #define ewk_context_private_h
7
8 #include <string>
9 #include <Evas.h>
10
11 #include "base/files/file_path.h"
12 #include "base/memory/ref_counted.h"
13 #include "public/ewk_context_product.h"
14
15 class CookieManager;
16 class EWebContext;
17 class GURL;
18 struct EwkFaviconDatabase;
19 struct Ewk_Cookie_Manager;
20
21 namespace content {
22 class BrowserContextEfl;
23 };
24
25 struct Ewk_Context : public base::RefCounted<Ewk_Context> {
26  public:
27   static Ewk_Context* DefaultContext();
28   static Ewk_Context* IncognitoContext();
29   static void DefaultContextRelease();
30   static Ewk_Context* Create(bool incognito = false);
31   static Ewk_Context* Create(const std::string& injectedBundlePath);
32   static void Delete(Ewk_Context*);
33
34   // Get related class
35   content::BrowserContextEfl* browser_context() const;
36   Ewk_Cookie_Manager* ewkCookieManager() const;
37   scoped_refptr<CookieManager> cookieManager() const;
38
39   // Set Callbacks
40   void SetDidStartDownloadCallback(Ewk_Context_Did_Start_Download_Callback callback,
41       void* user_data);
42   //EwkDidStartDownloadCallback* DidStartDownloadCallback();
43
44   // Certificate
45   void SetCertificatePath(const char* certificate_path);
46   const char* GetCertificatePath() const;
47
48   // Proxy
49   void SetProxy(const char* uri, const char* bypass_rule);
50   const char* GetProxyUri() const;
51   const char* GetProxyBypassRule() const;
52
53 #if defined(OS_TIZEN_TV_PRODUCT)
54   void SetEMPCertificatePath(const char* emp_ca_path,
55                              const char* default_ca_path);
56   void SetProxyDefaultAuth(const char* username, const char* password);
57 #endif
58
59   void NotifyLowMemory();
60
61   // HTTP Custom Header
62   bool HTTPCustomHeaderAdd(const std::string& name, const std::string& value);
63   bool HTTPCustomHeaderRemove(const std::string& name);
64   void HTTPCustomHeaderClear();
65
66   // Cache Model
67   void SetCacheModel(Ewk_Cache_Model cm);
68   Ewk_Cache_Model GetCacheModel() const;
69
70   // Network Cache
71   void SetNetworkCacheEnable(bool enable);
72   bool GetNetworkCacheEnable() const;
73   void ClearNetworkCache();
74   void ClearWebkitCache();
75
76   // Application Cache
77   void GetAllOriginsWithApplicationCache(
78       Ewk_Web_Application_Cache_Origins_Get_Callback callback, void* user_data);
79   void GetApplicationCacheUsage(const GURL& url,
80       Ewk_Web_Application_Cache_Usage_For_Origin_Get_Callback callback,
81       void* user_data);
82   void DeleteAllApplicationCache();
83   void DeleteApplicationCacheForSite(const GURL& url);
84
85   // Web Database
86   void GetAllOriginsWithWebDB(Ewk_Web_Database_Origins_Get_Callback callback,
87       void* user_data);
88   void WebDBDelete(const GURL& host);
89
90   // Indexed DB
91   void IndexedDBDelete();
92
93   // Web Storage
94   void WebStorageOriginsAllGet(Ewk_Web_Storage_Origins_Get_Callback callback,
95       void* user_data);
96   void WebStorageDelete();
97   void WebStorageDelete(const GURL& origin);
98   void ClearCandidateData();
99
100   // File System
101   void GetAllOriginsWithFileSystem(
102       Ewk_Local_File_System_Origins_Get_Callback callback, void* user_data) const;
103   void FileSystemDelete(const GURL& host);
104
105   // Favicon
106   bool SetFaviconDatabasePath(const base::FilePath& path);
107   Evas_Object *AddFaviconObject(const char *uri, Evas *canvas) const;
108
109   // Widget
110   void SetWidgetInfo(const std::string& tizen_app_id,
111                      double scale,
112                      const std::string& theme,
113                      const std::string& encoded_bundle);
114   //void SendWrtMessage(const Ewk_IPC_Wrt_Message_Data& message);
115
116   // Pixmap
117   int  Pixmap() const;
118   void SetPixmap(int pixmap);
119
120   // Password
121   void ClearPasswordData();
122
123   // Extensible
124   bool SetExtensibleAPI(const std::string& api_name, bool enable);
125   bool GetExtensibleAPI(const std::string& api_name) const;
126
127   // Set MIME override callback
128   void SetMimeOverrideCallback(Ewk_Context_Override_Mime_For_Url_Callback callback,
129                                void* user_data) const;
130
131   // Note: Do not use outside chromium
132   EWebContext* GetImpl() { return impl; }
133   EwkFaviconDatabase* GetFaviconDatabase() const;
134
135   unsigned int InspectorServerStart(unsigned int port) const;
136   bool InspectorServerStop() const;
137
138   void SetNotificationCallbacks(
139     Ewk_Context_Notification_Show_Callback show_callback,
140     Ewk_Context_Notification_Cancel_Callback cancel_callback,
141     void* user_data);
142
143 #if defined(OS_TIZEN_TV_PRODUCT)
144   // Set Check Accessible Path callback
145   void SetCheckAccessiblePathCallback(
146       Ewk_Context_Check_Accessible_Path_Callback callback,
147       void* user_data);
148
149   // Application Type
150   void SetApplicationType(const Ewk_Application_Type application_type);
151   Ewk_Application_Type GetApplicationType() const;
152
153   // Registers JS plugins mime types
154   void RegisterJSPluginMimeTypes(const Eina_List* mime_types);
155
156   // Registers url scheme as CORS enabled for HBBTV
157   void RegisterURLSchemesAsCORSEnabled(const Eina_List* schemes_list);
158
159   // Sets time offset for HBBTV
160   void SetTimeOffset(double time_offset);
161   // Sets time zone offset for HBBTV
162   void SetTimeZoneOffset(double time_zone_offset, double daylight_saving_time);
163 #endif
164
165   void SetContextInterceptRequestCallback(
166       Ewk_Context_Intercept_Request_Callback callback,
167       void* user_data);
168
169 #if defined(OS_TIZEN_TV_PRODUCT)
170   void SetMaxURLChars(size_t max_chars);
171 #endif
172
173 #if defined(PWE_SUPPORT)
174   void RegisterServiceWorker(
175       const char* scope_url,
176       const char* script_url,
177       Ewk_Context_Service_Worker_Registration_Result_Callback result_callback,
178       void* user_data);
179   void UnregisterServiceWorker(
180       const char* scope_url,
181       Ewk_Context_Service_Worker_Unregistration_Result_Callback result_callback,
182       void* user_data);
183 #endif
184
185   // default zoom factor
186   void SetDefaultZoomFactor(double zoom_factor);
187   double GetDefaultZoomFactor() const;
188
189   // Audio Latency Mode
190   void SetAudioLatencyMode(Ewk_Audio_Latency_Mode latency_mode);
191   Ewk_Audio_Latency_Mode GetAudioLatencyMode() const;
192
193   void SetMaxRefreshRate(int max_refresh_rate);
194
195  private:
196   EWebContext* impl;
197
198   Ewk_Context(bool incognito);
199   Ewk_Context(const std::string& injectedBundlePath);
200   ~Ewk_Context();
201   friend class base::RefCounted<Ewk_Context>;
202
203   DISALLOW_COPY_AND_ASSIGN(Ewk_Context);
204 };
205
206
207 #endif // ewk_context_private_h