Changeset 99179 in webkit


Ignore:
Timestamp:
Nov 3, 2011 6:26:39 AM (12 years ago)
Author:
commit-queue@webkit.org
Message:

[GTK][WEBKIT2] Add support for title property in WebKitWebView.
https://bugs.webkit.org/show_bug.cgi?id=68074

Patch by Nayan Kumar K <nayankk@motorola.com> on 2011-11-03
Reviewed by Philippe Normand.

Support for 'title' property is added in WebKitWebView.
Functions to get the value of this property is provided.

  • UIProcess/API/gtk/WebKitWebLoaderClient.cpp:

(didReceiveTitleForFrame): LoaderClient titleRecieve callback.
(webkitWebLoaderClientAttachLoaderClientToPage): Register didReceiveTitleForFrame callback.

  • UIProcess/API/gtk/WebKitWebView.cpp:

(webkitWebViewGetProperty): 'title' property get function.
(webkit_web_view_class_init): Register new property.
(webkitWebViewSetTitle): Notify WebKitWebView about title receive.
(webkit_web_view_get_title): API to get main frame title.

  • UIProcess/API/gtk/WebKitWebView.h: webkit_web_view_get_title API expose.
  • UIProcess/API/gtk/WebKitWebViewPrivate.h: Added private API.
  • UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp:

(testWebViewTitle): Test webkit_web_view_get_title API.
(beforeAll): Add testWebViewTitle test.

