Home | History | Annotate | Download | only in webkit
      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