1/*
2 * Copyright (C) 2007 Holger Hans Peter Freyther
3 * Copyright (C) 2007, 2008 Alp Toker <alp@atoker.com>
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 webkitwebview_h
23#define webkitwebview_h
24
25#include <gtk/gtk.h>
26#include <libsoup/soup.h>
27#include <JavaScriptCore/JSBase.h>
28
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>
35
36G_BEGIN_DECLS
37
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))
44
45typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate;
46
47typedef enum {
48    WEBKIT_NAVIGATION_RESPONSE_ACCEPT,
49    WEBKIT_NAVIGATION_RESPONSE_IGNORE,
50    WEBKIT_NAVIGATION_RESPONSE_DOWNLOAD
51} WebKitNavigationResponse;
52
53typedef enum
54{
55    WEBKIT_WEB_VIEW_TARGET_INFO_HTML,
56    WEBKIT_WEB_VIEW_TARGET_INFO_TEXT,
57    WEBKIT_WEB_VIEW_TARGET_INFO_IMAGE,
58    WEBKIT_WEB_VIEW_TARGET_INFO_URI_LIST,
59    WEBKIT_WEB_VIEW_TARGET_INFO_NETSCAPE_URL
60} WebKitWebViewTargetInfo;
61
62typedef enum
63{
64    WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED,
65    WEBKIT_WEB_VIEW_VIEW_MODE_FLOATING,
66    WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN,
67    WEBKIT_WEB_VIEW_VIEW_MODE_MAXIMIZED,
68    WEBKIT_WEB_VIEW_VIEW_MODE_MINIMIZED
69} WebKitWebViewViewMode;
70
71typedef enum
72{
73    WEBKIT_SELECTION_AFFINITY_UPSTREAM,
74    WEBKIT_SELECTION_AFFINITY_DOWNSTREAM,
75} WebKitSelectionAffinity;
76
77typedef enum
78{
79    WEBKIT_INSERT_ACTION_TYPED,
80    WEBKIT_INSERT_ACTION_PASTED,
81    WEBKIT_INSERT_ACTION_DROPPED,
82} WebKitInsertAction;
83
84struct _WebKitWebView {
85    GtkContainer parent_instance;
86
87    /*< private >*/
88    WebKitWebViewPrivate *priv;
89};
90
91struct _WebKitWebViewClass {
92    GtkContainerClass parent_class;
93
94    /*< public >*/
95    /*
96     * default handler/virtual methods
97     */
98    WebKitWebView            * (* create_web_view)        (WebKitWebView        *web_view,
99                                                           WebKitWebFrame       *web_frame);
100
101    gboolean                   (* web_view_ready)          (WebKitWebView* web_view);
102
103    gboolean                   (* close_web_view)         (WebKitWebView* web_view);
104
105    WebKitNavigationResponse   (* navigation_requested)   (WebKitWebView        *web_view,
106                                                           WebKitWebFrame       *frame,
107                                                           WebKitNetworkRequest *request);
108    void                       (* window_object_cleared)  (WebKitWebView        *web_view,
109                                                           WebKitWebFrame       *frame,
110                                                           JSGlobalContextRef    context,
111                                                           JSObjectRef           window_object);
112    gchar                    * (* choose_file)            (WebKitWebView        *web_view,
113                                                           WebKitWebFrame       *frame,
114                                                           const gchar          *old_file);
115    gboolean                   (* script_alert)           (WebKitWebView        *web_view,
116                                                           WebKitWebFrame       *frame,
117                                                           const gchar          *alert_message);
118    gboolean                   (* script_confirm)         (WebKitWebView        *web_view,
119                                                           WebKitWebFrame       *frame,
120                                                           const gchar          *confirm_message,
121                                                           gboolean             *did_confirm);
122    gboolean                   (* script_prompt)          (WebKitWebView        *web_view,
123                                                           WebKitWebFrame       *frame,
124                                                           const gchar          *message,
125                                                           const gchar          *default_value,
126                                                           gchar*               *value);
127    gboolean                   (* console_message)        (WebKitWebView        *web_view,
128                                                           const gchar          *message,
129                                                           guint                 line_number,
130                                                           const gchar*          source_id);
131    void                       (* select_all)             (WebKitWebView        *web_view);
132    void                       (* cut_clipboard)          (WebKitWebView        *web_view);
133    void                       (* copy_clipboard)         (WebKitWebView        *web_view);
134    void                       (* paste_clipboard)        (WebKitWebView        *web_view);
135    gboolean                   (* move_cursor)            (WebKitWebView        *web_view,
136                                                           GtkMovementStep       step,
137                                                           gint                  count);
138
139    /*
140     * internal
141     */
142    void                       (* set_scroll_adjustments) (WebKitWebView        *web_view,
143                                                           GtkAdjustment        *hadjustment,
144                                                           GtkAdjustment        *vadjustment);
145
146    void                       (* undo)                   (WebKitWebView        *web_view);
147    void                       (* redo)                   (WebKitWebView        *web_view);
148    gboolean                   (* should_allow_editing_action) (WebKitWebView   *web_view);
149
150    /* Padding for future expansion */
151    void (*_webkit_reserved0) (void);
152    void (*_webkit_reserved1) (void);
153    void (*_webkit_reserved2) (void);
154};
155
156WEBKIT_API GType
157webkit_web_view_get_type (void);
158
159WEBKIT_API GtkWidget *
160webkit_web_view_new (void);
161
162WEBKIT_API G_CONST_RETURN gchar *
163webkit_web_view_get_title                       (WebKitWebView        *webView);
164
165WEBKIT_API G_CONST_RETURN gchar *
166webkit_web_view_get_uri                         (WebKitWebView        *webView);
167
168WEBKIT_API void
169webkit_web_view_set_maintains_back_forward_list (WebKitWebView        *webView,
170                                                 gboolean              flag);
171
172WEBKIT_API WebKitWebBackForwardList *
173webkit_web_view_get_back_forward_list           (WebKitWebView        *webView);
174
175WEBKIT_API gboolean
176webkit_web_view_go_to_back_forward_item         (WebKitWebView        *webView,
177                                                 WebKitWebHistoryItem *item);
178
179WEBKIT_API gboolean
180webkit_web_view_can_go_back                     (WebKitWebView        *webView);
181
182WEBKIT_API gboolean
183webkit_web_view_can_go_back_or_forward          (WebKitWebView        *webView,
184                                                 gint                  steps);
185
186WEBKIT_API gboolean
187webkit_web_view_can_go_forward                  (WebKitWebView        *webView);
188
189WEBKIT_API void
190webkit_web_view_go_back                         (WebKitWebView        *webView);
191
192WEBKIT_API void
193webkit_web_view_go_back_or_forward              (WebKitWebView        *webView,
194                                                 gint                  steps);
195
196WEBKIT_API void
197webkit_web_view_go_forward                      (WebKitWebView        *webView);
198
199WEBKIT_API void
200webkit_web_view_stop_loading                    (WebKitWebView        *webView);
201
202WEBKIT_API void
203webkit_web_view_open                            (WebKitWebView        *webView,
204                                                 const gchar          *uri);
205
206WEBKIT_API void
207webkit_web_view_reload                          (WebKitWebView        *webView);
208
209WEBKIT_API void
210webkit_web_view_reload_bypass_cache             (WebKitWebView        *webView);
211
212WEBKIT_API void
213webkit_web_view_load_uri                        (WebKitWebView        *webView,
214                                                 const gchar          *uri);
215
216WEBKIT_API void
217webkit_web_view_load_string                     (WebKitWebView        *webView,
218                                                 const gchar          *content,
219                                                 const gchar          *mime_type,
220                                                 const gchar          *encoding,
221                                                 const gchar          *base_uri);
222
223WEBKIT_API void
224webkit_web_view_load_html_string                (WebKitWebView        *webView,
225                                                 const gchar          *content,
226                                                 const gchar          *base_uri);
227
228WEBKIT_API void
229webkit_web_view_load_request                    (WebKitWebView        *webView,
230                                                 WebKitNetworkRequest *request);
231
232WEBKIT_API gboolean
233webkit_web_view_search_text                     (WebKitWebView        *webView,
234                                                 const gchar          *text,
235                                                 gboolean              case_sensitive,
236                                                 gboolean              forward,
237                                                 gboolean              wrap);
238
239WEBKIT_API guint
240webkit_web_view_mark_text_matches               (WebKitWebView        *webView,
241                                                 const gchar          *string,
242                                                 gboolean              case_sensitive,
243                                                 guint                 limit);
244
245WEBKIT_API void
246webkit_web_view_set_highlight_text_matches      (WebKitWebView        *webView,
247                                                 gboolean              highlight);
248
249WEBKIT_API void
250webkit_web_view_unmark_text_matches             (WebKitWebView        *webView);
251
252WEBKIT_API WebKitWebFrame *
253webkit_web_view_get_main_frame                  (WebKitWebView        *webView);
254
255WEBKIT_API WebKitWebFrame *
256webkit_web_view_get_focused_frame               (WebKitWebView        *webView);
257
258WEBKIT_API void
259webkit_web_view_execute_script                  (WebKitWebView        *webView,
260                                                 const gchar          *script);
261
262WEBKIT_API gboolean
263webkit_web_view_can_cut_clipboard               (WebKitWebView        *webView);
264
265WEBKIT_API gboolean
266webkit_web_view_can_copy_clipboard              (WebKitWebView        *webView);
267
268WEBKIT_API gboolean
269webkit_web_view_can_paste_clipboard             (WebKitWebView        *webView);
270
271WEBKIT_API void
272webkit_web_view_cut_clipboard                   (WebKitWebView        *webView);
273
274WEBKIT_API void
275webkit_web_view_copy_clipboard                  (WebKitWebView        *webView);
276
277WEBKIT_API void
278webkit_web_view_paste_clipboard                 (WebKitWebView        *webView);
279
280WEBKIT_API void
281webkit_web_view_delete_selection                (WebKitWebView        *webView);
282
283WEBKIT_API gboolean
284webkit_web_view_has_selection                   (WebKitWebView        *webView);
285
286WEBKIT_API void
287webkit_web_view_select_all                      (WebKitWebView        *webView);
288
289WEBKIT_API gboolean
290webkit_web_view_get_editable                    (WebKitWebView        *webView);
291
292WEBKIT_API void
293webkit_web_view_set_editable                    (WebKitWebView        *webView,
294                                                 gboolean              flag);
295
296WEBKIT_API GtkTargetList *
297webkit_web_view_get_copy_target_list            (WebKitWebView        *webView);
298
299WEBKIT_API GtkTargetList *
300webkit_web_view_get_paste_target_list           (WebKitWebView        *webView);
301
302WEBKIT_API void
303webkit_web_view_set_settings                    (WebKitWebView        *webView,
304                                                 WebKitWebSettings    *settings);
305
306WEBKIT_API WebKitWebSettings *
307webkit_web_view_get_settings                    (WebKitWebView        *webView);
308
309WEBKIT_API WebKitWebInspector *
310webkit_web_view_get_inspector                   (WebKitWebView        *webView);
311
312WEBKIT_API WebKitWebWindowFeatures*
313webkit_web_view_get_window_features             (WebKitWebView        *webView);
314
315WEBKIT_API gboolean
316webkit_web_view_can_show_mime_type              (WebKitWebView        *webView,
317                                                 const gchar          *mime_type);
318
319WEBKIT_API gboolean
320webkit_web_view_get_transparent                 (WebKitWebView        *webView);
321
322WEBKIT_API void
323webkit_web_view_set_transparent                 (WebKitWebView        *webView,
324                                                 gboolean              flag);
325
326WEBKIT_API gfloat
327webkit_web_view_get_zoom_level                  (WebKitWebView        *webView);
328
329WEBKIT_API void
330webkit_web_view_set_zoom_level                  (WebKitWebView        *webView,
331                                                 gfloat                zoom_level);
332
333WEBKIT_API void
334webkit_web_view_zoom_in                         (WebKitWebView        *webView);
335
336WEBKIT_API void
337webkit_web_view_zoom_out                        (WebKitWebView        *webView);
338
339WEBKIT_API gboolean
340webkit_web_view_get_full_content_zoom           (WebKitWebView        *webView);
341
342WEBKIT_API void
343webkit_web_view_set_full_content_zoom           (WebKitWebView        *webView,
344                                                 gboolean              full_content_zoom);
345
346WEBKIT_API const gchar*
347webkit_web_view_get_encoding                    (WebKitWebView        * webView);
348
349WEBKIT_API void
350webkit_web_view_set_custom_encoding             (WebKitWebView        * webView,
351                                                 const gchar          * encoding);
352
353WEBKIT_API const char*
354webkit_web_view_get_custom_encoding             (WebKitWebView        * webView);
355
356WEBKIT_API void
357webkit_web_view_set_view_mode                   (WebKitWebView        *webView,
358                                                 WebKitWebViewViewMode mode);
359
360WEBKIT_API WebKitWebViewViewMode
361webkit_web_view_get_view_mode                   (WebKitWebView        *webView);
362
363WEBKIT_API void
364webkit_web_view_move_cursor                     (WebKitWebView        * webView,
365                                                 GtkMovementStep        step,
366                                                 gint                   count);
367
368WEBKIT_API WebKitLoadStatus
369webkit_web_view_get_load_status                 (WebKitWebView        *webView);
370
371WEBKIT_API gdouble
372webkit_web_view_get_progress                    (WebKitWebView        *webView);
373
374WEBKIT_API void
375webkit_web_view_undo                            (WebKitWebView        *webView);
376
377WEBKIT_API gboolean
378webkit_web_view_can_undo                        (WebKitWebView        *webView);
379
380WEBKIT_API void
381webkit_web_view_redo                            (WebKitWebView        *webView);
382
383WEBKIT_API gboolean
384webkit_web_view_can_redo                        (WebKitWebView        *webView);
385
386WEBKIT_API void
387webkit_web_view_set_view_source_mode            (WebKitWebView        *webView,
388                                                 gboolean             view_source_mode);
389
390WEBKIT_API gboolean
391webkit_web_view_get_view_source_mode            (WebKitWebView        *webView);
392
393WEBKIT_API WebKitHitTestResult*
394webkit_web_view_get_hit_test_result             (WebKitWebView        *webView,
395                                                 GdkEventButton       *event);
396
397WEBKIT_API G_CONST_RETURN gchar *
398webkit_web_view_get_icon_uri                    (WebKitWebView        *webView);
399
400WEBKIT_API GdkPixbuf *
401webkit_web_view_get_icon_pixbuf                 (WebKitWebView        *webView);
402
403WEBKIT_API WebKitDOMDocument *
404webkit_web_view_get_dom_document                (WebKitWebView        *webView);
405
406WEBKIT_API WebKitViewportAttributes*
407webkit_web_view_get_viewport_attributes         (WebKitWebView        *webView);
408
409G_END_DECLS
410
411#endif
412