diff -r 000000000000 -r 4f2f89ce4247 WebKit/gtk/webkit/webkitprivate.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebKit/gtk/webkit/webkitprivate.h Fri Sep 17 09:02:29 2010 +0300 @@ -0,0 +1,402 @@ +/* + * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther + * Copyright (C) 2008 Jan Michael C. Alonzo + * Copyright (C) 2008 Collabora Ltd. + * Copyright (C) 2010 Igalia S.L. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef webkitprivate_h +#define webkitprivate_h + +/* + * This file knows the shared secret of WebKitWebView, WebKitWebFrame, + * and WebKitNetworkRequest. + * They are using WebCore which musn't be exposed to the outer world. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ArchiveResource.h" +#include "BackForwardList.h" +#include "DataObjectGtk.h" +#include "DragActions.h" +#include "Frame.h" +#include "GOwnPtr.h" +#include "Geolocation.h" +#include "HistoryItem.h" +#include "InspectorClientGtk.h" +#include "IntPoint.h" +#include "FrameLoaderClient.h" +#include "Page.h" +#include "ResourceHandle.h" +#include "ResourceRequest.h" +#include "ResourceResponse.h" +#include "WindowFeatures.h" +#include "SecurityOrigin.h" +#include "Settings.h" +#include +#include +#include + +#include +#include +#include + +class DownloadClient; + +namespace WebKit { + + class DocumentLoader; + class PasteboardHelperGtk; + + WebKitWebView* getViewFromFrame(WebKitWebFrame*); + + WebCore::Frame* core(WebKitWebFrame*); + WebKitWebFrame* kit(WebCore::Frame*); + + WebCore::Page* core(WebKitWebView*); + WebKitWebView* kit(WebCore::Page*); + + WebCore::HistoryItem* core(WebKitWebHistoryItem*); + WebKitWebHistoryItem* kit(PassRefPtr); + + WebCore::BackForwardList* core(WebKitWebBackForwardList*); + + WebKitWebNavigationReason kit(WebCore::NavigationType type); + WebCore::NavigationType core(WebKitWebNavigationReason reason); + + WebCore::ResourceRequest core(WebKitNetworkRequest* request); + + WebCore::ResourceResponse core(WebKitNetworkResponse* response); + + WebCore::EditingBehaviorType core(WebKitEditingBehavior type); + + WebKitSecurityOrigin* kit(WebCore::SecurityOrigin*); + WebCore::SecurityOrigin* core(WebKitSecurityOrigin*); + + WebKitHitTestResult* kit(const WebCore::HitTestResult&); + + PasteboardHelperGtk* pasteboardHelperInstance(); + + typedef struct DroppingContext_ { + WebKitWebView* webView; + GdkDragContext* gdkContext; + RefPtr dataObject; + WebCore::IntPoint lastMotionPosition; + int pendingDataRequests; + bool dropHappened; + } DroppingContext; +} + +extern "C" { + void webkit_init(); + +#define WEBKIT_PARAM_READABLE ((GParamFlags)(G_PARAM_READABLE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)) +#define WEBKIT_PARAM_READWRITE ((GParamFlags)(G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)) + + #define WEBKIT_WEB_VIEW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewPrivate)) + typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate; + struct _WebKitWebViewPrivate { + WebCore::Page* corePage; + WebKitWebSettings* webSettings; + WebKitWebInspector* webInspector; + WebKitWebWindowFeatures* webWindowFeatures; + + WebKitWebFrame* mainFrame; + WebKitWebBackForwardList* backForwardList; + + GtkMenu* currentMenu; + gint lastPopupXPosition; + gint lastPopupYPosition; + + HashSet children; + bool editable; + GtkIMContext* imContext; + + gboolean transparent; + + GtkAdjustment* horizontalAdjustment; + GtkAdjustment* verticalAdjustment; + + gboolean zoomFullContent; + WebKitLoadStatus loadStatus; + char* encoding; + char* customEncoding; + + char* iconURI; + + gboolean disposing; + gboolean usePrimaryForPaste; + + // These are hosted here because the DataSource object is + // created too late in the frame loading process. + WebKitWebResource* mainResource; + char* mainResourceIdentifier; + GHashTable* subResources; + char* tooltipText; + + int currentClickCount; + WebCore::IntPoint* previousClickPoint; + guint previousClickButton; + guint32 previousClickTime; + + HashMap >* draggingDataObjects; + HashMap* droppingContexts; + }; + + #define WEBKIT_WEB_FRAME_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_FRAME, WebKitWebFramePrivate)) + typedef struct _WebKitWebFramePrivate WebKitWebFramePrivate; + struct _WebKitWebFramePrivate { + WebCore::Frame* coreFrame; + WebKitWebView* webView; + + gchar* name; + gchar* title; + gchar* uri; + WebKitLoadStatus loadStatus; + WebKitSecurityOrigin* origin; + }; + +#define WEBKIT_SECURITY_ORIGIN_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_SECURITY_ORIGIN, WebKitSecurityOriginPrivate)) + struct _WebKitSecurityOriginPrivate { + RefPtr coreOrigin; + gchar* protocol; + gchar* host; + GHashTable* webDatabases; + + gboolean disposed; + }; + + PassRefPtr + webkit_web_frame_init_with_web_view(WebKitWebView*, WebCore::HTMLFrameOwnerElement*); + + void + webkit_web_frame_core_frame_gone(WebKitWebFrame*); + + // WebKitWebHistoryItem private + WebKitWebHistoryItem* + webkit_web_history_item_new_with_core_item(PassRefPtr historyItem); + + WEBKIT_API G_CONST_RETURN gchar* + webkit_web_history_item_get_target(WebKitWebHistoryItem*); + + WEBKIT_API gboolean + webkit_web_history_item_is_target_item(WebKitWebHistoryItem*); + + WEBKIT_API GList* + webkit_web_history_item_get_children(WebKitWebHistoryItem*); + // end WebKitWebHistoryItem private + + // WebKitWebResource private + #define WEBKIT_WEB_RESOURCE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_RESOURCE, WebKitWebResourcePrivate)) + struct _WebKitWebResourcePrivate { + WebCore::ArchiveResource* resource; + + gchar* uri; + gchar* mimeType; + gchar* textEncoding; + gchar* frameName; + + GString* data; + }; + WebKitWebResource* + webkit_web_resource_new_with_core_resource(PassRefPtr); + + void + webkit_web_resource_init_with_core_resource(WebKitWebResource*, PassRefPtr); + + // end WebKitWebResource private + + void + webkit_web_inspector_set_inspector_client(WebKitWebInspector*, WebCore::Page*); + + void + webkit_web_inspector_set_web_view(WebKitWebInspector *web_inspector, WebKitWebView *web_view); + + void + webkit_web_inspector_set_inspected_uri(WebKitWebInspector* web_inspector, const gchar* inspected_uri); + + WEBKIT_API void + webkit_web_inspector_execute_script(WebKitWebInspector* inspector, long callId, const gchar* script); + + + WebKitWebWindowFeatures* + webkit_web_window_features_new_from_core_features (const WebCore::WindowFeatures& features); + + void + webkit_web_view_notify_ready (WebKitWebView* web_view); + + void + webkit_web_view_request_download(WebKitWebView* web_view, WebKitNetworkRequest* request, const WebCore::ResourceResponse& response = WebCore::ResourceResponse(), WebCore::ResourceHandle* handle = 0); + + void + webkit_web_view_add_resource(WebKitWebView*, const char*, WebKitWebResource*); + + WebKitWebResource* + webkit_web_view_get_resource(WebKitWebView*, char*); + + WebKitWebResource* + webkit_web_view_get_main_resource(WebKitWebView*); + + void + webkit_web_view_clear_resources(WebKitWebView*); + + GList* + webkit_web_view_get_subresources(WebKitWebView*); + + void + webkit_web_view_set_tooltip_text(WebKitWebView*, const char*); + + WebKitDownload* + webkit_download_new_with_handle(WebKitNetworkRequest* request, WebCore::ResourceHandle* handle, const WebCore::ResourceResponse& response); + + void + webkit_download_set_suggested_filename(WebKitDownload* download, const gchar* suggestedFilename); + + WebKitWebPolicyDecision* + webkit_web_policy_decision_new (WebKitWebFrame*, WebCore::FramePolicyFunction); + + void + webkit_web_policy_decision_cancel (WebKitWebPolicyDecision* decision); + + WebKitNetworkRequest* + webkit_network_request_new_with_core_request(const WebCore::ResourceRequest& resourceRequest); + + WebKitNetworkResponse* + webkit_network_response_new_with_core_response(const WebCore::ResourceResponse& resourceResponse); + + WebKitGeolocationPolicyDecision* + webkit_geolocation_policy_decision_new(WebKitWebFrame*, WebCore::Geolocation*); + + // FIXME: move this to webkitnetworkrequest.h once the API is agreed upon. + WEBKIT_API SoupMessage* + webkit_network_request_get_message(WebKitNetworkRequest* request); + + // FIXME: move this functionality into a 'WebKitWebDataSource' once implemented + WEBKIT_API gchar* + webkit_web_frame_get_response_mime_type(WebKitWebFrame* frame); + + // FIXME: Move these to webkitwebframe.h once their API has been discussed. + + WEBKIT_API GSList* + webkit_web_frame_get_children (WebKitWebFrame* frame); + + WEBKIT_API gchar* + webkit_web_frame_get_inner_text (WebKitWebFrame* frame); + + WEBKIT_API gchar* + webkit_web_frame_dump_render_tree (WebKitWebFrame* frame); + + WEBKIT_API gchar* + webkit_web_frame_counter_value_for_element_by_id (WebKitWebFrame* frame, const gchar* id); + + WEBKIT_API int + webkit_web_frame_page_number_for_element_by_id(WebKitWebFrame* frame, const gchar* id, float pageWidth, float pageHeight); + + WEBKIT_API int + webkit_web_frame_number_of_pages(WebKitWebFrame* frame, float pageWidth, float pageHeight); + + WEBKIT_API guint + webkit_web_frame_get_pending_unload_event_count(WebKitWebFrame* frame); + + WEBKIT_API bool + webkit_web_frame_pause_animation(WebKitWebFrame* frame, const gchar* name, double time, const gchar* element); + + WEBKIT_API bool + webkit_web_frame_pause_transition(WebKitWebFrame* frame, const gchar* name, double time, const gchar* element); + + WEBKIT_API bool + webkit_web_frame_pause_svg_animation(WebKitWebFrame* frame, const gchar* animationId, double time, const gchar* elementId); + + WEBKIT_API gchar* + webkit_web_frame_marker_text_for_list_item(WebKitWebFrame* frame, JSContextRef context, JSValueRef nodeObject); + + WEBKIT_API unsigned int + webkit_web_frame_number_of_active_animations(WebKitWebFrame* frame); + + WEBKIT_API void + webkit_web_frame_clear_main_frame_name(WebKitWebFrame* frame); + + WEBKIT_API AtkObject* + webkit_web_frame_get_focused_accessible_element(WebKitWebFrame* frame); + + WEBKIT_API gchar* + webkit_web_view_get_selected_text (WebKitWebView* web_view); + + WEBKIT_API void + webkit_web_view_set_group_name(WebKitWebView* web_view, const gchar* group_name); + + WEBKIT_API void + webkit_web_settings_add_extra_plugin_directory (WebKitWebView *web_view, const gchar* directory); + + GSList* + webkit_web_settings_get_enchant_dicts(WebKitWebView* web_view); + + bool + webkit_web_view_use_primary_for_paste(WebKitWebView* web_view); + + GHashTable* + webkit_history_items(void); + + WEBKIT_API void + webkit_gc_collect_javascript_objects(); + + WEBKIT_API void + webkit_gc_collect_javascript_objects_on_alternate_thread(gboolean waitUntilDone); + + WEBKIT_API gsize + webkit_gc_count_javascript_objects(); + + WEBKIT_API void + webkit_application_cache_set_maximum_size(unsigned long long size); + + WEBKIT_API unsigned int + webkit_worker_thread_count(); + + WEBKIT_API void + webkit_white_list_access_from_origin(const gchar* sourceOrigin, const gchar* destinationProtocol, const gchar* destinationHost, bool allowDestinationSubdomains); + + WEBKIT_API void + webkit_reset_origin_access_white_lists(); + + // WebKitWebDataSource private + WebKitWebDataSource* + webkit_web_data_source_new_with_loader(PassRefPtr); + + WEBKIT_API WebKitWebDatabase * + webkit_security_origin_get_web_database(WebKitSecurityOrigin* securityOrigin, const char* databaseName); + + WEBKIT_API void + webkit_web_frame_layout(WebKitWebFrame* frame); +} + +#endif