2 * Copyright (C) 2007 Holger Hans Peter Freyther
3 * Copyright (C) 2007, 2008 Alp Toker <alp@atoker.com>
4 * Copyright (C) 2008 Collabora Ltd.
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.
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.
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.
22 #ifndef webkitwebview_h
23 #define webkitwebview_h
26 #include <libsoup/soup.h>
27 #include <JavaScriptCore/JSBase.h>
29 #include <webkit/webkitdefines.h>
30 #include <webkit/webkitdom.h>
31 #include <webkit/webkitwebbackforwardlist.h>
32 #include <webkit/webkitwebframe.h>
33 #include <webkit/webkitwebhistoryitem.h>
34 #include <webkit/webkitwebsettings.h>
38 #define WEBKIT_TYPE_WEB_VIEW (webkit_web_view_get_type())
39 #define WEBKIT_WEB_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebView))
40 #define WEBKIT_WEB_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewClass))
41 #define WEBKIT_IS_WEB_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_VIEW))
42 #define WEBKIT_IS_WEB_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_VIEW))
43 #define WEBKIT_WEB_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewClass))
45 typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate;
48 * WebKitNavigationResponse:
49 * @WEBKIT_NAVIGATION_RESPONSE_ACCEPT: Instruct WebKit to allow the navigation.
50 * @WEBKIT_NAVIGATION_RESPONSE_IGNORE: Instruct WebKit to ignore the navigation.
51 * @WEBKIT_NAVIGATION_RESPONSE_DOWNLOAD: Instruct WebKit to start a download of the destination instead.
53 * Enum values used to denote the various responses to a navigation policy decision.
56 WEBKIT_NAVIGATION_RESPONSE_ACCEPT,
57 WEBKIT_NAVIGATION_RESPONSE_IGNORE,
58 WEBKIT_NAVIGATION_RESPONSE_DOWNLOAD
59 } WebKitNavigationResponse;
62 * WebKitWebViewTargetInfo:
63 * @WEBKIT_WEB_VIEW_TARGET_INFO_HTML: Rich markup data
64 * @WEBKIT_WEB_VIEW_TARGET_INFO_TEXT: Text data
65 * @WEBKIT_WEB_VIEW_TARGET_INFO_IMAGE: Image data
66 * @WEBKIT_WEB_VIEW_TARGET_INFO_URI_LIST: URI list data
67 * @WEBKIT_WEB_VIEW_TARGET_INFO_NETSCAPE_URL: A single URL in the Netscape protocol
69 * Enum values used to denote the info value of various selection types. These can be used
70 * to interpret the data WebKitGTK+ publishes via GtkClipboard and drag-and-drop.
74 WEBKIT_WEB_VIEW_TARGET_INFO_HTML,
75 WEBKIT_WEB_VIEW_TARGET_INFO_TEXT,
76 WEBKIT_WEB_VIEW_TARGET_INFO_IMAGE,
77 WEBKIT_WEB_VIEW_TARGET_INFO_URI_LIST,
78 WEBKIT_WEB_VIEW_TARGET_INFO_NETSCAPE_URL
79 } WebKitWebViewTargetInfo;
82 * WebKitWebViewViewMode:
83 * @WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED: Windowed view mode
84 * @WEBKIT_WEB_VIEW_VIEW_MODE_FLOATING: Floating view mode
85 * @WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN: Fullscreen view mode
86 * @WEBKIT_WEB_VIEW_VIEW_MODE_MAXIMIZED: Maximized view mode
87 * @WEBKIT_WEB_VIEW_VIEW_MODE_MINIMIZED: Minimized view mode
89 * Enum values used to denote the various types of view modes. See the
90 * #WebKitWebView:view-mode property.
94 WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED,
95 WEBKIT_WEB_VIEW_VIEW_MODE_FLOATING,
96 WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN,
97 WEBKIT_WEB_VIEW_VIEW_MODE_MAXIMIZED,
98 WEBKIT_WEB_VIEW_VIEW_MODE_MINIMIZED
99 } WebKitWebViewViewMode;
103 WEBKIT_SELECTION_AFFINITY_UPSTREAM,
104 WEBKIT_SELECTION_AFFINITY_DOWNSTREAM,
105 } WebKitSelectionAffinity;
109 WEBKIT_INSERT_ACTION_TYPED,
110 WEBKIT_INSERT_ACTION_PASTED,
111 WEBKIT_INSERT_ACTION_DROPPED,
112 } WebKitInsertAction;
114 struct _WebKitWebView {
115 GtkContainer parent_instance;
118 WebKitWebViewPrivate *priv;
121 struct _WebKitWebViewClass {
122 GtkContainerClass parent_class;
126 * default handler/virtual methods
128 WebKitWebView * (* create_web_view) (WebKitWebView *web_view,
129 WebKitWebFrame *web_frame);
131 gboolean (* web_view_ready) (WebKitWebView* web_view);
133 gboolean (* close_web_view) (WebKitWebView* web_view);
135 WebKitNavigationResponse (* navigation_requested) (WebKitWebView *web_view,
136 WebKitWebFrame *frame,
137 WebKitNetworkRequest *request);
138 void (* window_object_cleared) (WebKitWebView *web_view,
139 WebKitWebFrame *frame,
140 JSGlobalContextRef context,
141 JSObjectRef window_object);
142 gchar * (* choose_file) (WebKitWebView *web_view,
143 WebKitWebFrame *frame,
144 const gchar *old_file);
145 gboolean (* script_alert) (WebKitWebView *web_view,
146 WebKitWebFrame *frame,
147 const gchar *alert_message);
148 gboolean (* script_confirm) (WebKitWebView *web_view,
149 WebKitWebFrame *frame,
150 const gchar *confirm_message,
151 gboolean *did_confirm);
152 gboolean (* script_prompt) (WebKitWebView *web_view,
153 WebKitWebFrame *frame,
154 const gchar *message,
155 const gchar *default_value,
157 gboolean (* console_message) (WebKitWebView *web_view,
158 const gchar *message,
160 const gchar* source_id);
161 void (* select_all) (WebKitWebView *web_view);
162 void (* cut_clipboard) (WebKitWebView *web_view);
163 void (* copy_clipboard) (WebKitWebView *web_view);
164 void (* paste_clipboard) (WebKitWebView *web_view);
165 gboolean (* move_cursor) (WebKitWebView *web_view,
166 GtkMovementStep step,
172 void (* set_scroll_adjustments) (WebKitWebView *web_view,
173 GtkAdjustment *hadjustment,
174 GtkAdjustment *vadjustment);
176 void (* undo) (WebKitWebView *web_view);
177 void (* redo) (WebKitWebView *web_view);
178 gboolean (* should_allow_editing_action) (WebKitWebView *web_view);
180 /* Padding for future expansion */
181 void (*_webkit_reserved0) (void);
182 void (*_webkit_reserved1) (void);
183 void (*_webkit_reserved2) (void);
187 webkit_web_view_get_type (void);
189 WEBKIT_API GtkWidget *
190 webkit_web_view_new (void);
192 WEBKIT_API const gchar *
193 webkit_web_view_get_title (WebKitWebView *web_view);
196 WEBKIT_API const gchar *
197 webkit_web_view_get_uri (WebKitWebView *web_view);
200 webkit_web_view_set_maintains_back_forward_list (WebKitWebView *web_view,
203 WEBKIT_API WebKitWebBackForwardList *
204 webkit_web_view_get_back_forward_list (WebKitWebView *web_view);
207 webkit_web_view_go_to_back_forward_item (WebKitWebView *web_view,
208 WebKitWebHistoryItem *item);
211 webkit_web_view_can_go_back (WebKitWebView *web_view);
214 webkit_web_view_can_go_back_or_forward (WebKitWebView *web_view,
217 webkit_web_view_can_go_forward (WebKitWebView *web_view);
220 webkit_web_view_go_back (WebKitWebView *web_view);
223 webkit_web_view_go_back_or_forward (WebKitWebView *web_view,
226 webkit_web_view_go_forward (WebKitWebView *web_view);
229 webkit_web_view_stop_loading (WebKitWebView *web_view);
231 #if !defined(WEBKIT_DISABLE_DEPRECATED)
233 webkit_web_view_open (WebKitWebView *web_view,
239 webkit_web_view_reload (WebKitWebView *web_view);
242 webkit_web_view_reload_bypass_cache (WebKitWebView *web_view);
245 webkit_web_view_load_uri (WebKitWebView *web_view,
248 webkit_web_view_load_string (WebKitWebView *web_view,
249 const gchar *content,
250 const gchar *mime_type,
251 const gchar *encoding,
252 const gchar *base_uri);
254 #if !defined(WEBKIT_DISABLE_DEPRECATED)
256 webkit_web_view_load_html_string (WebKitWebView *web_view,
257 const gchar *content,
258 const gchar *base_uri);
262 webkit_web_view_load_request (WebKitWebView *web_view,
263 WebKitNetworkRequest *request);
266 webkit_web_view_search_text (WebKitWebView *web_view,
268 gboolean case_sensitive,
273 webkit_web_view_mark_text_matches (WebKitWebView *web_view,
275 gboolean case_sensitive,
279 webkit_web_view_set_highlight_text_matches (WebKitWebView *web_view,
283 webkit_web_view_unmark_text_matches (WebKitWebView *web_view);
285 WEBKIT_API WebKitWebFrame *
286 webkit_web_view_get_main_frame (WebKitWebView *web_view);
288 WEBKIT_API WebKitWebFrame *
289 webkit_web_view_get_focused_frame (WebKitWebView *web_view);
292 webkit_web_view_execute_script (WebKitWebView *web_view,
293 const gchar *script);
296 webkit_web_view_can_cut_clipboard (WebKitWebView *web_view);
299 webkit_web_view_can_copy_clipboard (WebKitWebView *web_view);
302 webkit_web_view_can_paste_clipboard (WebKitWebView *web_view);
305 webkit_web_view_cut_clipboard (WebKitWebView *web_view);
308 webkit_web_view_copy_clipboard (WebKitWebView *web_view);
311 webkit_web_view_paste_clipboard (WebKitWebView *web_view);
314 webkit_web_view_delete_selection (WebKitWebView *web_view);
317 webkit_web_view_has_selection (WebKitWebView *web_view);
320 webkit_web_view_select_all (WebKitWebView *web_view);
323 webkit_web_view_get_editable (WebKitWebView *web_view);
326 webkit_web_view_set_editable (WebKitWebView *web_view,
329 WEBKIT_API GtkTargetList *
330 webkit_web_view_get_copy_target_list (WebKitWebView *web_view);
332 WEBKIT_API GtkTargetList *
333 webkit_web_view_get_paste_target_list (WebKitWebView *web_view);
336 webkit_web_view_set_settings (WebKitWebView *web_view,
337 WebKitWebSettings *settings);
339 WEBKIT_API WebKitWebSettings *
340 webkit_web_view_get_settings (WebKitWebView *web_view);
342 WEBKIT_API WebKitWebInspector *
343 webkit_web_view_get_inspector (WebKitWebView *web_view);
345 WEBKIT_API WebKitWebWindowFeatures*
346 webkit_web_view_get_window_features (WebKitWebView *web_view);
349 webkit_web_view_can_show_mime_type (WebKitWebView *web_view,
350 const gchar *mime_type);
353 webkit_web_view_get_transparent (WebKitWebView *web_view);
356 webkit_web_view_set_transparent (WebKitWebView *web_view,
360 webkit_web_view_get_zoom_level (WebKitWebView *web_view);
363 webkit_web_view_set_zoom_level (WebKitWebView *web_view,
367 webkit_web_view_zoom_in (WebKitWebView *web_view);
370 webkit_web_view_zoom_out (WebKitWebView *web_view);
373 webkit_web_view_get_full_content_zoom (WebKitWebView *web_view);
376 webkit_web_view_set_full_content_zoom (WebKitWebView *web_view,
377 gboolean full_content_zoom);
379 WEBKIT_API const gchar*
380 webkit_web_view_get_encoding (WebKitWebView *web_view);
383 webkit_web_view_set_custom_encoding (WebKitWebView *web_view,
384 const gchar *encoding);
386 WEBKIT_API const char*
387 webkit_web_view_get_custom_encoding (WebKitWebView *web_view);
390 webkit_web_view_set_view_mode (WebKitWebView *web_view,
391 WebKitWebViewViewMode mode);
393 WEBKIT_API WebKitWebViewViewMode
394 webkit_web_view_get_view_mode (WebKitWebView *web_view);
397 webkit_web_view_move_cursor (WebKitWebView *web_view,
398 GtkMovementStep step,
401 WEBKIT_API WebKitLoadStatus
402 webkit_web_view_get_load_status (WebKitWebView *web_view);
405 webkit_web_view_get_progress (WebKitWebView *web_view);
408 webkit_web_view_undo (WebKitWebView *web_view);
411 webkit_web_view_can_undo (WebKitWebView *web_view);
414 webkit_web_view_redo (WebKitWebView *web_view);
417 webkit_web_view_can_redo (WebKitWebView *web_view);
420 webkit_web_view_set_view_source_mode (WebKitWebView *web_view,
421 gboolean view_source_mode);
424 webkit_web_view_get_view_source_mode (WebKitWebView *web_view);
426 WEBKIT_API WebKitHitTestResult*
427 webkit_web_view_get_hit_test_result (WebKitWebView *web_view,
428 GdkEventButton *event);
430 WEBKIT_API const gchar *
431 webkit_web_view_get_icon_uri (WebKitWebView *web_view);
433 WEBKIT_API GdkPixbuf *
434 webkit_web_view_get_icon_pixbuf (WebKitWebView *web_view);
436 WEBKIT_API WebKitDOMDocument *
437 webkit_web_view_get_dom_document (WebKitWebView *web_view);
439 WEBKIT_API WebKitViewportAttributes*
440 webkit_web_view_get_viewport_attributes (WebKitWebView *web_view);