Changeset 149117 in webkit


Ignore:
Timestamp:
Apr 25, 2013 9:46:55 AM (11 years ago)
Author:
Carlos Garcia Campos
Message:

[GTK] Add WebKitWebViewGroup to WebKit2 GTK+ API
https://bugs.webkit.org/show_bug.cgi?id=111265

Reviewed by Anders Carlsson.

In the current API the settings are always shared by all web
views, because they are always created on the default page
group. This makes impossible to have different settings on
different web views. Expose the page group in the API,
so that users can create web views on a group different than the
default one to have their own settings.

  • GNUmakefile.list.am: Add new files to compilation.
  • UIProcess/API/gtk/WebKitSettings.cpp:

(webkitSettingsGetPreferences): Helper private method to get the
WebPreferences wrapped by a WebKitSettings object.

  • UIProcess/API/gtk/WebKitSettingsPrivate.h:
  • UIProcess/API/gtk/WebKitWebContext.cpp:

(_WebKitWebContextPrivate): Add a default WebKitWebViewGroup.
(webkitWebContextCreatePageForWebView): Create the WebPageProxy
with the WebPageGroup of the given WebKitWebViewGroup.
(webkitWebContextGetDefaultWebViewGroup): Helper private method to
get the default WebKitWebViewGroup.

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

(_WebKitWebViewPrivate): Add a WebKitWebViewGroup in case the view
is created with a group.
(webkitWebViewUpdateSettings): Keep a reference of the group
settings to be able to disconnect the signals when the settings
object is replaced in the view group and connect to the signals
for the custom settings.
(webkitWebViewSettingsChanged): Disconnect the signals for the
previous settings and set the new settings.
(webkitWebViewDisconnectSettingsChangedSignalHandler): Disconnect
notify::settings signal of WebKitWebViewGroup.
(webkitWebViewConstructed): Pass the current WebKitWebViewGroup to
webkitWebContextCreatePageForWebView().
(webkitWebViewSetProperty): Add setter for group property.
(webkitWebViewGetProperty): Add getter for group property.
(webkitWebViewDispose): Call
webkitWebViewDisconnectSettingsChangedSignalHandler().
(webkit_web_view_class_init): Add WebKitWebView:group property.
(webkitWebViewHandleAuthenticationChallenge): Use
webkit_web_view_get_settings().
(webkit_web_view_new_with_group): Create a new web view with the
given WebKitWebViewGroup.
(webkit_web_view_get_group): Return the current WebKitWebViewGroup
or the default one if the view was not created with
webkit_web_view_new_with_group().
(webkit_web_view_set_settings): Set the settings of the current
WebKitWebViewGroup.
(webkit_web_view_get_settings): Get the settings of the current
WebKitWebViewGroup.
(webkit_web_view_set_zoom_level): Use
webkit_web_view_get_settings().
(webkit_web_view_get_zoom_level): Ditto.

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

(_WebKitWebViewGroupPrivate):
(webkitWebViewGroupSetProperty):
(webkitWebViewGroupGetProperty):
(webkitWebViewGroupConstructed):
(webkit_web_view_group_class_init):
(webkitWebViewGroupAttachSettingsToPageGroup): Set the
WebPreferences of the current WebKitSettings to the WebPageGroup.
(webkitWebViewGroupCreate): Create a new WebKitWebViewGroup for
the given WebPageGroup.
(webkitWebViewGroupGetPageGroup): Helper private method to get the
WebPageGroup wrapped by the WebKitWebViewGroup.
(webkit_web_view_group_new): Create a new WebKitWebViewGroup.
(webkit_web_view_group_get_name): Return the name of a
WebKitWebViewGroup.
(webkit_web_view_group_get_settings): Get the settings of a
WebKitWebViewGroup.
(webkit_web_view_group_set_settings): Set new settings of a
WebKitWebViewGroup.

  • UIProcess/API/gtk/WebKitWebViewGroup.h: Added.

(_WebKitWebViewGroup):
(_WebKitWebViewGroupClass):

  • UIProcess/API/gtk/WebKitWebViewGroupPrivate.h: Added.
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add

WebKitWebViewGroup section.

  • UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols.
  • UIProcess/API/gtk/docs/webkit2gtk.types: Add

webkit_web_view_group_get_type.

  • UIProcess/API/gtk/tests/GNUmakefile.am: Add new files to

compilation.

  • UIProcess/API/gtk/tests/TestWebKitWebView.cpp:

(testWebViewSettings): We can't watch settings in the default view
group anymore, because they are not released with the web view but
with the web context that is freed after the Test destructor.

  • UIProcess/API/gtk/tests/TestWebKitWebViewGroup.cpp: Added.

