1 // Copyright 2014-2015 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.
8 #include "base/files/file_path.h"
9 #include "browser/web_cache_efl/web_cache_manager_efl.h"
10 #include "common/tizen_extensible.h"
11 #include "private/ewk_cookie_manager_private.h"
12 #include "public/ewk_context.h"
13 #include "public/ewk_notification.h"
14 #include "devtools_delegate_efl.h"
17 class Ewk_Wrt_Message_Data;
18 class TizenExtensible;
19 class EwkFaviconDatabase;
22 class BrowserContextEfl;
25 class EWebContextNotificationCallback {
27 EWebContextNotificationCallback(
29 Ewk_Context_Notification_Show_Callback show_cb,
30 Ewk_Context_Notification_Cancel_Callback cancel_cb,
34 , cancel_cb_(cancel_cb)
35 , user_data_(data) { }
37 bool HasShowCallback() const { return show_cb_ != nullptr; }
38 bool HasCancelCallback() const { return cancel_cb_ != nullptr; }
39 bool RunShowCallback(Ewk_Notification* request) {
40 if (context_ && HasShowCallback()) {
41 show_cb_(context_, request, user_data_);
46 bool RunCancelCallback(uint64_t notification_id) {
47 if (context_ && HasCancelCallback()) {
48 cancel_cb_(context_, notification_id, user_data_);
55 Ewk_Context* context_;
56 Ewk_Context_Notification_Show_Callback show_cb_;
57 Ewk_Context_Notification_Cancel_Callback cancel_cb_;
61 class EwkDidStartDownloadCallback {
63 EwkDidStartDownloadCallback(Ewk_Context_Did_Start_Download_Callback callback,
65 : callback_(callback), user_data_(user_data)
67 void TriggerCallback(const std::string& url);
69 Ewk_Context_Did_Start_Download_Callback callback_;
73 class EwkMimeOverrideCallback {
75 EwkMimeOverrideCallback(Ewk_Context_Override_Mime_For_Url_Callback callback,
77 : callback_(callback), user_data_(user_data) {
79 bool TriggerCallback(const std::string& url_spec,
80 const std::string& mime_type,
81 char** new_mime_type) const;
83 Ewk_Context_Override_Mime_For_Url_Callback callback_;
89 content::BrowserContextEfl* browser_context() const { return browser_context_.get(); }
91 void ClearNetworkCache();
92 void ClearWebkitCache();
93 void AddExtraPluginDir(const char *path);
94 void SetCertificate(const char* certificate_file);
96 void SetCacheModel(Ewk_Cache_Model);
97 Ewk_Cache_Model GetCacheModel() const;
98 void SetNetworkCacheEnable(bool enable);
99 bool GetNetworkCacheEnable() const;
101 void NotifyLowMemory();
103 bool HTTPCustomHeaderAdd(const std::string& name, const std::string& value);
104 bool HTTPCustomHeaderRemove(const std::string& name);
105 void HTTPCustomHeaderClear();
107 Ewk_Cookie_Manager* ewkCookieManager();
108 scoped_refptr<CookieManager> cookieManager()
109 { return ewkCookieManager()->cookieManager(); }
110 void SetProxyUri(const char* uri);
111 const char* GetProxyUri() const
112 { return proxy_uri_.c_str(); }
113 //download start callback handlers
114 void SetDidStartDownloadCallback(Ewk_Context_Did_Start_Download_Callback callback,
116 EwkDidStartDownloadCallback* DidStartDownloadCallback();
117 void DeleteAllApplicationCache();
118 void DeleteApplicationCacheForSite(const GURL&);
119 void GetAllOriginsWithApplicationCache(Ewk_Web_Application_Cache_Origins_Get_Callback callback,
121 void GetApplicationCacheUsage(
123 Ewk_Web_Application_Cache_Usage_For_Origin_Get_Callback callback,
125 void GetAllOriginsWithWebDB(Ewk_Web_Database_Origins_Get_Callback callback, void* user_data);
126 void WebDBDelete(const GURL& host);
127 void IndexedDBDelete();
128 void WebStorageDelete();
129 void WebStorageDeleteForOrigin(const GURL& origin);
130 void WebStorageOriginsAllGet(Ewk_Web_Storage_Origins_Get_Callback callback, void* user_data);
131 void FileSystemDelete(const GURL& host);
132 void GetAllOriginsWithFileSystem(Ewk_Local_File_System_Origins_Get_Callback callback, void* user_data) const;
133 bool SetFaviconDatabasePath(const base::FilePath& path);
134 Evas_Object *AddFaviconObject(const char *uri, Evas *canvas) const;
136 void SendWidgetInfo(const std::string& tizen_id, double scale, const std::string &theme, const std::string &encoded_bundle);
137 void SendWrtMessage(const Ewk_Wrt_Message_Data& message);
139 void SetMimeOverrideCallback(Ewk_Context_Override_Mime_For_Url_Callback callback,
141 bool OverrideMimeForURL(const std::string& url_spec, const std::string& mime_type,
142 std::string& new_mime_type) const;
144 void SetPixmap(int pixmap) { m_pixmap = pixmap; }
145 int Pixmap() const { return m_pixmap; }
147 void ClearCandidateData();
148 void ClearPasswordData();
149 EwkFaviconDatabase* GetFaviconDatabase() const {
150 return ewk_favicon_database_.get();
153 unsigned int InspectorServerStart(unsigned int port);
154 bool InspectorServerStop();
156 void SetNotificationCallbacks(
157 Ewk_Context* context,
158 Ewk_Context_Notification_Show_Callback show_callback,
159 Ewk_Context_Notification_Cancel_Callback cancel_callback,
161 bool HasNotificationCallbacks() const;
162 bool NotificationShowCallback(Ewk_Notification* notification);
163 bool NotificationCancelCallback(uint64_t notification_id);
165 const std::string& GetInjectedBundlePath() const { return injected_bundle_path_; }
166 const std::string& GetTizenId() const { return tizen_id_; }
167 const std::string& GetWidgetTheme() const { return widget_theme_; }
168 const std::string& GetWidgetEncodedBundle() const { return widget_encoded_bundle_; }
169 double GetWidgetScale() const { return widget_scale_; }
171 bool SetExtensibleAPI(const std::string& api_name, bool enable);
172 bool GetExtensibleAPI(const std::string& api_name);
175 EWebContext(bool incognito);
176 EWebContext(const std::string& injectedBundlePath);
177 EWebContext(bool incognito, const std::string& injectedBundlePath);
179 friend class Ewk_Context;
181 std::unique_ptr<WebCacheManagerEfl> web_cache_manager_;
182 std::unique_ptr<content::BrowserContextEfl> browser_context_;
183 std::unique_ptr<Ewk_Cookie_Manager> ewk_cookie_manager_;
184 std::unique_ptr<TizenExtensible> tizen_extensible_;
185 std::unique_ptr<EwkFaviconDatabase> ewk_favicon_database_;
186 std::string proxy_uri_;
187 std::string injected_bundle_path_;
189 std::string tizen_id_;
190 std::string widget_theme_;
191 std::string widget_encoded_bundle_;
192 double widget_scale_;
194 std::unique_ptr<EwkDidStartDownloadCallback> start_download_callback_;
195 std::unique_ptr<EwkMimeOverrideCallback> mime_override_callback_;
197 content::DevToolsDelegateEfl* inspector_server_;
198 std::unique_ptr<EWebContextNotificationCallback> notification_cb_;