diff options
Diffstat (limited to 'WebKit/gtk/webkit/webkitwebframe.cpp')
-rw-r--r-- | WebKit/gtk/webkit/webkitwebframe.cpp | 353 |
1 files changed, 49 insertions, 304 deletions
diff --git a/WebKit/gtk/webkit/webkitwebframe.cpp b/WebKit/gtk/webkit/webkitwebframe.cpp index fcb5197..ca2b681 100644 --- a/WebKit/gtk/webkit/webkitwebframe.cpp +++ b/WebKit/gtk/webkit/webkitwebframe.cpp @@ -25,16 +25,11 @@ */ #include "config.h" - -#include "webkitenumtypes.h" #include "webkitwebframe.h" -#include "webkitwebview.h" -#include "webkitmarshal.h" -#include "webkitprivate.h" +#include "AXObjectCache.h" #include "AccessibilityObjectWrapperAtk.h" #include "AnimationController.h" -#include "AXObjectCache.h" #include "DOMObjectCache.h" #include "DocumentLoader.h" #include "DocumentLoaderGtk.h" @@ -42,29 +37,37 @@ #include "FrameLoaderClientGtk.h" #include "FrameTree.h" #include "FrameView.h" -#include <glib/gi18n-lib.h> #include "GCController.h" #include "GraphicsContext.h" #include "GtkVersioning.h" #include "HTMLFrameOwnerElement.h" +#include "JSDOMBinding.h" #include "JSDOMWindow.h" #include "JSElement.h" -#include "JSLock.h" #include "PrintContext.h" #include "RenderListItem.h" -#include "RenderView.h" #include "RenderTreeAsText.h" -#include "JSDOMBinding.h" +#include "RenderView.h" #include "ScriptController.h" #include "SubstituteData.h" +#include "webkitenumtypes.h" +#include "webkitnetworkrequestprivate.h" +#include "webkitnetworkresponseprivate.h" +#include "webkitmarshal.h" +#include "webkitprivate.h" +#include "webkitsecurityoriginprivate.h" +#include "webkitwebframeprivate.h" +#include "webkitwebview.h" +#include "webkitwebviewprivate.h" +#include <JavaScriptCore/APICast.h> +#include <atk/atk.h> +#include <glib/gi18n-lib.h> +#include <wtf/text/CString.h> + #if ENABLE(SVG) #include "SVGSMILElement.h" #endif -#include <atk/atk.h> -#include <JavaScriptCore/APICast.h> -#include <wtf/text/CString.h> - /** * SECTION:webkitwebframe * @short_description: The content of a #WebKitWebView @@ -378,7 +381,7 @@ static void webkit_web_frame_class_init(WebKitWebFrameClass* frameClass) static void webkit_web_frame_init(WebKitWebFrame* frame) { - WebKitWebFramePrivate* priv = WEBKIT_WEB_FRAME_GET_PRIVATE(frame); + WebKitWebFramePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(frame, WEBKIT_TYPE_WEB_FRAME, WebKitWebFramePrivate); // TODO: Move constructor code here. frame->priv = priv; @@ -401,7 +404,7 @@ WebKitWebFrame* webkit_web_frame_new(WebKitWebView* webView) WebKitWebFrame* frame = WEBKIT_WEB_FRAME(g_object_new(WEBKIT_TYPE_WEB_FRAME, NULL)); WebKitWebFramePrivate* priv = frame->priv; - WebKitWebViewPrivate* viewPriv = WEBKIT_WEB_VIEW_GET_PRIVATE(webView); + WebKitWebViewPrivate* viewPriv = webView->priv; priv->webView = webView; WebKit::FrameLoaderClient* client = new WebKit::FrameLoaderClient(frame); @@ -742,155 +745,6 @@ WebKitWebDataSource* webkit_web_frame_get_provisional_data_source(WebKitWebFrame return webkit_web_frame_get_data_source_from_core_loader(coreFrame->loader()->provisionalDocumentLoader()); } -/** - * webkit_web_frame_get_children: - * @frame: a #WebKitWebFrame - * - * Return value: child frames of @frame - */ -GSList* webkit_web_frame_get_children(WebKitWebFrame* frame) -{ - g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL); - - Frame* coreFrame = core(frame); - if (!coreFrame) - return NULL; - - GSList* children = NULL; - for (Frame* child = coreFrame->tree()->firstChild(); child; child = child->tree()->nextSibling()) { - FrameLoader* loader = child->loader(); - WebKit::FrameLoaderClient* client = static_cast<WebKit::FrameLoaderClient*>(loader->client()); - if (client) - children = g_slist_append(children, client->webFrame()); - } - - return children; -} - -/** - * webkit_web_frame_get_inner_text: - * @frame: a #WebKitWebFrame - * - * Return value: inner text of @frame - */ -gchar* webkit_web_frame_get_inner_text(WebKitWebFrame* frame) -{ - g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL); - - Frame* coreFrame = core(frame); - if (!coreFrame) - return g_strdup(""); - - FrameView* view = coreFrame->view(); - - if (view && view->layoutPending()) - view->layout(); - - Element* documentElement = coreFrame->document()->documentElement(); - String string = documentElement->innerText(); - return g_strdup(string.utf8().data()); -} - -/** - * webkit_web_frame_dump_render_tree: - * @frame: a #WebKitWebFrame - * - * Return value: Non-recursive render tree dump of @frame - */ -gchar* webkit_web_frame_dump_render_tree(WebKitWebFrame* frame) -{ - g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL); - - Frame* coreFrame = core(frame); - if (!coreFrame) - return g_strdup(""); - - FrameView* view = coreFrame->view(); - - if (view && view->layoutPending()) - view->layout(); - - String string = externalRepresentation(coreFrame); - return g_strdup(string.utf8().data()); -} - -/** - * webkit_web_frame_counter_value_for_element_by_id: - * @frame: a #WebKitWebFrame - * @id: an element ID string - * - * Return value: The counter value of element @id in @frame - */ -gchar* webkit_web_frame_counter_value_for_element_by_id(WebKitWebFrame* frame, const gchar* id) -{ - g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL); - - Frame* coreFrame = core(frame); - if (!coreFrame) - return 0; - - Element* coreElement = coreFrame->document()->getElementById(AtomicString(id)); - if (!coreElement) - return 0; - String counterValue = counterValueForElement(coreElement); - return g_strdup(counterValue.utf8().data()); -} - -/** - * webkit_web_frame_page_number_for_element_by_id - * @frame: a #WebKitWebFrame - * @id: an element ID string - * @pageWidth: width of a page - * @pageHeight: height of a page - * - * Return value: The number of page where the specified element will be put - */ -int webkit_web_frame_page_number_for_element_by_id(WebKitWebFrame* frame, const gchar* id, float pageWidth, float pageHeight) -{ - g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL); - - Frame* coreFrame = core(frame); - if (!coreFrame) - return -1; - - Element* coreElement = coreFrame->document()->getElementById(AtomicString(id)); - if (!coreElement) - return -1; - return PrintContext::pageNumberForElement(coreElement, FloatSize(pageWidth, pageHeight)); -} - -/** - * webkit_web_frame_number_of_pages - * @frame: a #WebKitWebFrame - * @pageWidth: width of a page - * @pageHeight: height of a page - * - * Return value: The number of pages to be printed. - */ -int webkit_web_frame_number_of_pages(WebKitWebFrame* frame, float pageWidth, float pageHeight) -{ - g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL); - - Frame* coreFrame = core(frame); - if (!coreFrame) - return -1; - - return PrintContext::numberOfPages(coreFrame, FloatSize(pageWidth, pageHeight)); -} - -/** - * webkit_web_frame_get_pending_unload_event_count: - * @frame: a #WebKitWebFrame - * - * Return value: number of pending unload events - */ -guint webkit_web_frame_get_pending_unload_event_count(WebKitWebFrame* frame) -{ - g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0); - - return core(frame)->domWindow()->pendingUnloadEventListeners(); -} - static void begin_print_callback(GtkPrintOperation* op, GtkPrintContext* context, gpointer user_data) { PrintContext* printContext = reinterpret_cast<PrintContext*>(user_data); @@ -1001,81 +855,6 @@ void webkit_web_frame_print(WebKitWebFrame* frame) } } -bool webkit_web_frame_pause_animation(WebKitWebFrame* frame, const gchar* name, double time, const gchar* element) -{ - ASSERT(core(frame)); - Element* coreElement = core(frame)->document()->getElementById(AtomicString(element)); - if (!coreElement || !coreElement->renderer()) - return false; - return core(frame)->animation()->pauseAnimationAtTime(coreElement->renderer(), AtomicString(name), time); -} - -bool webkit_web_frame_pause_transition(WebKitWebFrame* frame, const gchar* name, double time, const gchar* element) -{ - ASSERT(core(frame)); - Element* coreElement = core(frame)->document()->getElementById(AtomicString(element)); - if (!coreElement || !coreElement->renderer()) - return false; - return core(frame)->animation()->pauseTransitionAtTime(coreElement->renderer(), AtomicString(name), time); -} - -bool webkit_web_frame_pause_svg_animation(WebKitWebFrame* frame, const gchar* animationId, double time, const gchar* elementId) -{ - ASSERT(core(frame)); -#if ENABLE(SVG) - Document* document = core(frame)->document(); - if (!document || !document->svgExtensions()) - return false; - Element* coreElement = document->getElementById(AtomicString(animationId)); - if (!coreElement || !SVGSMILElement::isSMILElement(coreElement)) - return false; - return document->accessSVGExtensions()->sampleAnimationAtTime(elementId, static_cast<SVGSMILElement*>(coreElement), time); -#else - return false; -#endif -} - -gchar* webkit_web_frame_marker_text_for_list_item(WebKitWebFrame* frame, JSContextRef context, JSValueRef nodeObject) -{ - JSC::ExecState* exec = toJS(context); - Element* element = toElement(toJS(exec, nodeObject)); - if (!element) - return 0; - - return g_strdup(markerTextForListItem(element).utf8().data()); -} - -unsigned int webkit_web_frame_number_of_active_animations(WebKitWebFrame* frame) -{ - Frame* coreFrame = core(frame); - if (!coreFrame) - return 0; - - AnimationController* controller = coreFrame->animation(); - if (!controller) - return 0; - - return controller->numberOfActiveAnimations(); -} - -void webkit_web_frame_suspend_animations(WebKitWebFrame* frame) -{ - Frame* coreFrame = core(frame); - if (!coreFrame) - return; - - coreFrame->animation()->suspendAnimations(); -} - -void webkit_web_frame_resume_animations(WebKitWebFrame* frame) -{ - Frame* coreFrame = core(frame); - if (!coreFrame) - return; - - coreFrame->animation()->resumeAnimations(); -} - gchar* webkit_web_frame_get_response_mime_type(WebKitWebFrame* frame) { Frame* coreFrame = core(frame); @@ -1100,56 +879,6 @@ WebKitLoadStatus webkit_web_frame_get_load_status(WebKitWebFrame* frame) return priv->loadStatus; } -void webkit_web_frame_clear_main_frame_name(WebKitWebFrame* frame) -{ - g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame)); - - core(frame)->tree()->clearName(); -} - -void webkit_gc_collect_javascript_objects() -{ - gcController().garbageCollectNow(); -} - -void webkit_gc_collect_javascript_objects_on_alternate_thread(gboolean waitUntilDone) -{ - gcController().garbageCollectOnAlternateThreadForDebugging(waitUntilDone); -} - -gsize webkit_gc_count_javascript_objects() -{ - JSC::JSLock lock(JSC::SilenceAssertionsOnly); - return JSDOMWindow::commonJSGlobalData()->heap.objectCount(); - -} - -AtkObject* webkit_web_frame_get_focused_accessible_element(WebKitWebFrame* frame) -{ - g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL); - -#if HAVE(ACCESSIBILITY) - if (!AXObjectCache::accessibilityEnabled()) - AXObjectCache::enableAccessibility(); - - WebKitWebFramePrivate* priv = frame->priv; - if (!priv->coreFrame || !priv->coreFrame->document()) - return NULL; - - RenderView* root = toRenderView(priv->coreFrame->document()->renderer()); - if (!root) - return NULL; - - AtkObject* wrapper = priv->coreFrame->document()->axObjectCache()->getOrCreate(root)->wrapper(); - if (!wrapper) - return NULL; - - return webkit_accessible_get_focused_element(WEBKIT_ACCESSIBLE(wrapper)); -#else - return NULL; -#endif -} - GtkPolicyType webkit_web_frame_get_horizontal_scrollbar_policy(WebKitWebFrame* frame) { g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), GTK_POLICY_AUTOMATIC); @@ -1216,19 +945,6 @@ WebKitSecurityOrigin* webkit_web_frame_get_security_origin(WebKitWebFrame* frame return priv->origin; } -void webkit_web_frame_layout(WebKitWebFrame* frame) -{ - Frame* coreFrame = core(frame); - if (!coreFrame) - return; - - FrameView* view = coreFrame->view(); - if (!view) - return; - - view->layout(); -} - /** * webkit_web_frame_get_network_response: * @frame: a #WebKitWebFrame @@ -1252,5 +968,34 @@ WebKitNetworkResponse* webkit_web_frame_get_network_response(WebKitWebFrame* fra if (!loader) return NULL; - return webkit_network_response_new_with_core_response(loader->response()); + return kitNew(loader->response()); +} + +namespace WebKit { + +WebKitWebView* getViewFromFrame(WebKitWebFrame* frame) +{ + WebKitWebFramePrivate* priv = frame->priv; + return priv->webView; +} + +WebCore::Frame* core(WebKitWebFrame* frame) +{ + if (!frame) + return 0; + + WebKitWebFramePrivate* priv = frame->priv; + return priv ? priv->coreFrame : 0; +} + +WebKitWebFrame* kit(WebCore::Frame* coreFrame) +{ + if (!coreFrame) + return 0; + + ASSERT(coreFrame->loader()); + WebKit::FrameLoaderClient* client = static_cast<WebKit::FrameLoaderClient*>(coreFrame->loader()->client()); + return client ? client->webFrame() : 0; +} + } |