Changeset 96136 in webkit


Ignore:
Timestamp:
Sep 27, 2011 11:32:55 AM (13 years ago)
Author:
Carlos Garcia Campos
Message:

[GTK] Use WebKitWebContext in WebKitWebView
https://bugs.webkit.org/show_bug.cgi?id=67990

Reviewed by Martin Robinson.

Use webkit_web_context_get_default() instead of
WKContextGetSharedProcessContext() and add API to create a view
with a given web context and to return the current context
associated to the view.

  • GNUmakefile.am: Add new files to compilation.
  • UIProcess/API/gtk/WebKitPrivate.h: Added.
  • UIProcess/API/gtk/WebKitWebContext.cpp:

(webkitWebContextGetWKContext): Private API to get the WKContext
wrapped by the WebKitWebContext.

  • UIProcess/API/gtk/WebKitWebContextPrivate.h: Added.
  • UIProcess/API/gtk/WebKitWebView.cpp:

(webkitWebViewConstructed): Create the webpage using the web
context of the view.
(webkitWebViewSetProperty):
(webkitWebViewGetProperty):
(webkit_web_view_init):
(webkit_web_view_class_init):
(webkit_web_view_new): Create a new view with the default context.
(webkit_web_view_new_with_context): Create a new view with the
given context.
(webkit_web_view_get_context): Return the context.

  • UIProcess/API/gtk/WebKitWebView.h:
  • UIProcess/API/gtk/tests/testwebview.c: Added.

(testWebViewDefaultContext):
(main):

