2009-03-03 Gustavo Noronha Silva <gns@gnome.org>
[WebKit-https.git] / WebKit / gtk / webkit / webkitprivate.h
1 /*
2  * Copyright (C) 2007, 2008 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 WEBKIT_PRIVATE_H
23 #define WEBKIT_PRIVATE_H
24
25 /*
26  * This file knows the shared secret of WebKitWebView and WebKitWebFrame.
27  * They are using WebCore which musn't be exposed to the outer world.
28  */
29
30 #include <webkit/webkitdefines.h>
31 #include <webkit/webkitdownload.h>
32 #include <webkit/webkitwebview.h>
33 #include <webkit/webkitwebframe.h>
34 #include <webkit/webkitwebpolicydecision.h>
35 #include <webkit/webkitwebnavigationaction.h>
36 #include <webkit/webkitwebsettings.h>
37 #include <webkit/webkitwebwindowfeatures.h>
38 #include <webkit/webkitwebbackforwardlist.h>
39
40 #include "BackForwardList.h"
41 #include "HistoryItem.h"
42 #include "Settings.h"
43 #include "Page.h"
44 #include "Frame.h"
45 #include "InspectorClientGtk.h"
46 #include "FrameLoaderClient.h"
47 #include "ResourceHandle.h"
48 #include "ResourceResponse.h"
49 #include "WindowFeatures.h"
50
51 #include <glib.h>
52
53 class DownloadClient;
54
55 namespace WebKit {
56     WebKitWebView* getViewFromFrame(WebKitWebFrame*);
57
58     WebCore::Frame* core(WebKitWebFrame*);
59     WebKitWebFrame* kit(WebCore::Frame*);
60
61     WebCore::Page* core(WebKitWebView*);
62     WebKitWebView* kit(WebCore::Page*);
63
64     WebCore::HistoryItem* core(WebKitWebHistoryItem*);
65     WebKitWebHistoryItem* kit(PassRefPtr<WebCore::HistoryItem>);
66
67     WebCore::BackForwardList* core(WebKitWebBackForwardList*);
68
69     WebKitWebNavigationReason kit(WebCore::NavigationType type);
70     WebCore::NavigationType core(WebKitWebNavigationReason reason);
71 }
72
73 extern "C" {
74     void webkit_init();
75
76 #define WEBKIT_PARAM_READABLE ((GParamFlags)(G_PARAM_READABLE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB))
77 #define WEBKIT_PARAM_READWRITE ((GParamFlags)(G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB))
78
79     #define WEBKIT_WEB_VIEW_GET_PRIVATE(obj)    (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewPrivate))
80     typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate;
81     struct _WebKitWebViewPrivate {
82         WebCore::Page* corePage;
83         WebKitWebSettings* webSettings;
84         WebKitWebInspector* webInspector;
85         WebKitWebWindowFeatures* webWindowFeatures;
86
87         WebKitWebFrame* mainFrame;
88         WebCore::String applicationNameForUserAgent;
89         WebCore::String* userAgent;
90
91         WebKitWebBackForwardList* backForwardList;
92
93         gint lastPopupXPosition;
94         gint lastPopupYPosition;
95
96         HashSet<GtkWidget*> children;
97         bool editable;
98         GtkIMContext* imContext;
99
100         GtkTargetList* copy_target_list;
101         GtkTargetList* paste_target_list;
102
103         gboolean transparent;
104
105         GtkAdjustment* horizontalAdjustment;
106         GtkAdjustment* verticalAdjustment;
107
108         gboolean zoomFullContent;
109         char* encoding;
110         char* customEncoding;
111
112         gboolean disposing;
113     };
114
115     #define WEBKIT_WEB_FRAME_GET_PRIVATE(obj)    (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_FRAME, WebKitWebFramePrivate))
116     typedef struct _WebKitWebFramePrivate WebKitWebFramePrivate;
117     struct _WebKitWebFramePrivate {
118         WebCore::Frame* coreFrame;
119         WebKitWebView* webView;
120
121         gchar* name;
122         gchar* title;
123         gchar* uri;
124     };
125
126     PassRefPtr<WebCore::Frame>
127     webkit_web_frame_init_with_web_view(WebKitWebView*, WebCore::HTMLFrameOwnerElement*);
128
129     void
130     webkit_web_frame_core_frame_gone(WebKitWebFrame*);
131
132     // WebKitWebHistoryItem private
133     WebKitWebHistoryItem*
134     webkit_web_history_item_new_with_core_item(PassRefPtr<WebCore::HistoryItem> historyItem);
135
136     WEBKIT_API G_CONST_RETURN gchar*
137     webkit_web_history_item_get_target(WebKitWebHistoryItem*);
138
139     WEBKIT_API gboolean
140     webkit_web_history_item_is_target_item(WebKitWebHistoryItem*);
141
142     WEBKIT_API GList*
143     webkit_web_history_item_get_children(WebKitWebHistoryItem*);
144     // end WebKitWebHistoryItem private
145
146     void
147     webkit_web_inspector_set_inspector_client(WebKitWebInspector*, WebKit::InspectorClient*);
148
149     void
150     webkit_web_inspector_set_web_view(WebKitWebInspector *web_inspector, WebKitWebView *web_view);
151
152     void
153     webkit_web_inspector_set_inspected_uri(WebKitWebInspector* web_inspector, const gchar* inspected_uri);
154
155     WebKitWebWindowFeatures*
156     webkit_web_window_features_new_from_core_features (const WebCore::WindowFeatures& features);
157
158     void
159     webkit_web_view_notify_ready (WebKitWebView* web_view);
160
161     WebKitWebPolicyDecision*
162     webkit_web_policy_decision_new (WebKitWebFrame*, WebCore::FramePolicyFunction);
163
164     void
165     webkit_web_policy_decision_cancel (WebKitWebPolicyDecision* decision);
166
167     // FIXME: move this functionality into a 'WebKitWebDataSource' once implemented
168     WEBKIT_API gchar*
169     webkit_web_frame_get_response_mime_type(WebKitWebFrame* frame);
170
171     // FIXME: Move these to webkitwebframe.h once their API has been discussed.
172
173     WEBKIT_API GSList*
174     webkit_web_frame_get_children (WebKitWebFrame* frame);
175
176     WEBKIT_API gchar*
177     webkit_web_frame_get_inner_text (WebKitWebFrame* frame);
178
179     WEBKIT_API void
180     webkit_web_frame_print (WebKitWebFrame* frame);
181
182     WEBKIT_API gchar*
183     webkit_web_frame_dump_render_tree (WebKitWebFrame* frame);
184
185     WEBKIT_API bool
186     webkit_web_frame_pause_animation(WebKitWebFrame* frame, const gchar* name, double time, const gchar* element);
187
188     WEBKIT_API bool
189     webkit_web_frame_pause_transition(WebKitWebFrame* frame, const gchar* name, double time, const gchar* element);
190
191     WEBKIT_API unsigned int
192     webkit_web_frame_number_of_active_animations(WebKitWebFrame* frame);
193
194     WEBKIT_API gchar*
195     webkit_web_view_get_selected_text (WebKitWebView* web_view);
196
197     WEBKIT_API void
198     webkit_web_settings_add_extra_plugin_directory (WebKitWebView *web_view, const gchar* directory);
199 }
200
201 #endif