92c355e14515fa22928fe572a6109350fdcb89e2
[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 "FullscreenVideoController.h"
27 #include "GtkClickCounter.h"
28 #include "GtkDragAndDropHelper.h"
29 #include "GOwnPtr.h"
30 #include "Page.h"
31 #include "ResourceHandle.h"
32 #include "WidgetBackingStore.h"
33 #include <webkit/webkitwebview.h>
34
35 namespace WebKit {
36 WebCore::Page* core(WebKitWebView*);
37 WebKitWebView* kit(WebCore::Page*);
38 }
39
40 extern "C" {
41
42 #define WEBKIT_WEB_VIEW_GET_PRIVATE(obj)    (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewPrivate))
43 typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate;
44 struct _WebKitWebViewPrivate {
45     WebCore::Page* corePage;
46     OwnPtr<WebCore::WidgetBackingStore> backingStore;
47     GRefPtr<WebKitWebSettings> webSettings;
48     GRefPtr<WebKitWebInspector> webInspector;
49     GRefPtr<WebKitViewportAttributes> viewportAttributes;
50     GRefPtr<WebKitWebWindowFeatures> webWindowFeatures;
51
52     WebKitWebFrame* mainFrame;
53     GRefPtr<WebKitWebBackForwardList> backForwardList;
54
55     GtkMenu* currentMenu;
56     gint lastPopupXPosition;
57     gint lastPopupYPosition;
58
59     HashSet<GtkWidget*> children;
60     GRefPtr<GtkIMContext> imContext;
61
62     gboolean transparent;
63
64 #ifndef GTK_API_VERSION_2
65     // GtkScrollablePolicy needs to be checked when
66     // driving the scrollable adjustment values
67     GtkScrollablePolicy horizontalScrollingPolicy;
68     GtkScrollablePolicy verticalScrollingPolicy;
69 #endif
70
71     gboolean zoomFullContent;
72     WebKitLoadStatus loadStatus;
73     CString encoding;
74     CString customEncoding;
75
76     CString iconURI;
77
78     gboolean disposing;
79
80 #if ENABLE(VIDEO)
81     FullscreenVideoController* fullscreenVideoController;
82 #endif
83
84     // These are hosted here because the DataSource object is
85     // created too late in the frame loading process.
86     GRefPtr<WebKitWebResource> mainResource;
87     CString mainResourceIdentifier;
88     GRefPtr<GHashTable> subResources;
89     CString tooltipText;
90     WebCore::IntRect tooltipArea;
91
92     WebCore::GtkClickCounter clickCounter;
93     WebCore::GtkDragAndDropHelper dragAndDropHelper;
94     bool selfScrolling;
95 };
96
97 void webkit_web_view_notify_ready(WebKitWebView*);
98
99 void webkit_web_view_request_download(WebKitWebView*, WebKitNetworkRequest*, const WebCore::ResourceResponse& = WebCore::ResourceResponse(), WebCore::ResourceHandle* = 0);
100
101 void webkit_web_view_add_resource(WebKitWebView*, const char*, WebKitWebResource*);
102 void webkit_web_view_add_main_resource(WebKitWebView*, const char*, WebKitWebResource*);
103 void webkit_web_view_remove_resource(WebKitWebView*, const char*);
104 WebKitWebResource* webkit_web_view_get_resource(WebKitWebView*, char*);
105 WebKitWebResource* webkit_web_view_get_main_resource(WebKitWebView*);
106 void webkit_web_view_clear_resources(WebKitWebView*);
107 GList* webkit_web_view_get_subresources(WebKitWebView*);
108
109 void webkit_web_view_set_tooltip_text(WebKitWebView*, const char*);
110 GtkMenu* webkit_web_view_get_context_menu(WebKitWebView*);
111
112 void webViewEnterFullscreen(WebKitWebView* webView, WebCore::Node*);
113 void webViewExitFullscreen(WebKitWebView* webView);
114
115 #if USE(ACCELERATED_COMPOSITING)
116 void webViewSetRootGraphicsLayer(WebKitWebView*, WebCore::GraphicsLayer*);
117 void webViewMarkForSync(WebKitWebView*, gboolean);
118 #endif
119 }
120
121 #endif