• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "DataObjectGtk.h"
27 #include "FullscreenVideoController.h"
28 #include "GOwnPtr.h"
29 #include "ResourceHandle.h"
30 #include <webkit/webkitwebview.h>
31 
32 namespace WebKit {
33 
34 WebCore::Page* core(WebKitWebView*);
35 WebKitWebView* kit(WebCore::Page*);
36 
37 
38 typedef struct DroppingContext_ {
39     WebKitWebView* webView;
40     GdkDragContext* gdkContext;
41     RefPtr<WebCore::DataObjectGtk> dataObject;
42     WebCore::IntPoint lastMotionPosition;
43     int pendingDataRequests;
44     bool dropHappened;
45 } DroppingContext;
46 
47 }
48 
49 extern "C" {
50 
51 #define WEBKIT_WEB_VIEW_GET_PRIVATE(obj)    (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewPrivate))
52 typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate;
53 struct _WebKitWebViewPrivate {
54     WebCore::Page* corePage;
55     GRefPtr<WebKitWebSettings> webSettings;
56     GRefPtr<WebKitWebInspector> webInspector;
57     GRefPtr<WebKitViewportAttributes> viewportAttributes;
58     GRefPtr<WebKitWebWindowFeatures> webWindowFeatures;
59 
60     WebKitWebFrame* mainFrame;
61     GRefPtr<WebKitWebBackForwardList> backForwardList;
62 
63     GtkMenu* currentMenu;
64     gint lastPopupXPosition;
65     gint lastPopupYPosition;
66 
67     HashSet<GtkWidget*> children;
68     GRefPtr<GtkIMContext> imContext;
69 
70     gboolean transparent;
71 
72     GRefPtr<GtkAdjustment> horizontalAdjustment;
73     GRefPtr<GtkAdjustment> verticalAdjustment;
74 
75 #ifndef GTK_API_VERSION_2
76     // GtkScrollablePolicy needs to be checked when
77     // driving the scrollable adjustment values
78     GtkScrollablePolicy horizontalScrollingPolicy;
79     GtkScrollablePolicy verticalScrollingPolicy;
80 #endif
81 
82     gboolean zoomFullContent;
83     WebKitLoadStatus loadStatus;
84     CString encoding;
85     CString customEncoding;
86 
87     CString iconURI;
88 
89     gboolean disposing;
90     gboolean usePrimaryForPaste;
91 
92 #if ENABLE(VIDEO)
93     FullscreenVideoController* fullscreenVideoController;
94 #endif
95 
96     // These are hosted here because the DataSource object is
97     // created too late in the frame loading process.
98     GRefPtr<WebKitWebResource> mainResource;
99     CString mainResourceIdentifier;
100     GRefPtr<GHashTable> subResources;
101     CString tooltipText;
102     WebCore::IntRect tooltipArea;
103 
104     int currentClickCount;
105     WebCore::IntPoint previousClickPoint;
106     guint previousClickButton;
107     guint32 previousClickTime;
108     HashMap<GdkDragContext*, RefPtr<WebCore::DataObjectGtk> > draggingDataObjects;
109     HashMap<GdkDragContext*, WebKit::DroppingContext*> droppingContexts;
110 };
111 
112 void webkit_web_view_notify_ready(WebKitWebView*);
113 
114 void webkit_web_view_request_download(WebKitWebView*, WebKitNetworkRequest*, const WebCore::ResourceResponse& = WebCore::ResourceResponse(), WebCore::ResourceHandle* = 0);
115 
116 void webkit_web_view_add_resource(WebKitWebView*, const char*, WebKitWebResource*);
117 void webkit_web_view_add_main_resource(WebKitWebView*, const char*, WebKitWebResource*);
118 void webkit_web_view_remove_resource(WebKitWebView*, const char*);
119 WebKitWebResource* webkit_web_view_get_resource(WebKitWebView*, char*);
120 WebKitWebResource* webkit_web_view_get_main_resource(WebKitWebView*);
121 void webkit_web_view_clear_resources(WebKitWebView*);
122 GList* webkit_web_view_get_subresources(WebKitWebView*);
123 
124 void webkit_web_view_set_tooltip_text(WebKitWebView*, const char*);
125 GtkMenu* webkit_web_view_get_context_menu(WebKitWebView*);
126 
127 WEBKIT_API gchar* webkit_web_view_get_selected_text(WebKitWebView*);
128 bool webkit_web_view_use_primary_for_paste(WebKitWebView*);
129 
130 void webViewEnterFullscreen(WebKitWebView* webView, WebCore::Node*);
131 void webViewExitFullscreen(WebKitWebView* webView);
132 
133 }
134 
135 #endif
136