Location:
trunk/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r99178 r99179  
     12011-11-03  Nayan Kumar K  <nayankk@motorola.com>
     2
     3        [GTK][WEBKIT2] Add support for title property in WebKitWebView.
     4        https://bugs.webkit.org/show_bug.cgi?id=68074
     5
     6        Reviewed by Philippe Normand.
     7
     8        Support for 'title' property is added in WebKitWebView.
     9        Functions to get the value of this property is provided.
     10
     11        * UIProcess/API/gtk/WebKitWebLoaderClient.cpp:
     12        (didReceiveTitleForFrame): LoaderClient titleRecieve callback.
     13        (webkitWebLoaderClientAttachLoaderClientToPage): Register didReceiveTitleForFrame callback.
     14        * UIProcess/API/gtk/WebKitWebView.cpp:
     15        (webkitWebViewGetProperty): 'title' property get function.
     16        (webkit_web_view_class_init): Register new property.
     17        (webkitWebViewSetTitle): Notify WebKitWebView about title receive.
     18        (webkit_web_view_get_title): API to get main frame title.
     19        * UIProcess/API/gtk/WebKitWebView.h: webkit_web_view_get_title API expose.
     20        * UIProcess/API/gtk/WebKitWebViewPrivate.h: Added private API.
     21        * UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp:
     22        (testWebViewTitle): Test webkit_web_view_get_title API.
     23        (beforeAll): Add testWebViewTitle test.
     24
    1252011-11-03  Jesus Sanchez-Palencia  <jesus.palencia@openbossa.org>
    226
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebLoaderClient.cpp

    r99149 r99179  
    11/*
    22 * Copyright (C) 2011 Igalia S.L.
     3 * Portions Copyright (c) 2011 Motorola Mobility, Inc.  All rights reserved.
    34 *
    45 * This library is free software; you can redistribute it and/or
     
    132133}
    133134
     135static void didReceiveTitleForFrame(WKPageRef page, WKStringRef titleRef, WKFrameRef frameRef, WKTypeRef, const void*)
     136{
     137    if (!WKFrameIsMainFrame(frameRef))
     138        return;
     139
     140    webkitWebViewSetTitle(WEBKIT_WEB_VIEW(toImpl(page)->viewWidget()), toImpl(titleRef)->string().utf8());
     141}
     142
    134143static void didChangeProgress(WKPageRef page, const void* clientInfo)
    135144{
     
    157166        didFailLoadWithErrorForFrame,
    158167        didSameDocumentNavigationForFrame,
    159         0, // didReceiveTitleForFrame
     168        didReceiveTitleForFrame,
    160169        0, // didFirstLayoutForFrame
    161170        0, // didFirstVisuallyNonEmptyLayoutForFrame
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp

    r99176 r99179  
    4545
    4646    PROP_WEB_CONTEXT,
     47    PROP_TITLE,
    4748    PROP_ESTIMATED_LOAD_PROGRESS,
    4849    PROP_URI
     
    5152struct _WebKitWebViewPrivate {
    5253    WebKitWebContext* context;
     54    CString title;
    5355    CString customTextEncoding;
    5456    double estimatedLoadProgress;
     
    109111    case PROP_WEB_CONTEXT:
    110112        g_value_take_object(value, webView->priv->context);
     113        break;
     114    case PROP_TITLE:
     115        g_value_set_string(value, webView->priv->title.data());
    111116        break;
    112117    case PROP_ESTIMATED_LOAD_PROGRESS:
     
    157162                                                        WEBKIT_TYPE_WEB_CONTEXT,
    158163                                                        static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
     164
     165    /**
     166     * WebKitWebView:title:
     167     *
     168     * The main frame document title of this #WebKitWebView. If
     169     * the title has not been received yet, it will be %NULL.
     170     */
     171    g_object_class_install_property(gObjectClass,
     172                                    PROP_TITLE,
     173                                    g_param_spec_string("title",
     174                                                        "Title",
     175                                                        "Main frame document title",
     176                                                        0,
     177                                                        WEBKIT_PARAM_READABLE));
     178   
    159179    /**
    160180     * WebKitWebView:estimated-load-progress:
     
    190210}
    191211
     212void webkitWebViewSetTitle(WebKitWebView* webView, const CString& title)
     213{
     214    WebKitWebViewPrivate* priv = webView->priv;
     215    if (priv->title == title)
     216        return;
     217   
     218    priv->title = title;
     219    g_object_notify(G_OBJECT(webView), "title");
     220}
     221
    192222void webkitWebViewSetEstimatedLoadProgress(WebKitWebView* webView, double estimatedLoadProgress)
    193223{
     
    384414    WKPageLoadAlternateHTMLString(toAPI(page), htmlString.get(), baseURL.get(), unreachableURL.get());
    385415    webkitWebViewUpdateURI(webView);
     416}
     417
     418/**
     419 * webkit_web_view_get_title:
     420 * @web_view: a #WebKitWebView
     421 *
     422 * Gets the value of #WebKitWebView:title.
     423 * You can connect to #WebKitWebView::notify signal of @web_view to
     424 * be notified when the title has been received.
     425 *
     426 * Returns: The main frame document title of @web_view.
     427 */
     428const gchar* webkit_web_view_get_title(WebKitWebView* webView)
     429{
     430    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
     431
     432    return webView->priv->title.data();
    386433}
    387434
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h

    r99176 r99179  
    109109webkit_web_view_stop_loading                 (WebKitWebView             *web_view);
    110110
     111WEBKIT_API const gchar *
     112webkit_web_view_get_title                    (WebKitWebView             *web_view);
     113
    111114WEBKIT_API void
    112115webkit_web_view_reload                       (WebKitWebView             *web_view);
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h

    r98707 r99179  
    11/*
    22 * Copyright (C) 2011 Igalia S.L.
     3 * Portions Copyright (c) 2011 Motorola Mobility, Inc.  All rights reserved.
    34 *
    45 * Redistribution and use in source and binary forms, with or without
     
    2930#include "WebKitWebView.h"
    3031#include <WebKit2/WebKit2.h>
     32#include <wtf/text/CString.h>
    3133
    3234void webkitWebViewSetEstimatedLoadProgress(WebKitWebView*, double estimatedLoadProgress);
     35void webkitWebViewSetTitle(WebKitWebView*, const CString&);
    3336void webkitWebViewUpdateURI(WebKitWebView*);
    3437
  • trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt

    r99176 r99179  
    5858webkit_web_view_can_go_forward
    5959webkit_web_view_go_forward
     60webkit_web_view_get_title
    6061webkit_web_view_reload
    6162webkit_web_view_reload_bypass_cache
  • trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp

    r99176 r99179  
    117117}
    118118
     119static void testWebViewTitle(LoadTrackingTest* test, gconstpointer)
     120{
     121    g_assert(!webkit_web_view_get_title(test->m_webView));
     122    test->loadHtml("<html><head><title>Welcome to WebKit-GTK+!</title></head></html>", 0);
     123    test->waitUntilLoadFinished();
     124    g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, "Welcome to WebKit-GTK+!");
     125}
     126
    119127static void testWebViewReload(LoadTrackingTest* test, gconstpointer)
    120128{
     
    240248    LoadTrackingTest::add("WebKitWebLoaderClient", "load-alternate-content", testLoadAlternateContent);
    241249    LoadStopTrackingTest::add("WebKitWebView", "stop-loading", testLoadCancelled);
     250    LoadTrackingTest::add("WebKitWebView", "title", testWebViewTitle);
    242251    LoadTrackingTest::add("WebKitWebView", "progress", testLoadProgress);
    243252    LoadTrackingTest::add("WebKitWebView", "reload", testWebViewReload);
Note: See TracChangeset for help on using the changeset viewer.