Location:
trunk/Source/WebKit2
Files:
3 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r96133 r96136  
     12011-09-27  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] Use WebKitWebContext in WebKitWebView
     4        https://bugs.webkit.org/show_bug.cgi?id=67990
     5
     6        Reviewed by Martin Robinson.
     7
     8        Use webkit_web_context_get_default() instead of
     9        WKContextGetSharedProcessContext() and add API to create a view
     10        with a given web context and to return the current context
     11        associated to the view.
     12
     13        * GNUmakefile.am: Add new files to compilation.
     14        * UIProcess/API/gtk/WebKitPrivate.h: Added.
     15        * UIProcess/API/gtk/WebKitWebContext.cpp:
     16        (webkitWebContextGetWKContext): Private API to get the WKContext
     17        wrapped by the WebKitWebContext.
     18        * UIProcess/API/gtk/WebKitWebContextPrivate.h: Added.
     19        * UIProcess/API/gtk/WebKitWebView.cpp:
     20        (webkitWebViewConstructed): Create the webpage using the web
     21        context of the view.
     22        (webkitWebViewSetProperty):
     23        (webkitWebViewGetProperty):
     24        (webkit_web_view_init):
     25        (webkit_web_view_class_init):
     26        (webkit_web_view_new): Create a new view with the default context.
     27        (webkit_web_view_new_with_context): Create a new view with the
     28        given context.
     29        (webkit_web_view_get_context): Return the context.
     30        * UIProcess/API/gtk/WebKitWebView.h:
     31        * UIProcess/API/gtk/tests/testwebview.c: Added.
     32        (testWebViewDefaultContext):
     33        (main):
     34
    1352011-09-27  Carlos Garcia Campos  <cgarcia@igalia.com>
    236
  • trunk/Source/WebKit2/GNUmakefile.am

    r96133 r96136  
    454454        Source/WebKit2/UIProcess/API/gtk/PageClientImpl.h \
    455455        Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp \
     456        Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h \
    456457        Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h \
    457458        Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp \
     459        Source/WebKit2/UIProcess/API/gtk/WebKitWebContextPrivate.h \
    458460        Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h \
    459461        Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp \
     
    988990# Unit tests
    989991TEST_PROGS += \
    990         Programs/unittests/webkit2/testwebcontext
     992        Programs/unittests/webkit2/testwebcontext \
     993        Programs/unittests/webkit2/testwebview
    991994
    992995noinst_PROGRAMS += $(TEST_PROGS)
     
    10181021Programs_unittests_webkit2_testwebcontext_LDADD = $(webkit2_tests_ldadd)
    10191022Programs_unittests_webkit2_testwebcontext_LDFLAGS = $(webkit2_tests_ldflags)
     1023
     1024Programs_unittests_webkit2_testwebview_SOURCES = Source/WebKit2/UIProcess/API/gtk/tests/testwebview.c
     1025Programs_unittests_webkit2_testwebview_CFLAGS = $(webkit2_tests_cflags)
     1026Programs_unittests_webkit2_testwebview_LDADD = $(webkit2_tests_ldadd)
     1027Programs_unittests_webkit2_testwebview_LDFLAGS = $(webkit2_tests_ldflags)
    10201028
    10211029# WebKitWebProcess
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp

    r96133 r96136  
    2121#include "WebKitWebContext.h"
    2222
     23#include "WebKitWebContextPrivate.h"
    2324#include <WebKit2/WKContext.h>
    2425#include <WebKit2/WKType.h>
     
    7576}
    7677
     78WKContextRef webkitWebContextGetWKContext(WebKitWebContext* context)
     79{
     80    g_assert(WEBKIT_IS_WEB_CONTEXT(context));
    7781
     82    return context->priv->context;
     83}
     84
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp

    r95901 r96136  
    2222
    2323#include "NotImplemented.h"
     24#include "WebKitWebContextPrivate.h"
    2425#include "WebKitWebViewBasePrivate.h"
     26#include "WebKitPrivate.h"
    2527#include "WebPageProxy.h"
    2628#include <WebKit2/WKBase.h>
     
    3032using namespace WebCore;
    3133
     34enum {
     35    PROP_0,
     36
     37    PROP_WEB_CONTEXT
     38};
     39
     40struct _WebKitWebViewPrivate {
     41    WebKitWebContext* context;
     42};
     43
    3244G_DEFINE_TYPE(WebKitWebView, webkit_web_view, WEBKIT_TYPE_WEB_VIEW_BASE)
     45
     46static void webkitWebViewConstructed(GObject* object)
     47{
     48    WebKitWebView* webView = WEBKIT_WEB_VIEW(object);
     49
     50    webkitWebViewBaseCreateWebPage(WEBKIT_WEB_VIEW_BASE(webView),
     51                                   webkitWebContextGetWKContext(webView->priv->context), 0);
     52}
     53
     54static void webkitWebViewSetProperty(GObject* object, guint propId, const GValue* value, GParamSpec* paramSpec)
     55{
     56    WebKitWebView* webView = WEBKIT_WEB_VIEW(object);
     57
     58    switch (propId) {
     59    case PROP_WEB_CONTEXT:
     60        webView->priv->context = WEBKIT_WEB_CONTEXT(g_value_get_object(value));
     61        break;
     62    default:
     63        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
     64    }
     65}
     66
     67static void webkitWebViewGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec)
     68{
     69    WebKitWebView* webView = WEBKIT_WEB_VIEW(object);
     70
     71    switch (propId) {
     72    case PROP_WEB_CONTEXT:
     73        g_value_take_object(value, webView->priv->context);
     74        break;
     75    default:
     76        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
     77    }
     78}
    3379
    3480static void webkit_web_view_init(WebKitWebView* webView)
    3581{
    36     webkitWebViewBaseCreateWebPage(WEBKIT_WEB_VIEW_BASE(webView), WKContextGetSharedProcessContext(), 0);
     82    webView->priv = G_TYPE_INSTANCE_GET_PRIVATE(webView, WEBKIT_TYPE_WEB_VIEW, WebKitWebViewPrivate);
    3783}
    3884
    3985static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
    4086{
     87    GObjectClass* gObjectClass = G_OBJECT_CLASS(webViewClass);
     88
     89    gObjectClass->constructed = webkitWebViewConstructed;
     90    gObjectClass->set_property = webkitWebViewSetProperty;
     91    gObjectClass->get_property = webkitWebViewGetProperty;
     92
     93    g_type_class_add_private(webViewClass, sizeof(WebKitWebViewPrivate));
     94
     95    /**
     96     * WebKitWebView:web-context:
     97     *
     98     * The #WebKitWebContext of the view.
     99     */
     100    g_object_class_install_property(gObjectClass,
     101                                    PROP_WEB_CONTEXT,
     102                                    g_param_spec_object("web-context",
     103                                                        "Web Context",
     104                                                        "The web context for the view",
     105                                                        WEBKIT_TYPE_WEB_CONTEXT,
     106                                                        static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
    41107}
    42108
    43109// Public API.
     110
     111/**
     112 * webkit_web_view_new:
     113 *
     114 * Creates a new #WebKitWebView with the default #WebKitWebContext.
     115 * See also webkit_web_view_new_with_context().
     116 *
     117 * Returns: The newly created #WebKitWebView widget
     118 */
    44119GtkWidget* webkit_web_view_new()
    45120{
    46     return GTK_WIDGET(WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, NULL)));
     121    return webkit_web_view_new_with_context(webkit_web_context_get_default());
     122}
     123
     124/**
     125 * webkit_web_view_new_with_context:
     126 * @context: the #WebKitWebContext to be used by the #WebKitWebView
     127 *
     128 * Creates a new #WebKitWebView with the given #WebKitWebContext.
     129 *
     130 * Returns: The newly created #WebKitWebView widget
     131 */
     132GtkWidget* webkit_web_view_new_with_context(WebKitWebContext* context)
     133{
     134    g_return_val_if_fail(WEBKIT_IS_WEB_CONTEXT(context), 0);
     135
     136    return GTK_WIDGET(g_object_new(WEBKIT_TYPE_WEB_VIEW, "web-context", context, NULL));
     137}
     138
     139/**
     140 * webkit_web_view_get_context:
     141 * @web_view: a #WebKitWebView
     142 *
     143 * Gets the web context of @web_view.
     144 *
     145 * Returns: (transfer-none): the #WebKitWebContext of the view
     146 */
     147WebKitWebContext* webkit_web_view_get_context(WebKitWebView *webView)
     148{
     149    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
     150
     151    return webView->priv->context;
    47152}
    48153
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h

    r96121 r96136  
    2424#define WebKitWebView_h
    2525
     26#include <webkit2/WebKitWebContext.h>
    2627#include <webkit2/WebKitWebViewBase.h>
    2728
     
    6162
    6263WK_EXPORT GType
    63 webkit_web_view_get_type   (void);
     64webkit_web_view_get_type         (void);
    6465
    6566WK_EXPORT GtkWidget *
    66 webkit_web_view_new        (void);
     67webkit_web_view_new              (void);
     68
     69WK_EXPORT GtkWidget *
     70webkit_web_view_new_with_context (WebKitWebContext *context);
     71
     72WK_EXPORT WebKitWebContext *
     73webkit_web_view_get_context      (WebKitWebView    *web_view);
    6774
    6875WK_EXPORT void
    69 webkit_web_view_load_uri   (WebKitWebView *webView,
    70                             const gchar   *uri);
     76webkit_web_view_load_uri         (WebKitWebView    *webView,
     77                                  const gchar      *uri);
    7178
    7279WK_EXPORT void
    73 webkit_web_view_go_back    (WebKitWebView *webView);
     80webkit_web_view_go_back          (WebKitWebView    *webView);
    7481
    7582WK_EXPORT void
    76 webkit_web_view_go_forward (WebKitWebView *webView);
     83webkit_web_view_go_forward       (WebKitWebView    *webView);
    7784
    7885G_END_DECLS
Note: See TracChangeset for help on using the changeset viewer.