• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
3  * Copyright (C) 2008 Jan Michael C. Alonzo
4  * Copyright (C) 2008 Collabora Ltd.
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public License
17  * along with this library; see the file COPYING.LIB.  If not, write to
18  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  * Boston, MA 02110-1301, USA.
20  */
21 
22 #ifndef webkitprivate_h
23 #define webkitprivate_h
24 
25 /*
26  * This file knows the shared secret of WebKitWebView, WebKitWebFrame,
27  * and WebKitNetworkRequest.
28  * They are using WebCore which musn't be exposed to the outer world.
29  */
30 
31 #include <webkit/webkitdefines.h>
32 #include <webkit/webkitdownload.h>
33 #include <webkit/webkithittestresult.h>
34 #include <webkit/webkitnetworkrequest.h>
35 #include <webkit/webkitwebview.h>
36 #include <webkit/webkitwebdatasource.h>
37 #include <webkit/webkitwebframe.h>
38 #include <webkit/webkitwebpolicydecision.h>
39 #include <webkit/webkitwebnavigationaction.h>
40 #include <webkit/webkitwebresource.h>
41 #include <webkit/webkitwebsettings.h>
42 #include <webkit/webkitwebwindowfeatures.h>
43 #include <webkit/webkitwebbackforwardlist.h>
44 #include <webkit/webkitnetworkrequest.h>
45 #include <webkit/webkitsecurityorigin.h>
46 
47 #include "ArchiveResource.h"
48 #include "BackForwardList.h"
49 #include "CString.h"
50 #include <enchant.h>
51 #include "GOwnPtr.h"
52 #include "HistoryItem.h"
53 #include "Settings.h"
54 #include "Page.h"
55 #include "Frame.h"
56 #include "InspectorClientGtk.h"
57 #include "FrameLoaderClient.h"
58 #include "ResourceHandle.h"
59 #include "ResourceRequest.h"
60 #include "ResourceResponse.h"
61 #include "WindowFeatures.h"
62 #include "SecurityOrigin.h"
63 
64 #include <atk/atk.h>
65 #include <glib.h>
66 #include <libsoup/soup.h>
67 
68 class DownloadClient;
69 
70 namespace WebKit {
71 
72     class DocumentLoader;
73     class PasteboardHelperGtk;
74 
75     WebKitWebView* getViewFromFrame(WebKitWebFrame*);
76 
77     WebCore::Frame* core(WebKitWebFrame*);
78     WebKitWebFrame* kit(WebCore::Frame*);
79 
80     WebCore::Page* core(WebKitWebView*);
81     WebKitWebView* kit(WebCore::Page*);
82 
83     WebCore::HistoryItem* core(WebKitWebHistoryItem*);
84     WebKitWebHistoryItem* kit(PassRefPtr<WebCore::HistoryItem>);
85 
86     WebCore::BackForwardList* core(WebKitWebBackForwardList*);
87 
88     WebKitWebNavigationReason kit(WebCore::NavigationType type);
89     WebCore::NavigationType core(WebKitWebNavigationReason reason);
90 
91     WebCore::ResourceRequest core(WebKitNetworkRequest* request);
92 
93     WebCore::ResourceResponse core(WebKitNetworkResponse* response);
94 
95     WebCore::EditingBehavior core(WebKitEditingBehavior type);
96 
97     WebKitSecurityOrigin* kit(WebCore::SecurityOrigin*);
98     WebCore::SecurityOrigin* core(WebKitSecurityOrigin*);
99 
100     WebKitHitTestResult* kit(const WebCore::HitTestResult&);
101 
102     WebKit::PasteboardHelperGtk* pasteboardHelperInstance();
103 }
104 
105 typedef struct {
106     EnchantBroker* config;
107     EnchantDict* speller;
108 } SpellLanguage;
109 
110 extern "C" {
111     void webkit_init();
112 
113 #define WEBKIT_PARAM_READABLE ((GParamFlags)(G_PARAM_READABLE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB))
114 #define WEBKIT_PARAM_READWRITE ((GParamFlags)(G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB))
115 
116     #define WEBKIT_WEB_VIEW_GET_PRIVATE(obj)    (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewPrivate))
117     typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate;
118     struct _WebKitWebViewPrivate {
119         WebCore::Page* corePage;
120         WebKitWebSettings* webSettings;
121         WebKitWebInspector* webInspector;
122         WebKitWebWindowFeatures* webWindowFeatures;
123 
124         WebKitWebFrame* mainFrame;
125         WebKitWebBackForwardList* backForwardList;
126 
127         GtkMenu* currentMenu;
128         gint lastPopupXPosition;
129         gint lastPopupYPosition;
130 
131         HashSet<GtkWidget*> children;
132         bool editable;
133         GtkIMContext* imContext;
134 
135         gboolean transparent;
136 
137         GtkAdjustment* horizontalAdjustment;
138         GtkAdjustment* verticalAdjustment;
139 
140         gboolean zoomFullContent;
141         WebKitLoadStatus loadStatus;
142         char* encoding;
143         char* customEncoding;
144 
145         char* iconURI;
146 
147         gboolean disposing;
148         gboolean usePrimaryForPaste;
149 
150         // These are hosted here because the DataSource object is
151         // created too late in the frame loading process.
152         WebKitWebResource* mainResource;
153         char* mainResourceIdentifier;
154         GHashTable* subResources;
155         char* tooltipText;
156     };
157 
158     #define WEBKIT_WEB_FRAME_GET_PRIVATE(obj)    (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_FRAME, WebKitWebFramePrivate))
159     typedef struct _WebKitWebFramePrivate WebKitWebFramePrivate;
160     struct _WebKitWebFramePrivate {
161         WebCore::Frame* coreFrame;
162         WebKitWebView* webView;
163 
164         gchar* name;
165         gchar* title;
166         gchar* uri;
167         WebKitLoadStatus loadStatus;
168         WebKitSecurityOrigin* origin;
169     };
170 
171 #define WEBKIT_SECURITY_ORIGIN_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_SECURITY_ORIGIN, WebKitSecurityOriginPrivate))
172     struct _WebKitSecurityOriginPrivate {
173         RefPtr<WebCore::SecurityOrigin> coreOrigin;
174         gchar* protocol;
175         gchar* host;
176         GHashTable* webDatabases;
177 
178         gboolean disposed;
179     };
180 
181     PassRefPtr<WebCore::Frame>
182     webkit_web_frame_init_with_web_view(WebKitWebView*, WebCore::HTMLFrameOwnerElement*);
183 
184     void
185     webkit_web_frame_core_frame_gone(WebKitWebFrame*);
186 
187     // WebKitWebHistoryItem private
188     WebKitWebHistoryItem*
189     webkit_web_history_item_new_with_core_item(PassRefPtr<WebCore::HistoryItem> historyItem);
190 
191     WEBKIT_API G_CONST_RETURN gchar*
192     webkit_web_history_item_get_target(WebKitWebHistoryItem*);
193 
194     WEBKIT_API gboolean
195     webkit_web_history_item_is_target_item(WebKitWebHistoryItem*);
196 
197     WEBKIT_API GList*
198     webkit_web_history_item_get_children(WebKitWebHistoryItem*);
199     // end WebKitWebHistoryItem private
200 
201     // WebKitWebResource private
202     #define WEBKIT_WEB_RESOURCE_GET_PRIVATE(obj)        (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_RESOURCE, WebKitWebResourcePrivate))
203     struct _WebKitWebResourcePrivate {
204         WebCore::ArchiveResource* resource;
205 
206         gchar* uri;
207         gchar* mimeType;
208         gchar* textEncoding;
209         gchar* frameName;
210 
211         GString* data;
212     };
213     WebKitWebResource*
214     webkit_web_resource_new_with_core_resource(PassRefPtr<WebCore::ArchiveResource>);
215 
216     void
217     webkit_web_resource_init_with_core_resource(WebKitWebResource*, PassRefPtr<WebCore::ArchiveResource>);
218 
219     // end WebKitWebResource private
220 
221     void
222     webkit_web_inspector_set_inspector_client(WebKitWebInspector*, WebCore::Page*);
223 
224     void
225     webkit_web_inspector_set_web_view(WebKitWebInspector *web_inspector, WebKitWebView *web_view);
226 
227     void
228     webkit_web_inspector_set_inspected_uri(WebKitWebInspector* web_inspector, const gchar* inspected_uri);
229 
230     WEBKIT_API void
231     webkit_web_inspector_execute_script(WebKitWebInspector* inspector, long callId, const gchar* script);
232 
233 
234     WebKitWebWindowFeatures*
235     webkit_web_window_features_new_from_core_features (const WebCore::WindowFeatures& features);
236 
237     void
238     webkit_web_view_notify_ready (WebKitWebView* web_view);
239 
240     void
241     webkit_web_view_request_download(WebKitWebView* web_view, WebKitNetworkRequest* request, const WebCore::ResourceResponse& response = WebCore::ResourceResponse(), WebCore::ResourceHandle* handle = 0);
242 
243     void
244     webkit_web_view_add_resource(WebKitWebView*, char*, WebKitWebResource*);
245 
246     WebKitWebResource*
247     webkit_web_view_get_resource(WebKitWebView*, char*);
248 
249     WebKitWebResource*
250     webkit_web_view_get_main_resource(WebKitWebView*);
251 
252     void
253     webkit_web_view_clear_resources(WebKitWebView*);
254 
255     GList*
256     webkit_web_view_get_subresources(WebKitWebView*);
257 
258     void
259     webkit_web_view_set_tooltip_text(WebKitWebView*, const char*);
260 
261     WebKitDownload*
262     webkit_download_new_with_handle(WebKitNetworkRequest* request, WebCore::ResourceHandle* handle, const WebCore::ResourceResponse& response);
263 
264     void
265     webkit_download_set_suggested_filename(WebKitDownload* download, const gchar* suggestedFilename);
266 
267     WebKitWebPolicyDecision*
268     webkit_web_policy_decision_new (WebKitWebFrame*, WebCore::FramePolicyFunction);
269 
270     void
271     webkit_web_policy_decision_cancel (WebKitWebPolicyDecision* decision);
272 
273     WebKitNetworkRequest*
274     webkit_network_request_new_with_core_request(const WebCore::ResourceRequest& resourceRequest);
275 
276     WebKitNetworkResponse*
277     webkit_network_response_new_with_core_response(const WebCore::ResourceResponse& resourceResponse);
278 
279     // FIXME: move this to webkitnetworkrequest.h once the API is agreed upon.
280     WEBKIT_API SoupMessage*
281     webkit_network_request_get_message(WebKitNetworkRequest* request);
282 
283     // FIXME: move this functionality into a 'WebKitWebDataSource' once implemented
284     WEBKIT_API gchar*
285     webkit_web_frame_get_response_mime_type(WebKitWebFrame* frame);
286 
287     // FIXME: Move these to webkitwebframe.h once their API has been discussed.
288 
289     WEBKIT_API GSList*
290     webkit_web_frame_get_children (WebKitWebFrame* frame);
291 
292     WEBKIT_API gchar*
293     webkit_web_frame_get_inner_text (WebKitWebFrame* frame);
294 
295     WEBKIT_API gchar*
296     webkit_web_frame_dump_render_tree (WebKitWebFrame* frame);
297 
298     WEBKIT_API gchar*
299     webkit_web_frame_counter_value_for_element_by_id (WebKitWebFrame* frame, const gchar* id);
300 
301     WEBKIT_API int
302     webkit_web_frame_page_number_for_element_by_id(WebKitWebFrame* frame, const gchar* id, float pageWidth, float pageHeight);
303 
304     WEBKIT_API guint
305     webkit_web_frame_get_pending_unload_event_count(WebKitWebFrame* frame);
306 
307     WEBKIT_API bool
308     webkit_web_frame_pause_animation(WebKitWebFrame* frame, const gchar* name, double time, const gchar* element);
309 
310     WEBKIT_API bool
311     webkit_web_frame_pause_transition(WebKitWebFrame* frame, const gchar* name, double time, const gchar* element);
312 
313     WEBKIT_API bool
314     webkit_web_frame_pause_svg_animation(WebKitWebFrame* frame, const gchar* animationId, double time, const gchar* elementId);
315 
316     WEBKIT_API unsigned int
317     webkit_web_frame_number_of_active_animations(WebKitWebFrame* frame);
318 
319     WEBKIT_API void
320     webkit_web_frame_clear_main_frame_name(WebKitWebFrame* frame);
321 
322     WEBKIT_API AtkObject*
323     webkit_web_frame_get_focused_accessible_element(WebKitWebFrame* frame);
324 
325     WEBKIT_API gchar*
326     webkit_web_view_get_selected_text (WebKitWebView* web_view);
327 
328     WEBKIT_API void
329     webkit_web_view_set_group_name(WebKitWebView* web_view, const gchar* group_name);
330 
331     WEBKIT_API void
332     webkit_web_settings_add_extra_plugin_directory (WebKitWebView *web_view, const gchar* directory);
333 
334     GSList*
335     webkit_web_settings_get_spell_languages(WebKitWebView* web_view);
336 
337     bool
338     webkit_web_view_use_primary_for_paste(WebKitWebView* web_view);
339 
340     GHashTable*
341     webkit_history_items(void);
342 
343     WEBKIT_API void
344     webkit_gc_collect_javascript_objects();
345 
346     WEBKIT_API void
347     webkit_gc_collect_javascript_objects_on_alternate_thread(gboolean waitUntilDone);
348 
349     WEBKIT_API gsize
350     webkit_gc_count_javascript_objects();
351 
352     WEBKIT_API void
353     webkit_application_cache_set_maximum_size(unsigned long long size);
354 
355     WEBKIT_API unsigned int
356     webkit_worker_thread_count();
357 
358     WEBKIT_API void
359     webkit_white_list_access_from_origin(const gchar* sourceOrigin, const gchar* destinationProtocol, const gchar* destinationHost, bool allowDestinationSubdomains);
360 
361     WEBKIT_API void
362     webkit_reset_origin_access_white_lists();
363 
364     // WebKitWebDataSource private
365     WebKitWebDataSource*
366     webkit_web_data_source_new_with_loader(PassRefPtr<WebKit::DocumentLoader>);
367 
368     WEBKIT_API WebKitWebDatabase *
369     webkit_security_origin_get_web_database(WebKitSecurityOrigin* securityOrigin, const char* databaseName);
370 
371     WEBKIT_API void
372     webkit_web_frame_layout(WebKitWebFrame* frame);
373 }
374 
375 namespace WTF {
376     template <> void freeOwnedGPtr<SoupMessage>(SoupMessage*);
377     template <> void freeOwnedGPtr<WebKitNetworkRequest>(WebKitNetworkRequest*);
378     template <> void freeOwnedGPtr<WebKitNetworkResponse>(WebKitNetworkResponse*);
379     template <> void freeOwnedGPtr<WebKitWebResource>(WebKitWebResource*);
380 }
381 
382 #endif
383