(testWebViewGroupDefault):
(testWebViewGroupNewGroup):
(testWebViewNewWithGroup):
(testWebViewGroupSettings):
(beforeAll):
(afterAll):

  • UIProcess/API/gtk/webkit2.h: Include WebKitWebViewGroup.h.
Location:
trunk/Source/WebKit2
Files:
4 added
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r149107 r149117  
     12013-04-25  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] Add WebKitWebViewGroup to WebKit2 GTK+ API
     4        https://bugs.webkit.org/show_bug.cgi?id=111265
     5
     6        Reviewed by Anders Carlsson.
     7
     8        In the current API the settings are always shared by all web
     9        views, because they are always created on the default page
     10        group. This makes impossible to have different settings on
     11        different web views. Expose the page group in the API,
     12        so that users can create web views on a group different than the
     13        default one to have their own settings.
     14
     15        * GNUmakefile.list.am: Add new files to compilation.
     16        * UIProcess/API/gtk/WebKitSettings.cpp:
     17        (webkitSettingsGetPreferences): Helper private method to get the
     18        WebPreferences wrapped by a WebKitSettings object.
     19        * UIProcess/API/gtk/WebKitSettingsPrivate.h:
     20        * UIProcess/API/gtk/WebKitWebContext.cpp:
     21        (_WebKitWebContextPrivate): Add a default WebKitWebViewGroup.
     22        (webkitWebContextCreatePageForWebView): Create the WebPageProxy
     23        with the WebPageGroup of the given WebKitWebViewGroup.
     24        (webkitWebContextGetDefaultWebViewGroup): Helper private method to
     25        get the default WebKitWebViewGroup.
     26        * UIProcess/API/gtk/WebKitWebContextPrivate.h:
     27        * UIProcess/API/gtk/WebKitWebView.cpp:
     28        (_WebKitWebViewPrivate): Add a WebKitWebViewGroup in case the view
     29        is created with a group.
     30        (webkitWebViewUpdateSettings): Keep a reference of the group
     31        settings to be able to disconnect the signals when the settings
     32        object is replaced in the view group and connect to the signals
     33        for the custom settings.
     34        (webkitWebViewSettingsChanged): Disconnect the signals for the
     35        previous settings and set the new settings.
     36        (webkitWebViewDisconnectSettingsChangedSignalHandler): Disconnect
     37        notify::settings signal of WebKitWebViewGroup.
     38        (webkitWebViewConstructed): Pass the current WebKitWebViewGroup to
     39        webkitWebContextCreatePageForWebView().
     40        (webkitWebViewSetProperty): Add setter for group property.
     41        (webkitWebViewGetProperty): Add getter for group property.
     42        (webkitWebViewDispose): Call
     43        webkitWebViewDisconnectSettingsChangedSignalHandler().
     44        (webkit_web_view_class_init): Add WebKitWebView:group property.
     45        (webkitWebViewHandleAuthenticationChallenge): Use
     46        webkit_web_view_get_settings().
     47        (webkit_web_view_new_with_group): Create a new web view with the
     48        given WebKitWebViewGroup.
     49        (webkit_web_view_get_group): Return the current WebKitWebViewGroup
     50        or the default one if the view was not created with
     51        webkit_web_view_new_with_group().
     52        (webkit_web_view_set_settings): Set the settings of the current
     53        WebKitWebViewGroup.
     54        (webkit_web_view_get_settings): Get the settings of the current
     55        WebKitWebViewGroup.
     56        (webkit_web_view_set_zoom_level): Use
     57        webkit_web_view_get_settings().
     58        (webkit_web_view_get_zoom_level): Ditto.
     59        * UIProcess/API/gtk/WebKitWebView.h:
     60        * UIProcess/API/gtk/WebKitWebViewGroup.cpp: Added.
     61        (_WebKitWebViewGroupPrivate):
     62        (webkitWebViewGroupSetProperty):
     63        (webkitWebViewGroupGetProperty):
     64        (webkitWebViewGroupConstructed):
     65        (webkit_web_view_group_class_init):
     66        (webkitWebViewGroupAttachSettingsToPageGroup): Set the
     67        WebPreferences of the current WebKitSettings to the WebPageGroup.
     68        (webkitWebViewGroupCreate): Create a new WebKitWebViewGroup for
     69        the given WebPageGroup.
     70        (webkitWebViewGroupGetPageGroup): Helper private method to get the
     71        WebPageGroup wrapped by the WebKitWebViewGroup.
     72        (webkit_web_view_group_new): Create a new WebKitWebViewGroup.
     73        (webkit_web_view_group_get_name): Return the name of a
     74        WebKitWebViewGroup.
     75        (webkit_web_view_group_get_settings): Get the settings of a
     76        WebKitWebViewGroup.
     77        (webkit_web_view_group_set_settings): Set new settings of a
     78        WebKitWebViewGroup.
     79        * UIProcess/API/gtk/WebKitWebViewGroup.h: Added.
     80        (_WebKitWebViewGroup):
     81        (_WebKitWebViewGroupClass):
     82        * UIProcess/API/gtk/WebKitWebViewGroupPrivate.h: Added.
     83        * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add
     84        WebKitWebViewGroup section.
     85        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols.
     86        * UIProcess/API/gtk/docs/webkit2gtk.types: Add
     87        webkit_web_view_group_get_type.
     88        * UIProcess/API/gtk/tests/GNUmakefile.am: Add new files to
     89        compilation.
     90        * UIProcess/API/gtk/tests/TestWebKitWebView.cpp:
     91        (testWebViewSettings): We can't watch settings in the default view
     92        group anymore, because they are not released with the web view but
     93        with the web context that is freed after the Test destructor.
     94        * UIProcess/API/gtk/tests/TestWebKitWebViewGroup.cpp: Added.
     95        (testWebViewGroupDefault):
     96        (testWebViewGroupNewGroup):
     97        (testWebViewNewWithGroup):
     98        (testWebViewGroupSettings):
     99        (beforeAll):
     100        (afterAll):
     101        * UIProcess/API/gtk/webkit2.h: Include WebKitWebViewGroup.h.
     102
    11032013-04-25  Jer Noble  <jer.noble@apple.com>
    2104
  • trunk/Source/WebKit2/GNUmakefile.list.am

    r148679 r149117  
    130130        $(WebKit2)/UIProcess/API/gtk/WebKitWebView.h \
    131131        $(WebKit2)/UIProcess/API/gtk/WebKitWebViewBase.h \
     132        $(WebKit2)/UIProcess/API/gtk/WebKitWebViewGroup.h \
    132133        $(WebKit2)/UIProcess/API/gtk/WebKitWindowProperties.h \
    133134        $(WebKit2)/UIProcess/API/gtk/webkit2.h
     
    776777        Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp \
    777778        Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h \
     779        Source/WebKit2/UIProcess/API/gtk/WebKitWebViewGroup.h \
     780        Source/WebKit2/UIProcess/API/gtk/WebKitWebViewGroup.cpp \
     781        Source/WebKit2/UIProcess/API/gtk/WebKitWebViewGroupPrivate.h \
    778782        Source/WebKit2/UIProcess/API/gtk/WebKitWindowProperties.cpp \
    779783        Source/WebKit2/UIProcess/API/gtk/WebKitWindowProperties.h \
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp

    r141040 r149117  
    3434#include "WebKitPrivate.h"
    3535#include "WebKitSettingsPrivate.h"
    36 #include "WebPageGroup.h"
    37 #include "WebPageProxy.h"
    38 #include "WebPreferences.h"
    3936#include <WebCore/UserAgentGtk.h>
    4037#include <glib/gi18n-lib.h>
     
    7370/**
    7471 * SECTION:WebKitSettings
    75  * @short_description: Control the behaviour of a #WebKitWebView
    76  *
    77  * #WebKitSettings can be applied to a #WebKitWebView to control text charset,
    78  * color, font sizes, printing mode, script support, loading of images and various other things.
     72 * @short_description: Control the behaviour of #WebKitWebView<!-- -->s
     73 * @see_also: #WebKitWebViewGroup, #WebKitWebView
     74 *
     75 * #WebKitSettings can be applied to a #WebKitWebViewGroup to control text charset,
     76 * color, font sizes, printing mode, script support, loading of images and various
     77 * other things on the #WebKitWebView<!-- -->s of the group.
    7978 * After creation, a #WebKitSettings object contains default settings.
    8079 *
    8180 * <informalexample><programlisting>
    82  * /<!-- -->* Create a new #WebKitSettings and disable JavaScript. *<!-- -->/
    83  * WebKitSettings *settings = webkit_settings_new ();
    84  * g_object_set (G_OBJECT (settings), "enable-javascript", FALSE, NULL);
    85  *
    86  * webkit_web_view_set_settings (WEBKIT_WEB_VIEW (my_webview), settings);
     81 * /<!-- -->* Disable JavaScript. *<!-- -->/
     82 * WebKitSettings *settings = webkit_web_view_group_get_settings (my_view_group);
     83 * webkit_settings_set_enable_javascript (settings, FALSE);
     84 *
    8785 * </programlisting></informalexample>
    8886 */
     
    10761074}
    10771075
    1078 void webkitSettingsAttachSettingsToPage(WebKitSettings* settings, WebPageProxy* page)
    1079 {
    1080     page->pageGroup()->setPreferences(settings->priv->preferences.get());
    1081     page->setCanRunModal(settings->priv->allowModalDialogs);
    1082     page->setCustomUserAgent(String::fromUTF8(settings->priv->userAgent.data()));
     1076WebPreferences* webkitSettingsGetPreferences(WebKitSettings* settings)
     1077{
     1078    return settings->priv->preferences.get();
    10831079}
    10841080
     
    10871083 *
    10881084 * Creates a new #WebKitSettings instance with default values. It must
    1089  * be manually attached to a #WebKitWebView.
     1085 * be manually attached to a #WebKitWebViewGroup.
    10901086 * See also webkit_settings_new_with_settings().
    10911087 *
     
    11041100 *
    11051101 * Creates a new #WebKitSettings instance with the given settings. It must
    1106  * be manually attached to a #WebKitWebView.
     1102 * be manually attached to a #WebKitWebViewGroup.
    11071103 *
    11081104 * Returns: a new #WebKitSettings instance.
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettingsPrivate.h

    r131760 r149117  
    2828
    2929#include "WebKitSettings.h"
     30#include "WebPreferences.h"
    3031
    31 void webkitSettingsAttachSettingsToPage(WebKitSettings*, WebKit::WebPageProxy*);
     32WebKit::WebPreferences* webkitSettingsGetPreferences(WebKitSettings*);
    3233
    3334#endif // WebKitSettingsPrivate_h
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp

    r148887 r149117  
    3737#include "WebKitWebContextPrivate.h"
    3838#include "WebKitWebViewBasePrivate.h"
     39#include "WebKitWebViewGroupPrivate.h"
    3940#include "WebResourceCacheManagerProxy.h"
    4041#include <WebCore/FileSystem.h>
     
    144145
    145146    HashMap<uint64_t, WebKitWebView*> webViews;
     147    GRefPtr<WebKitWebViewGroup> defaultWebViewGroup;
    146148};
    147149
     
    875877}
    876878
    877 void webkitWebContextCreatePageForWebView(WebKitWebContext* context, WebKitWebView* webView)
     879void webkitWebContextCreatePageForWebView(WebKitWebContext* context, WebKitWebView* webView, WebKitWebViewGroup* webViewGroup)
    878880{
    879881    WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(webView);
    880     webkitWebViewBaseCreateWebPage(webViewBase, context->priv->context.get(), 0);
     882    WebPageGroup* pageGroup = webViewGroup ? webkitWebViewGroupGetPageGroup(webViewGroup) : 0;
     883    webkitWebViewBaseCreateWebPage(webViewBase, context->priv->context.get(), pageGroup);
     884
    881885    WebPageProxy* page = webkitWebViewBaseGetPage(webViewBase);
    882886    context->priv->webViews.set(page->pageID(), webView);
     887
     888    if (!pageGroup && !context->priv->defaultWebViewGroup)
     889        context->priv->defaultWebViewGroup = adoptGRef(webkitWebViewGroupCreate(page->pageGroup()));
    883890}
    884891
     
    893900    return page ? context->priv->webViews.get(page->pageID()) : 0;
    894901}
     902
     903WebKitWebViewGroup* webkitWebContextGetDefaultWebViewGroup(WebKitWebContext* context)
     904{
     905    return context->priv->defaultWebViewGroup.get();
     906}
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContextPrivate.h

    r141096 r149117  
    3232#include "WebKitURISchemeRequest.h"
    3333#include "WebKitWebContext.h"
     34#include "WebKitWebViewGroup.h"
    3435#include "WebSoupRequestManagerProxy.h"
    3536
     
    4344void webkitWebContextDidFailToLoadURIRequest(WebKitWebContext*, uint64_t requestID);
    4445void webkitWebContextDidFinishURIRequest(WebKitWebContext*, uint64_t requestID);
    45 void webkitWebContextCreatePageForWebView(WebKitWebContext*, WebKitWebView*);
     46void webkitWebContextCreatePageForWebView(WebKitWebContext*, WebKitWebView*, WebKitWebViewGroup*);
    4647void webkitWebContextWebViewDestroyed(WebKitWebContext*, WebKitWebView*);
    4748WebKitWebView* webkitWebContextGetWebViewForPage(WebKitWebContext*, WebKit::WebPageProxy*);
     49WebKitWebViewGroup* webkitWebContextGetDefaultWebViewGroup(WebKitWebContext*);
    4850
    4951#endif // WebKitWebContextPrivate_h
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp

    r148966 r149117  
    4848#include "WebKitResponsePolicyDecision.h"
    4949#include "WebKitScriptDialogPrivate.h"
    50 #include "WebKitSettingsPrivate.h"
    5150#include "WebKitUIClient.h"
    5251#include "WebKitURIRequestPrivate.h"
     
    5655#include "WebKitWebResourcePrivate.h"
    5756#include "WebKitWebViewBasePrivate.h"
     57#include "WebKitWebViewGroupPrivate.h"
    5858#include "WebKitWebViewPrivate.h"
    5959#include "WebKitWindowPropertiesPrivate.h"
     
    127127
    128128    PROP_WEB_CONTEXT,
     129    PROP_GROUP,
    129130    PROP_TITLE,
    130131    PROP_ESTIMATED_LOAD_PROGRESS,
     
    164165    GRefPtr<WebKitBackForwardList> backForwardList;
    165166    GRefPtr<WebKitSettings> settings;
     167    unsigned long settingsChangedHandlerID;
     168    GRefPtr<WebKitWebViewGroup> group;
    166169    GRefPtr<WebKitWindowProperties> windowProperties;
    167170
     
    364367}
    365368
    366 static void webkitWebViewSetSettings(WebKitWebView* webView, WebKitSettings* settings)
    367 {
    368     webView->priv->settings = settings;
    369     webkitSettingsAttachSettingsToPage(webView->priv->settings.get(), getPage(webView));
     369static void webkitWebViewUpdateSettings(WebKitWebView* webView)
     370{
     371    // We keep a ref of the current settings to disconnect the signals when settings change in the group.
     372    webView->priv->settings = webkit_web_view_get_settings(webView);
     373
     374    WebKitSettings* settings = webView->priv->settings.get();
     375    WebPageProxy* page = getPage(webView);
     376    page->setCanRunModal(webkit_settings_get_allow_modal_dialogs(settings));
     377    page->setCustomUserAgent(String::fromUTF8(webkit_settings_get_user_agent(settings)));
     378
    370379    g_signal_connect(settings, "notify::allow-modal-dialogs", G_CALLBACK(allowModalDialogsChanged), webView);
    371380    g_signal_connect(settings, "notify::zoom-text-only", G_CALLBACK(zoomTextOnlyChanged), webView);
     
    379388    g_signal_handlers_disconnect_by_func(settings, reinterpret_cast<gpointer>(zoomTextOnlyChanged), webView);
    380389    g_signal_handlers_disconnect_by_func(settings, reinterpret_cast<gpointer>(userAgentChanged), webView);
     390}
     391
     392static void webkitWebViewSettingsChanged(WebKitWebViewGroup* group, GParamSpec*, WebKitWebView* webView)
     393{
     394    webkitWebViewDisconnectSettingsSignalHandlers(webView);
     395    webkitWebViewUpdateSettings(webView);
     396}
     397
     398static void webkitWebViewDisconnectSettingsChangedSignalHandler(WebKitWebView* webView)
     399{
     400    WebKitWebViewPrivate* priv = webView->priv;
     401    if (priv->settingsChangedHandlerID)
     402        g_signal_handler_disconnect(webkit_web_view_get_group(webView), priv->settingsChangedHandlerID);
     403    priv->settingsChangedHandlerID = 0;
    381404}
    382405
     
    463486    WebKitWebView* webView = WEBKIT_WEB_VIEW(object);
    464487    WebKitWebViewPrivate* priv = webView->priv;
    465     webkitWebContextCreatePageForWebView(priv->context, webView);
     488    webkitWebContextCreatePageForWebView(priv->context, webView, priv->group.get());
    466489
    467490    webkitWebViewBaseSetDownloadRequestHandler(WEBKIT_WEB_VIEW_BASE(webView), webkitWebViewHandleDownloadRequest);
     
    477500    priv->windowProperties = adoptGRef(webkitWindowPropertiesCreate());
    478501
    479     GRefPtr<WebKitSettings> settings = adoptGRef(webkit_settings_new());
    480     webkitWebViewSetSettings(webView, settings.get());
     502    webkitWebViewUpdateSettings(webView);
     503    priv->settingsChangedHandlerID =
     504        g_signal_connect(webkit_web_view_get_group(webView), "notify::settings", G_CALLBACK(webkitWebViewSettingsChanged), webView);
    481505}
    482506
     
    489513        gpointer webContext = g_value_get_object(value);
    490514        webView->priv->context = webContext ? WEBKIT_WEB_CONTEXT(webContext) : webkit_web_context_get_default();
     515        break;
     516    }
     517    case PROP_GROUP: {
     518        gpointer group = g_value_get_object(value);
     519        webView->priv->group = group ? WEBKIT_WEB_VIEW_GROUP(group) : 0;
    491520        break;
    492521    }
     
    509538    case PROP_WEB_CONTEXT:
    510539        g_value_take_object(value, webView->priv->context);
     540        break;
     541    case PROP_GROUP:
     542        g_value_set_object(value, webkit_web_view_get_group(webView));
    511543        break;
    512544    case PROP_TITLE:
     
    541573    webkitWebViewCancelFaviconRequest(webView);
    542574    webkitWebViewDisconnectMainResourceResponseChangedSignalHandler(webView);
     575    webkitWebViewDisconnectSettingsChangedSignalHandler(webView);
    543576    webkitWebViewDisconnectSettingsSignalHandlers(webView);
    544577    webkitWebViewDisconnectFaviconDatabaseSignalHandlers(webView);
     
    586619                                                        WEBKIT_TYPE_WEB_CONTEXT,
    587620                                                        static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
     621    /**
     622     * WebKitWebView:group:
     623     *
     624     * The #WebKitWebViewGroup of the view.
     625     */
     626    g_object_class_install_property(
     627        gObjectClass,
     628        PROP_GROUP,
     629        g_param_spec_object(
     630            "group",
     631            _("WebView Group"),
     632            _("The WebKitWebViewGroup of the view"),
     633            WEBKIT_TYPE_WEB_VIEW_GROUP,
     634            static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
    588635
    589636    /**
     
    16941741{
    16951742    CredentialStorageMode credentialStorageMode;
    1696     if (webkit_settings_get_enable_private_browsing(webView->priv->settings.get()))
     1743    if (webkit_settings_get_enable_private_browsing(webkit_web_view_get_settings(webView)))
    16971744        credentialStorageMode = DisallowPersistentStorage;
    16981745    else
     
    17101757 * webkit_web_view_new:
    17111758 *
    1712  * Creates a new #WebKitWebView with the default #WebKitWebContext.
    1713  * See also webkit_web_view_new_with_context().
     1759 * Creates a new #WebKitWebView with the default #WebKitWebContext and the
     1760 * default #WebKitWebViewGroup.
     1761 * See also webkit_web_view_new_with_context() and webkit_web_view_new_with_group().
    17141762 *
    17151763 * Returns: The newly created #WebKitWebView widget
     
    17241772 * @context: the #WebKitWebContext to be used by the #WebKitWebView
    17251773 *
    1726  * Creates a new #WebKitWebView with the given #WebKitWebContext.
     1774 * Creates a new #WebKitWebView with the given #WebKitWebContext and the
     1775 * default #WebKitWebViewGroup.
     1776 * See also webkit_web_view_new_with_group().
    17271777 *
    17281778 * Returns: The newly created #WebKitWebView widget
     
    17361786
    17371787/**
     1788 * webkit_web_view_new_with_group:
     1789 * @group: a #WebKitWebViewGroup
     1790 *
     1791 * Creates a new #WebKitWebView with the given #WebKitWebViewGroup.
     1792 * The view will be part of @group and it will be affected by the
     1793 * group properties like the settings.
     1794 *
     1795 * Returns: The newly created #WebKitWebView widget
     1796 */
     1797GtkWidget* webkit_web_view_new_with_group(WebKitWebViewGroup* group)
     1798{
     1799    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW_GROUP(group), 0);
     1800
     1801    return GTK_WIDGET(g_object_new(WEBKIT_TYPE_WEB_VIEW, "group", group, NULL));
     1802}
     1803
     1804/**
    17381805 * webkit_web_view_get_context:
    17391806 * @web_view: a #WebKitWebView
     
    17481815
    17491816    return webView->priv->context;
     1817}
     1818
     1819/**
     1820 * webkit_web_view_get_group:
     1821 * @web_view: a #WebKitWebView
     1822 *
     1823 * Gets the group @web_view belongs to.
     1824 *
     1825 * Returns: (transfer none): the #WebKitWebViewGroup to which the view belongs
     1826 */
     1827WebKitWebViewGroup* webkit_web_view_get_group(WebKitWebView* webView)
     1828{
     1829    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
     1830
     1831    if (webView->priv->group)
     1832        return webView->priv->group.get();
     1833
     1834    return webkitWebContextGetDefaultWebViewGroup(webView->priv->context);
    17501835}
    17511836
     
    21872272 * @settings: a #WebKitSettings
    21882273 *
    2189  * Sets the #WebKitSettings to be applied to @web_view. The
    2190  * existing #WebKitSettings of @web_view will be replaced by
    2191  * @settings. New settings are applied immediately on @web_view.
    2192  * The same #WebKitSettings object can be shared
    2193  * by multiple #WebKitWebView<!-- -->s.
     2274 * Sets the #WebKitSettings to be applied to @web_view.
     2275 * This is a convenient method to set new settings to the
     2276 * #WebKitWebViewGroup @web_view belongs to.
     2277 * New settings are applied immediately on all #WebKitWebView<!-- -->s
     2278 * in the @web_view group.
     2279 * See also webkit_web_view_group_set_settings().
    21942280 */
    21952281void webkit_web_view_set_settings(WebKitWebView* webView, WebKitSettings* settings)
    21962282{
    2197     g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
    2198     g_return_if_fail(WEBKIT_IS_SETTINGS(settings));
    2199 
    2200     if (webView->priv->settings == settings)
    2201         return;
    2202 
    2203     webkitWebViewDisconnectSettingsSignalHandlers(webView);
    2204     webkitWebViewSetSettings(webView, settings);
     2283    webkit_web_view_group_set_settings(webkit_web_view_get_group(webView), settings);
    22052284}
    22062285
     
    22102289 *
    22112290 * Gets the #WebKitSettings currently applied to @web_view.
    2212  * If no other #WebKitSettings have been explicitly applied to
    2213  * @web_view with webkit_web_view_set_settings(), the default
    2214  * #WebKitSettings will be returned. This method always returns
    2215  * a valid #WebKitSettings object.
    2216  * To modify any of the @web_view settings, you can either create
    2217  * a new #WebKitSettings object with webkit_settings_new(), setting
    2218  * the desired preferences, and then replace the existing @web_view
    2219  * settings with webkit_web_view_set_settings() or get the existing
    2220  * @web_view settings and update it directly. #WebKitSettings objects
    2221  * can be shared by multiple #WebKitWebView<!-- -->s, so modifying
     2291 * This is a convenient method to get the settings of the
     2292 * #WebKitWebViewGroup @web_view belongs to.
     2293 * #WebKitSettings objects are shared by all the #WebKitWebView<!-- -->s
     2294 * in the same #WebKitWebViewGroup, so modifying
    22222295 * the settings of a #WebKitWebView would affect other
    2223  * #WebKitWebView<!-- -->s using the same #WebKitSettings.
     2296 * #WebKitWebView<!-- -->s of the same group.
     2297 * See also webkit_web_view_group_get_settings().
    22242298 *
    22252299 * Returns: (transfer none): the #WebKitSettings attached to @web_view
     
    22272301WebKitSettings* webkit_web_view_get_settings(WebKitWebView* webView)
    22282302{
    2229     g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
    2230 
    2231     return webView->priv->settings.get();
     2303    return webkit_web_view_group_get_settings(webkit_web_view_get_group(webView));
    22322304}
    22332305
     
    22642336
    22652337    WebPageProxy* page = getPage(webView);
    2266     if (webkit_settings_get_zoom_text_only(webView->priv->settings.get()))
     2338    if (webkit_settings_get_zoom_text_only(webkit_web_view_get_settings(webView)))
    22672339        page->setTextZoomFactor(zoomLevel);
    22682340    else
     
    22852357
    22862358    WebPageProxy* page = getPage(webView);
    2287     gboolean zoomTextOnly = webkit_settings_get_zoom_text_only(webView->priv->settings.get());
     2359    gboolean zoomTextOnly = webkit_settings_get_zoom_text_only(webkit_web_view_get_settings(webView));
    22882360    return zoomTextOnly ? page->textZoomFactor() : page->pageZoomFactor();
    22892361}
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h

    r148679 r149117  
    4747#include <webkit2/WebKitWebResource.h>
    4848#include <webkit2/WebKitWebViewBase.h>
     49#include <webkit2/WebKitWebViewGroup.h>
    4950#include <webkit2/WebKitWindowProperties.h>
    5051
     
    262263webkit_web_view_new_with_context                     (WebKitWebContext          *context);
    263264
     265WEBKIT_API GtkWidget *
     266webkit_web_view_new_with_group                       (WebKitWebViewGroup        *group);
     267
    264268WEBKIT_API WebKitWebContext *
    265269webkit_web_view_get_context                          (WebKitWebView             *web_view);
     270
     271WEBKIT_API WebKitWebViewGroup *
     272webkit_web_view_get_group                            (WebKitWebView             *web_view);
    266273
    267274WEBKIT_API void
  • trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml

    r139305 r149117  
    4242    <xi:include href="xml/WebKitFormSubmissionRequest.xml"/>
    4343    <xi:include href="xml/WebKitSecurityManager.xml"/>
     44    <xi:include href="xml/WebKitWebViewGroup.xml"/>
    4445  </chapter>
    4546
  • trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt

    r148966 r149117  
    9191webkit_web_view_new
    9292webkit_web_view_new_with_context
     93webkit_web_view_new_with_group
    9394webkit_web_view_get_context
     95webkit_web_view_get_group
    9496webkit_web_view_load_uri
    9597webkit_web_view_load_html
     
    942944
    943945<SECTION>
     946<FILE>WebKitWebViewGroup</FILE>
     947WebKitWebViewGroup
     948webkit_web_view_group_new
     949webkit_web_view_group_get_name
     950webkit_web_view_group_get_settings
     951webkit_web_view_group_set_settings
     952
     953<SUBSECTION Standard>
     954WebKitWebViewGroupClass
     955WEBKIT_TYPE_WEB_VIEW_GROUP
     956WEBKIT_WEB_VIEW_GROUP
     957WEBKIT_IS_WEB_VIEW_GROUP
     958WEBKIT_WEB_VIEW_GROUP_CLASS
     959WEBKIT_IS_WEB_VIEW_GROUP_CLASS
     960WEBKIT_WEB_VIEW_GROUP_GET_CLASS
     961
     962<SUBSECTION Private>
     963WebKitWebViewGroupPrivate
     964webkit_web_view_group_get_type
     965</SECTION>
     966
     967<SECTION>
    944968<FILE>WebKitWebExtension</FILE>
    945969WebKitWebExtension
  • trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk.types

    r139305 r149117  
    2222webkit_context_menu_get_type
    2323webkit_context_menu_item_get_type
     24webkit_web_view_group_get_type
    2425webkit_web_extension_get_type
    2526webkit_web_page_get_type
  • trunk/Source/WebKit2/UIProcess/API/gtk/tests/GNUmakefile.am

    r148279 r149117  
    2121        Programs/WebKit2APITests/TestWebKitWebContext \
    2222        Programs/WebKit2APITests/TestWebKitWebView \
     23        Programs/WebKit2APITests/TestWebKitWebViewGroup \
    2324        Programs/WebKit2APITests/TestWebViewEditor
    2425
     
    253254Programs_WebKit2APITests_TestWebExtensions_LDFLAGS = $(webkit2_tests_ldflags)
    254255
     256Programs_WebKit2APITests_TestWebKitWebViewGroup_SOURCES = \
     257        Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebViewGroup.cpp
     258Programs_WebKit2APITests_TestWebKitWebViewGroup_CPPFLAGS = $(webkit2_tests_cppflags)
     259Programs_WebKit2APITests_TestWebKitWebViewGroup_LDADD = $(webkit2_tests_ldadd)
     260Programs_WebKit2APITests_TestWebKitWebViewGroup_LDFLAGS = $(webkit2_tests_ldflags)
     261
    255262endif # ENABLE_WEBKIT2
  • trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp

    r148788 r149117  
    4949{
    5050    WebKitSettings* defaultSettings = webkit_web_view_get_settings(test->m_webView);
    51     test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(defaultSettings));
    5251    g_assert(defaultSettings);
    5352    g_assert(webkit_settings_get_enable_javascript(defaultSettings));
    5453
    5554    GRefPtr<WebKitSettings> newSettings = adoptGRef(webkit_settings_new());
    56     test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(newSettings.get()));
    5755    g_object_set(G_OBJECT(newSettings.get()), "enable-javascript", FALSE, NULL);
    5856    webkit_web_view_set_settings(test->m_webView, newSettings.get());
     
    6866
    6967    GRefPtr<WebKitSettings> newSettings2 = adoptGRef(webkit_settings_new());
    70     test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(newSettings2.get()));
    7168    webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webView2.get()), newSettings2.get());
    7269    settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(webView2.get()));
  • trunk/Source/WebKit2/UIProcess/API/gtk/webkit2.h

    r129906 r149117  
    6060#include <webkit2/WebKitWebView.h>
    6161#include <webkit2/WebKitWebViewBase.h>
     62#include <webkit2/WebKitWebViewGroup.h>
    6263#include <webkit2/WebKitWindowProperties.h>
    6364
Note: See TracChangeset for help on using the changeset viewer.