4665c331517778e89483e09d92df95f14abf3f35
[WebKit-https.git] / Source / WebKit / gtk / webkit / webkitwebviewprivate.h
1 /*
2  * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
3  * Copyright (C) 2008 Jan Michael C. Alonzo
4  * Copyright (C) 2008, 2010 Collabora Ltd.
5  * Copyright (C) 2010 Igalia S.L.
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Library General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Library General Public License for more details.
16  *
17  * You should have received a copy of the GNU Library General Public License
18  * along with this library; see the file COPYING.LIB.  If not, write to
19  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20  * Boston, MA 02110-1301, USA.
21  */
22
23 #ifndef webkitwebviewprivate_h
24 #define webkitwebviewprivate_h
25
26 #include "AcceleratedCompositingContext.h"
27 #include "GeolocationClientMock.h"
28 #include "GtkClickCounter.h"
29 #include "GtkDragAndDropHelper.h"
30 #include "Page.h"
31 #include "ResourceHandle.h"
32 #include "ResourceResponse.h"
33 #include "WebViewInputMethodFilter.h"
34 #include "WidgetBackingStore.h"
35 #include <webkit/webkitwebview.h>
36 #include <wtf/gobject/GOwnPtr.h>
37
38 #if ENABLE(MEDIA_STREAM)
39 #include "UserMediaClientGtk.h"
40 #endif
41
42 #if ENABLE(NAVIGATOR_CONTENT_UTILS)
43 #include "NavigatorContentUtilsClientGtk.h"
44 #endif
45
46 namespace WebKit {
47 WebCore::Page* core(WebKitWebView*);
48 WebKitWebView* kit(WebCore::Page*);
49 }
50
51 extern "C" {
52
53 #define WEBKIT_WEB_VIEW_GET_PRIVATE(obj)    (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewPrivate))
54 typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate;
55 struct _WebKitWebViewPrivate {
56     WebCore::Page* corePage;
57     bool hasNativeWindow;
58     OwnPtr<WebCore::WidgetBackingStore> backingStore;
59     GRefPtr<WebKitWebSettings> webSettings;
60     GRefPtr<WebKitWebInspector> webInspector;
61     GRefPtr<WebKitViewportAttributes> viewportAttributes;
62     GRefPtr<WebKitWebWindowFeatures> webWindowFeatures;
63
64     WebKitWebFrame* mainFrame;
65     GRefPtr<WebKitWebBackForwardList> backForwardList;
66
67     GtkMenu* currentMenu;
68     gint lastPopupXPosition;
69     gint lastPopupYPosition;
70
71     HashSet<GtkWidget*> children;
72     WebKit::WebViewInputMethodFilter imFilter;
73
74     gboolean transparent;
75     bool needsResizeOnMap;
76
77 #ifndef GTK_API_VERSION_2
78     // GtkScrollablePolicy needs to be checked when
79     // driving the scrollable adjustment values
80     GtkScrollablePolicy horizontalScrollingPolicy;
81     GtkScrollablePolicy verticalScrollingPolicy;
82 #endif
83
84     gboolean zoomFullContent;
85     WebKitLoadStatus loadStatus;
86     CString encoding;
87     CString customEncoding;
88
89     CString iconURI;
90
91     gboolean disposing;
92
93     // These are hosted here because the DataSource object is
94     // created too late in the frame loading process.
95     GRefPtr<WebKitWebResource> mainResource;
96     CString mainResourceIdentifier;
97     GRefPtr<GHashTable> subResources;
98     CString tooltipText;
99     WebCore::IntRect tooltipArea;
100
101     WebCore::GtkClickCounter clickCounter;
102     WebCore::GtkDragAndDropHelper dragAndDropHelper;
103     bool selfScrolling;
104
105 #if USE(ACCELERATED_COMPOSITING)
106     OwnPtr<WebKit::AcceleratedCompositingContext> acceleratedCompositingContext;
107 #endif
108
109 #if ENABLE(ICONDATABASE)
110     gulong iconLoadedHandler;
111 #endif
112
113 #if ENABLE(MEDIA_STREAM)
114     OwnPtr<WebKit::UserMediaClientGtk> userMediaClient;
115 #endif
116
117 #if ENABLE(GEOLOCATION)
118     OwnPtr<WebCore::GeolocationClientMock> geolocationClientMock;
119 #endif
120
121 #if ENABLE(NAVIGATOR_CONTENT_UTILS)
122     OwnPtr<WebKit::NavigatorContentUtilsClient> navigatorContentUtilsClient;
123 #endif
124 };
125
126 void webkit_web_view_notify_ready(WebKitWebView*);
127
128 void webkit_web_view_request_download(WebKitWebView*, WebKitNetworkRequest*, const WebCore::ResourceResponse& = WebCore::ResourceResponse(), WebCore::ResourceHandle* = 0);
129
130 void webkit_web_view_add_resource(WebKitWebView*, const char*, WebKitWebResource*);
131 void webkit_web_view_add_main_resource(WebKitWebView*, const char*, WebKitWebResource*);
132 void webkit_web_view_remove_resource(WebKitWebView*, const char*);
133 WebKitWebResource* webkit_web_view_get_resource(WebKitWebView*, char*);
134 WebKitWebResource* webkit_web_view_get_main_resource(WebKitWebView*);
135 void webkit_web_view_clear_resources(WebKitWebView*);
136 GList* webkit_web_view_get_subresources(WebKitWebView*);
137
138 void webkit_web_view_set_tooltip_text(WebKitWebView*, const char*);
139 GtkMenu* webkit_web_view_get_context_menu(WebKitWebView*);
140
141 void webkitWebViewRunFileChooserRequest(WebKitWebView*, WebKitFileChooserRequest*);
142
143 #if ENABLE(ICONDATABASE)
144 void webkitWebViewRegisterForIconNotification(WebKitWebView*, bool shouldRegister);
145 void webkitWebViewIconLoaded(WebKitFaviconDatabase*, const char* frameURI, WebKitWebView*);
146 #endif
147 }
148
149 #endif