Changeset 225044 in webkit


Ignore:
Timestamp:
Nov 20, 2017 12:16:26 AM (6 years ago)
Author:
Carlos Garcia Campos
Message:

[WPE] webkit_web_view_new() should enable specifying wpe_view_backend object
https://bugs.webkit.org/show_bug.cgi?id=178655

Reviewed by Michael Catanzaro.

Source/WebKit:

Update all WebKitWebView constructors to receive a WebKitWebViewBackend as argument. It's now required to
provide a backend to create a web view, but it can be NULL to use the default one. WebKitWebViewBackend is a
boxed type wrapping a struct wpe_view_backend* used as construct only property of WebKitWebView. The view always
takes the ownership of the WebKitWebViewBackend which owns the struct wpe_view_backend*. An optional
GDestroyNotify and user data pointer can be passed to the WebKitWebViewBackend constructor to provide a custom
deleter for the backend. In the C API the struct wpe_view_backend* is also mandatory now, but it can't be NULL
and it's owned by the caller, not the view.

  • PlatformWPE.cmake:
  • UIProcess/API/C/wpe/WKView.cpp:

(WKViewCreate):

  • UIProcess/API/C/wpe/WKView.h:
  • UIProcess/API/glib/WebKitWebView.cpp:

(_WebKitWebViewPrivate::~_WebKitWebViewPrivate):
(webkitWebViewConstructed):
(webkitWebViewSetProperty):
(webkitWebViewGetProperty):
(webkit_web_view_class_init):
(webkitWebViewCreatePage):
(webkit_web_view_get_backend):

  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::m_backend):
(WKWPE::View::~View):

  • UIProcess/API/wpe/WebKitWebView.h:
  • UIProcess/API/wpe/WebKitWebViewBackend.cpp: Added.

(_WebKitWebViewBackend::_WebKitWebViewBackend):
(_WebKitWebViewBackend::~_WebKitWebViewBackend):
(webkitWebViewBackendRef):
(webkitWebViewBackendUnref):
(webkitWebViewBackendCreateDefault):
(webkit_web_view_backend_new):
(webkit_web_view_backend_get_wpe_backend):

  • UIProcess/API/wpe/WebKitWebViewBackend.h: Added.
  • UIProcess/API/wpe/WebKitWebViewBackendPrivate.h: Added.
  • UIProcess/API/wpe/WebKitWebViewWPE.cpp:

(webkit_web_view_new):
(webkit_web_view_new_with_context):
(webkit_web_view_new_with_related_view):
(webkit_web_view_new_with_settings):
(webkit_web_view_new_with_user_content_manager):

  • UIProcess/API/wpe/webkit.h:

Tools:

Update unit tests to create web views using helper methods that have a different implementation for GTK and
WPE. Also add a new test case to check the new API to create a WebKitWebView with a WPE backend. Use
WKViewCreate in WTR and fix a memory leak in HeadlessViewBackend.

  • TestWebKitAPI/Tests/WebKitGLib/TestAutomationSession.cpp:

(testAutomationSessionRequestSession):

  • TestWebKitAPI/Tests/WebKitGLib/TestBackForwardList.cpp:

(testWebKitWebViewSessionState):
(testWebKitWebViewSessionStateWithFormData):
(testWebKitWebViewNavigationAfterSessionRestore):

  • TestWebKitAPI/Tests/WebKitGLib/TestMultiprocess.cpp:
  • TestWebKitAPI/Tests/WebKitGLib/TestResources.cpp:

(testWebResourceGetDataError):

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:
  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp:

(testWebViewNewWithUserContentManager):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:

(testWebContextEphemeral):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(testWebViewWebContext):
(testWebViewWebContextLifetime):
(testWebViewWebBackend):
(testWebViewSettings):
(beforeAll):

  • TestWebKitAPI/Tests/WebKitGLib/TestWebsiteData.cpp:

(testWebsiteDataEphemeral):

  • TestWebKitAPI/glib/WebKitGLib/TestMain.h:

(Test::createWebView):

  • WebKitTestRunner/wpe/HeadlessViewBackend.cpp:

(HeadlessViewBackend::~HeadlessViewBackend):

  • WebKitTestRunner/wpe/PlatformWebViewWPE.cpp:

(WTR::PlatformWebView::PlatformWebView):

Location:
trunk
Files:
3 added
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r225043 r225044  
     12017-11-20  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [WPE] webkit_web_view_new() should enable specifying wpe_view_backend object
     4        https://bugs.webkit.org/show_bug.cgi?id=178655
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        Update all WebKitWebView constructors to receive a WebKitWebViewBackend as argument. It's now required to
     9        provide a backend to create a web view, but it can be NULL to use the default one. WebKitWebViewBackend is a
     10        boxed type wrapping a struct wpe_view_backend* used as construct only property of WebKitWebView. The view always
     11        takes the ownership of the WebKitWebViewBackend which owns the struct wpe_view_backend*. An optional
     12        GDestroyNotify and user data pointer can be passed to the WebKitWebViewBackend constructor to provide a custom
     13        deleter for the backend. In the C API the struct wpe_view_backend* is also mandatory now, but it can't be NULL
     14        and it's owned by the caller, not the view.
     15
     16        * PlatformWPE.cmake:
     17        * UIProcess/API/C/wpe/WKView.cpp:
     18        (WKViewCreate):
     19        * UIProcess/API/C/wpe/WKView.h:
     20        * UIProcess/API/glib/WebKitWebView.cpp:
     21        (_WebKitWebViewPrivate::~_WebKitWebViewPrivate):
     22        (webkitWebViewConstructed):
     23        (webkitWebViewSetProperty):
     24        (webkitWebViewGetProperty):
     25        (webkit_web_view_class_init):
     26        (webkitWebViewCreatePage):
     27        (webkit_web_view_get_backend):
     28        * UIProcess/API/wpe/WPEView.cpp:
     29        (WKWPE::m_backend):
     30        (WKWPE::View::~View):
     31        * UIProcess/API/wpe/WebKitWebView.h:
     32        * UIProcess/API/wpe/WebKitWebViewBackend.cpp: Added.
     33        (_WebKitWebViewBackend::_WebKitWebViewBackend):
     34        (_WebKitWebViewBackend::~_WebKitWebViewBackend):
     35        (webkitWebViewBackendRef):
     36        (webkitWebViewBackendUnref):
     37        (webkitWebViewBackendCreateDefault):
     38        (webkit_web_view_backend_new):
     39        (webkit_web_view_backend_get_wpe_backend):
     40        * UIProcess/API/wpe/WebKitWebViewBackend.h: Added.
     41        * UIProcess/API/wpe/WebKitWebViewBackendPrivate.h: Added.
     42        * UIProcess/API/wpe/WebKitWebViewWPE.cpp:
     43        (webkit_web_view_new):
     44        (webkit_web_view_new_with_context):
     45        (webkit_web_view_new_with_related_view):
     46        (webkit_web_view_new_with_settings):
     47        (webkit_web_view_new_with_user_content_manager):
     48        * UIProcess/API/wpe/webkit.h:
     49
    1502017-11-20  Carlos Garcia Campos  <cgarcia@igalia.com>
    251
  • trunk/Source/WebKit/PlatformWPE.cmake

    r224677 r225044  
    203203    UIProcess/API/wpe/ScrollGestureController.cpp
    204204    UIProcess/API/wpe/WebKitScriptDialogWPE.cpp
     205    UIProcess/API/wpe/WebKitWebViewBackend.cpp
    205206    UIProcess/API/wpe/WebKitWebViewWPE.cpp
    206207    UIProcess/API/wpe/WPEView.cpp
     
    334335    ${WEBKIT_DIR}/UIProcess/API/wpe/WebKitWebResource.h
    335336    ${WEBKIT_DIR}/UIProcess/API/wpe/WebKitWebView.h
     337    ${WEBKIT_DIR}/UIProcess/API/wpe/WebKitWebViewBackend.h
    336338    ${WEBKIT_DIR}/UIProcess/API/wpe/WebKitWebViewSessionState.h
    337339    ${WEBKIT_DIR}/UIProcess/API/wpe/WebKitWebsiteData.h
  • trunk/Source/WebKit/UIProcess/API/C/wpe/WKView.cpp

    r218691 r225044  
    4141}
    4242
    43 WKViewRef WKViewCreate(WKPageConfigurationRef configuration)
    44 {
    45     return toAPI(WKWPE::View::create(nullptr, *toImpl(configuration)));
    46 }
    47 
    48 WKViewRef WKViewCreateWithViewBackend(struct wpe_view_backend* backend, WKPageConfigurationRef configuration)
     43WKViewRef WKViewCreate(struct wpe_view_backend* backend, WKPageConfigurationRef configuration)
    4944{
    5045    return toAPI(WKWPE::View::create(backend, *toImpl(configuration)));
  • trunk/Source/WebKit/UIProcess/API/C/wpe/WKView.h

    r216497 r225044  
    3636struct wpe_view_backend;
    3737
    38 WK_EXPORT WKViewRef WKViewCreate(WKPageConfigurationRef);
    39 WK_EXPORT WKViewRef WKViewCreateWithViewBackend(struct wpe_view_backend*, WKPageConfigurationRef);
     38WK_EXPORT WKViewRef WKViewCreate(struct wpe_view_backend*, WKPageConfigurationRef);
    4039
    4140WK_EXPORT WKPageRef WKViewGetPage(WKViewRef);
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp

    r224945 r225044  
    8585#include "APIViewClient.h"
    8686#include "WPEView.h"
     87#include "WebKitWebViewBackendPrivate.h"
    8788#endif
    8889
     
    161162enum {
    162163    PROP_0,
     164
     165#if PLATFORM(WPE)
     166    PROP_BACKEND,
     167#endif
    163168
    164169    PROP_WEB_CONTEXT,
     
    193198        if (modalLoop && g_main_loop_is_running(modalLoop.get()))
    194199            g_main_loop_quit(modalLoop.get());
     200#if PLATFORM(WPE)
     201        view = nullptr;
     202        webkitWebViewBackendUnref(backend);
     203#endif
    195204    }
    196205
    197206#if PLATFORM(WPE)
     207    WebKitWebViewBackend* backend;
    198208    std::unique_ptr<WKWPE::View> view;
    199209#endif
     
    620630    WebKitWebView* webView = WEBKIT_WEB_VIEW(object);
    621631    WebKitWebViewPrivate* priv = webView->priv;
     632#if PLATFORM(WPE)
     633    if (!priv->backend)
     634        priv->backend = webkitWebViewBackendCreateDefault();
     635#endif
    622636    if (priv->relatedView) {
    623637        priv->context = webkit_web_view_get_context(priv->relatedView);
     
    674688
    675689    switch (propId) {
     690#if PLATFORM(WPE)
     691    case PROP_BACKEND: {
     692        gpointer backend = g_value_get_boxed(value);
     693        webView->priv->backend = backend ? static_cast<WebKitWebViewBackend*>(backend) : nullptr;
     694        break;
     695    }
     696#endif
    676697    case PROP_WEB_CONTEXT: {
    677698        gpointer webContext = g_value_get_object(value);
     
    716737
    717738    switch (propId) {
     739#if PLATFORM(WPE)
     740    case PROP_BACKEND:
     741        g_value_set_static_boxed(value, webView->priv->backend);
     742        break;
     743#endif
    718744    case PROP_WEB_CONTEXT:
    719745        g_value_set_object(value, webView->priv->context.get());
     
    821847    webViewClass->authenticate = webkitWebViewAuthenticate;
    822848    webViewClass->show_notification = webkitWebViewShowNotification;
     849
     850#if PLATFORM(WPE)
     851    /**
     852     * WebKitWebView:backend:
     853     *
     854     * The #WebKitWebViewBackend of the view.
     855     *
     856     * since: 2.20
     857     */
     858    g_object_class_install_property(
     859        gObjectClass,
     860        PROP_BACKEND,
     861        g_param_spec_boxed(
     862            "backend",
     863            _("Backend"),
     864            _("The backend for the web view"),
     865            WEBKIT_TYPE_WEB_VIEW_BACKEND,
     866            static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
     867#endif
    823868
    824869    /**
     
    19161961    webkitWebViewBaseCreateWebPage(WEBKIT_WEB_VIEW_BASE(webView), WTFMove(configuration));
    19171962#elif PLATFORM(WPE)
    1918     webView->priv->view.reset(WKWPE::View::create(nullptr, configuration.get()));
     1963    webView->priv->view.reset(WKWPE::View::create(webkit_web_view_backend_get_wpe_backend(webView->priv->backend), configuration.get()));
    19191964#endif
    19201965}
     
    23452390    g_signal_emit(webView, signals[SHOW_OPTION_MENU], 0, menu, event, &menuRect, &handled);
    23462391    return handled;
     2392}
     2393#endif
     2394
     2395#if PLATFORM(WPE)
     2396/**
     2397 * webkit_web_view_get_backend:
     2398 * @web_view: a #WebKitWebView
     2399 *
     2400 * Get the #WebKitWebViewBackend of @web_view
     2401 *
     2402 * Returns: (transfer none): the #WebKitWebViewBackend of @web_view
     2403 *
     2404 * Since: 2.20
     2405 */
     2406WebKitWebViewBackend* webkit_web_view_get_backend(WebKitWebView* webView)
     2407{
     2408    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), nullptr);
     2409
     2410    return webView->priv->backend;
    23472411}
    23482412#endif
  • trunk/Source/WebKit/UIProcess/API/wpe/WPEView.cpp

    r221372 r225044  
    4949    , m_viewStateFlags(WebCore::ActivityState::WindowIsActive | WebCore::ActivityState::IsFocused | WebCore::ActivityState::IsVisible | WebCore::ActivityState::IsInWindow)
    5050    , m_compositingManagerProxy(*this)
     51    , m_backend(backend)
    5152{
     53    ASSERT(m_backend);
     54
    5255    auto configuration = baseConfiguration.copy();
    5356    auto* preferences = configuration->preferences();
     
    7275#endif
    7376
    74     m_backend = backend;
    75     if (!m_backend)
    76         m_backend = wpe_view_backend_create();
    7777    m_compositingManagerProxy.initialize();
    7878
     
    137137{
    138138    m_compositingManagerProxy.finalize();
    139     wpe_view_backend_destroy(m_backend);
    140139}
    141140
  • trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebView.h

    r223953 r225044  
    5050#include <wpe/WebKitWebContext.h>
    5151#include <wpe/WebKitWebResource.h>
     52#include <wpe/WebKitWebViewBackend.h>
    5253#include <wpe/WebKitWebViewSessionState.h>
    5354#include <wpe/WebKitWindowProperties.h>
     
    229230
    230231WEBKIT_API WebKitWebView *
    231 webkit_web_view_new                                  (void);
     232webkit_web_view_new                                  (WebKitWebViewBackend      *backend);
    232233
    233234WEBKIT_API WebKitWebView *
    234 webkit_web_view_new_with_context                     (WebKitWebContext          *context);
     235webkit_web_view_new_with_context                     (WebKitWebViewBackend      *backend,
     236                                                      WebKitWebContext          *context);
    235237
    236238WEBKIT_API WebKitWebView *
    237 webkit_web_view_new_with_settings                    (WebKitSettings            *settings);
     239webkit_web_view_new_with_settings                    (WebKitWebViewBackend      *backend,
     240                                                      WebKitSettings            *settings);
    238241
    239242WEBKIT_API WebKitWebView *
    240 webkit_web_view_new_with_related_view                (WebKitWebView             *web_view);
     243webkit_web_view_new_with_related_view                (WebKitWebViewBackend      *backend,
     244                                                      WebKitWebView             *web_view);
    241245
    242246WEBKIT_API WebKitWebView *
    243 webkit_web_view_new_with_user_content_manager        (WebKitUserContentManager  *user_content_manager);
     247webkit_web_view_new_with_user_content_manager        (WebKitWebViewBackend      *backend,
     248                                                      WebKitUserContentManager  *user_content_manager);
     249
     250WEBKIT_API WebKitWebViewBackend *
     251webkit_web_view_get_backend                          (WebKitWebView             *web_view);
    244252
    245253WEBKIT_API gboolean
  • trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebViewWPE.cpp

    r218787 r225044  
    4040/**
    4141 * webkit_web_view_new:
     42 * @backend: (nullable) (transfer full): a #WebKitWebViewBackend, or %NULL to use the default
    4243 *
    4344 * Creates a new #WebKitWebView with the default #WebKitWebContext and
     
    4950 * Returns: The newly created #WebKitWebView
    5051 */
    51 WebKitWebView* webkit_web_view_new()
     52WebKitWebView* webkit_web_view_new(WebKitWebViewBackend* backend)
    5253{
    53     return webkit_web_view_new_with_context(webkit_web_context_get_default());
     54    return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
     55        "backend", backend,
     56        "web-context", webkit_web_context_get_default(),
     57        nullptr));
    5458}
    5559
    5660/**
    5761 * webkit_web_view_new_with_context:
     62 * @backend: (nullable) (transfer full): a #WebKitWebViewBackend, or %NULL to use the default
    5863 * @context: the #WebKitWebContext to be used by the #WebKitWebView
    5964 *
     
    6570 * Returns: The newly created #WebKitWebView
    6671 */
    67 WebKitWebView* webkit_web_view_new_with_context(WebKitWebContext* context)
     72WebKitWebView* webkit_web_view_new_with_context(WebKitWebViewBackend* backend, WebKitWebContext* context)
    6873{
    6974    g_return_val_if_fail(WEBKIT_IS_WEB_CONTEXT(context), nullptr);
    7075
    7176    return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
     77        "backend", backend,
    7278        "is-ephemeral", webkit_web_context_is_ephemeral(context),
    7379        "web-context", context,
     
    7783/**
    7884 * webkit_web_view_new_with_related_view: (constructor)
     85 * @backend: (nullable) (transfer full): a #WebKitWebViewBackend, or %NULL to use the default
    7986 * @web_view: the related #WebKitWebView
    8087 *
     
    94101 * Since: 2.4
    95102 */
    96 WebKitWebView* webkit_web_view_new_with_related_view(WebKitWebView* webView)
     103WebKitWebView* webkit_web_view_new_with_related_view(WebKitWebViewBackend* backend, WebKitWebView* webView)
    97104{
    98105    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), nullptr);
    99106
    100107    return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
     108        "backend", backend,
    101109        "user-content-manager", webkit_web_view_get_user_content_manager(webView),
    102110        "settings", webkit_web_view_get_settings(webView),
     
    107115/**
    108116 * webkit_web_view_new_with_settings:
     117 * @backend: (nullable) (transfer full): a #WebKitWebViewBackend, or %NULL to use the default
    109118 * @settings: a #WebKitSettings
    110119 *
     
    117126 * Since: 2.6
    118127 */
    119 WebKitWebView* webkit_web_view_new_with_settings(WebKitSettings* settings)
     128WebKitWebView* webkit_web_view_new_with_settings(WebKitWebViewBackend* backend, WebKitSettings* settings)
    120129{
    121130    g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), nullptr);
    122     return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, "settings", settings, nullptr));
     131
     132    return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
     133        "backend", backend,
     134        "settings", settings,
     135        nullptr));
    123136}
    124137
    125138/**
    126139 * webkit_web_view_new_with_user_content_manager:
     140 * @backend: (nullable) (transfer full): a #WebKitWebViewBackend, or %NULL to use the default
    127141 * @user_content_manager: a #WebKitUserContentManager.
    128142 *
     
    135149 * Since: 2.6
    136150 */
    137 WebKitWebView* webkit_web_view_new_with_user_content_manager(WebKitUserContentManager* userContentManager)
     151WebKitWebView* webkit_web_view_new_with_user_content_manager(WebKitWebViewBackend* backend, WebKitUserContentManager* userContentManager)
    138152{
    139153    g_return_val_if_fail(WEBKIT_IS_USER_CONTENT_MANAGER(userContentManager), nullptr);
    140154
    141     return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, "user-content-manager", userContentManager, nullptr));
     155    return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
     156        "backend", backend,
     157        "user-content-manager", userContentManager,
     158        nullptr));
    142159}
  • trunk/Source/WebKit/UIProcess/API/wpe/webkit.h

    r220329 r225044  
    7373#include <wpe/WebKitWebResource.h>
    7474#include <wpe/WebKitWebView.h>
     75#include <wpe/WebKitWebViewBackend.h>
    7576#include <wpe/WebKitWebViewSessionState.h>
    7677#include <wpe/WebKitWebsiteData.h>
  • trunk/Tools/ChangeLog

    r225043 r225044  
     12017-11-20  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [WPE] webkit_web_view_new() should enable specifying wpe_view_backend object
     4        https://bugs.webkit.org/show_bug.cgi?id=178655
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        Update unit tests to create web views using helper methods that have a different implementation for GTK and
     9        WPE. Also add a new test case to check the new API to create a WebKitWebView with a WPE backend. Use
     10        WKViewCreate in WTR and fix a memory leak in HeadlessViewBackend.
     11
     12        * TestWebKitAPI/Tests/WebKitGLib/TestAutomationSession.cpp:
     13        (testAutomationSessionRequestSession):
     14        * TestWebKitAPI/Tests/WebKitGLib/TestBackForwardList.cpp:
     15        (testWebKitWebViewSessionState):
     16        (testWebKitWebViewSessionStateWithFormData):
     17        (testWebKitWebViewNavigationAfterSessionRestore):
     18        * TestWebKitAPI/Tests/WebKitGLib/TestMultiprocess.cpp:
     19        * TestWebKitAPI/Tests/WebKitGLib/TestResources.cpp:
     20        (testWebResourceGetDataError):
     21        * TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:
     22        * TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp:
     23        (testWebViewNewWithUserContentManager):
     24        * TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp:
     25        (testWebContextEphemeral):
     26        * TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:
     27        (testWebViewWebContext):
     28        (testWebViewWebContextLifetime):
     29        (testWebViewWebBackend):
     30        (testWebViewSettings):
     31        (beforeAll):
     32        * TestWebKitAPI/Tests/WebKitGLib/TestWebsiteData.cpp:
     33        (testWebsiteDataEphemeral):
     34        * TestWebKitAPI/glib/WebKitGLib/TestMain.h:
     35        (Test::createWebView):
     36        * WebKitTestRunner/wpe/HeadlessViewBackend.cpp:
     37        (HeadlessViewBackend::~HeadlessViewBackend):
     38        * WebKitTestRunner/wpe/PlatformWebViewWPE.cpp:
     39        (WTR::PlatformWebView::PlatformWebView):
     40
    1412017-11-20  Carlos Garcia Campos  <cgarcia@igalia.com>
    242
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestAutomationSession.cpp

    r221416 r225044  
    309309
    310310    // Will also fail if the web view is not controlled by automation.
    311     auto webView = Test::adoptView(webkit_web_view_new_with_context(test->m_webContext.get()));
     311    auto webView = Test::adoptView(Test::createWebView(test->m_webContext.get()));
    312312    g_assert(!webkit_web_view_is_controlled_by_automation(webView.get()));
    313313    g_assert(!test->createTopLevelBrowsingContext(webView.get()));
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestBackForwardList.cpp

    r218686 r225044  
    267267    WebKitWebViewSessionState* state = webkit_web_view_get_session_state(test->m_webView);
    268268    g_assert(state);
    269     auto view = Test::adoptView(webkit_web_view_new());
     269    auto view = Test::adoptView(Test::createWebView());
    270270    WebKitBackForwardList* bfList = webkit_web_view_get_back_forward_list(view.get());
    271271    g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
     
    276276    state = webkit_web_view_session_state_new(data.get());
    277277    g_assert(state);
    278     view = Test::adoptView(webkit_web_view_new());
     278    view = Test::adoptView(Test::createWebView());
    279279    bfList = webkit_web_view_get_back_forward_list(view.get());
    280280    g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
     
    319319    g_assert(state);
    320320
    321     view = Test::adoptView(webkit_web_view_new());
     321    view = Test::adoptView(Test::createWebView());
    322322    bfList = webkit_web_view_get_back_forward_list(view.get());
    323323    g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
     
    348348    WebKitWebViewSessionState* state = webkit_web_view_get_session_state(test->m_webView);
    349349    g_assert(state);
    350     auto view = Test::adoptView(webkit_web_view_new());
     350    auto view = Test::adoptView(Test::createWebView());
    351351    WebKitBackForwardList* bfList = webkit_web_view_get_back_forward_list(view.get());
    352352    g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
     
    357357    state = webkit_web_view_session_state_new(data.get());
    358358    g_assert(state);
    359     view = Test::adoptView(webkit_web_view_new());
     359    view = Test::adoptView(Test::createWebView());
    360360    bfList = webkit_web_view_get_back_forward_list(view.get());
    361361    g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
     
    375375    // This test checks that a normal load after a session restore with a BackForard list having
    376376    // forward items doesn't produce any runtime critical warning. See https://bugs.webkit.org/show_bug.cgi?id=153233.
    377     auto view = Test::adoptView(webkit_web_view_new());
     377    auto view = Test::adoptView(Test::createWebView());
    378378    g_signal_connect(view.get(), "load-changed", G_CALLBACK(viewLoadChanged), test->m_mainLoop);
    379379
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestMultiprocess.cpp

    r218686 r225044  
    5959        g_assert_cmpuint(index, <, numViews);
    6060
    61         m_webViews[index] = Test::adoptView(webkit_web_view_new_with_context(m_webContext.get()));
     61        m_webViews[index] = Test::adoptView(Test::createWebView(m_webContext.get()));
    6262        assertObjectIsDeletedWhenTestFinishes(G_OBJECT(m_webViews[index].get()));
    6363
     
    171171    {
    172172        webkit_web_context_set_process_model(m_webContext.get(), WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES);
    173         m_webView = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context(m_webContext.get()));
     173        m_webView = WEBKIT_WEB_VIEW(Test::createWebView(m_webContext.get()));
    174174#if PLATFORM(GTK)
    175175        g_object_ref_sink(m_webView);
     
    196196        g_assert(webView == m_webView);
    197197
    198         auto* newWebView = webkit_web_view_new_with_related_view(webView);
     198        auto* newWebView = Test::createWebView(webView);
    199199#if PLATFORM(GTK)
    200200        g_object_ref_sink(newWebView);
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestResources.cpp

    r224192 r225044  
    548548{
    549549    GRefPtr<GMainLoop> mainLoop = adoptGRef(g_main_loop_new(nullptr, FALSE));
    550     GRefPtr<WebKitWebView> webView = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context(test->m_webContext.get()));
     550    GRefPtr<WebKitWebView> webView = WEBKIT_WEB_VIEW(Test::createWebView(test->m_webContext.get()));
    551551    webkit_web_view_load_html(webView.get(), "<html></html>", nullptr);
    552552    g_signal_connect(webView.get(), "load-changed", G_CALLBACK(webViewloadChanged), mainLoop.get());
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp

    r224192 r225044  
    322322        g_assert(navigation);
    323323
    324         auto* newWebView = webkit_web_view_new_with_context(webkit_web_view_get_context(webView));
     324        auto* newWebView = Test::createWebView(webkit_web_view_get_context(webView));
    325325#if PLATFORM(GTK)
    326326        g_object_ref_sink(newWebView);
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp

    r218686 r225044  
    4141    GRefPtr<WebKitUserContentManager> userContentManager1 = adoptGRef(webkit_user_content_manager_new());
    4242    test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(userContentManager1.get()));
    43     auto webView1 = Test::adoptView(webkit_web_view_new_with_user_content_manager(userContentManager1.get()));
     43    auto webView1 = Test::adoptView(Test::createWebView(userContentManager1.get()));
    4444    g_assert(webkit_web_view_get_user_content_manager(webView1.get()) == userContentManager1.get());
    4545
    46     auto webView2 = Test::adoptView(webkit_web_view_new());
     46    auto webView2 = Test::adoptView(Test::createWebView());
    4747    g_assert(webkit_web_view_get_user_content_manager(webView2.get()) != userContentManager1.get());
    4848}
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebContext.cpp

    r218743 r225044  
    5252    g_assert(!webkit_website_data_manager_is_ephemeral(manager));
    5353
    54     auto webView = Test::adoptView(webkit_web_view_new());
     54    auto webView = Test::adoptView(Test::createWebView());
    5555    g_assert(!webkit_web_view_is_ephemeral(webView.get()));
    5656    g_assert(webkit_web_view_get_website_data_manager(webView.get()) == webkit_web_context_get_website_data_manager(webkit_web_context_get_default()));
    5757
    58     webView = Test::adoptView(webkit_web_view_new_with_context(test->m_webContext.get()));
     58    webView = Test::adoptView(Test::createWebView(test->m_webContext.get()));
    5959    g_assert(!webkit_web_view_is_ephemeral(webView.get()));
    6060    g_assert(webkit_web_view_get_website_data_manager(webView.get()) == manager);
     
    6767    g_assert(webkit_web_view_get_website_data_manager(webView.get()) != manager);
    6868
    69     webView = Test::adoptView(webkit_web_view_new_with_context(context.get()));
     69    webView = Test::adoptView(Test::createWebView(context.get()));
    7070    g_assert(webkit_web_view_is_ephemeral(webView.get()));
    7171    g_assert(webkit_web_view_get_website_data_manager(webView.get()) == manager);
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp

    r218686 r225044  
    5656
    5757    // Check that a web view created with a related view has the related view context.
    58     webView = Test::adoptView(webkit_web_view_new_with_related_view(test->m_webView));
     58    webView = Test::adoptView(Test::createWebView(test->m_webView));
    5959    g_assert(webkit_web_view_get_context(webView.get()) == test->m_webContext.get());
    6060
     
    7070    test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webContext));
    7171
    72     auto* webView = webkit_web_view_new_with_context(webContext);
     72    auto* webView = Test::createWebView(webContext);
    7373    test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView));
    7474
     
    8686    test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webContext2));
    8787
    88     auto* webView2 = webkit_web_view_new_with_context(webContext2);
     88    auto* webView2 = Test::createWebView(webContext2);
    8989    test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView2));
    9090
     
    9898    g_object_unref(webContext2);
    9999}
     100
     101#if PLATFORM(WPE)
     102static void testWebViewWebBackend(Test* test, gconstpointer)
     103{
     104    // Use the default backend (we don't have a way to check the backend will be actually freed).
     105    GRefPtr<WebKitWebView> webView = adoptGRef(webkit_web_view_new(nullptr));
     106    test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView.get()));
     107    auto* viewBackend = webkit_web_view_get_backend(webView.get());
     108    g_assert(viewBackend);
     109    auto* wpeBackend = webkit_web_view_backend_get_wpe_backend(viewBackend);
     110    g_assert(wpeBackend);
     111    webView = nullptr;
     112
     113    // User provided backend with default deleter (we don't have a way to check the backend will be actually freed).
     114    webView = adoptGRef(webkit_web_view_new(webkit_web_view_backend_new(wpe_view_backend_create(), nullptr, nullptr)));
     115    test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView.get()));
     116    viewBackend = webkit_web_view_get_backend(webView.get());
     117    g_assert(viewBackend);
     118    wpeBackend = webkit_web_view_backend_get_wpe_backend(viewBackend);
     119    g_assert(wpeBackend);
     120    webView = nullptr;
     121
     122    // User provided backend with destroy notify.
     123    wpeBackend = wpe_view_backend_create();
     124    webView = adoptGRef(webkit_web_view_new(webkit_web_view_backend_new(wpeBackend, [](gpointer userData) {
     125        auto* backend = *static_cast<struct wpe_view_backend**>(userData);
     126        wpe_view_backend_destroy(backend);
     127        *static_cast<struct wpe_view_backend**>(userData) = nullptr;
     128    }, &wpeBackend)));
     129    test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView.get()));
     130    webView = nullptr;
     131    g_assert(!wpeBackend);
     132
     133    // User provided backend owned by another object with destroy notify.
     134    static bool hasInstance = false;
     135    struct BackendOwner {
     136        BackendOwner(struct wpe_view_backend* backend)
     137            : backend(backend)
     138        {
     139            hasInstance = true;
     140        }
     141
     142        ~BackendOwner()
     143        {
     144            wpe_view_backend_destroy(backend);
     145            hasInstance = false;
     146        }
     147
     148        struct wpe_view_backend* backend;
     149    };
     150    auto* owner = new BackendOwner(wpe_view_backend_create());
     151    g_assert(hasInstance);
     152    webView = adoptGRef(webkit_web_view_new(webkit_web_view_backend_new(owner->backend, [](gpointer userData) {
     153        delete static_cast<BackendOwner*>(userData);
     154    }, owner)));
     155    test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView.get()));
     156    g_assert(hasInstance);
     157    webView = nullptr;
     158    g_assert(!hasInstance);
     159}
     160#endif // PLATFORM(WPE)
    100161
    101162static void ephemeralViewloadChanged(WebKitWebView* webView, WebKitLoadEvent loadEvent, WebViewTest* test)
     
    178239    g_assert(!webkit_settings_get_enable_javascript(settings));
    179240
    180     auto webView2 = Test::adoptView(webkit_web_view_new());
     241    auto webView2 = Test::adoptView(Test::createWebView());
    181242    test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView2.get()));
    182243    webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webView2.get()), settings);
     
    190251    g_assert(webkit_settings_get_enable_javascript(settings));
    191252
    192     auto webView3 = Test::adoptView(webkit_web_view_new_with_settings(newSettings2.get()));
     253    auto webView3 = Test::adoptView(Test::createWebView(newSettings2.get()));
    193254    test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView3.get()));
    194255    g_assert(webkit_web_view_get_settings(WEBKIT_WEB_VIEW(webView3.get())) == newSettings2.get());
     
    10781139    WebViewTest::add("WebKitWebView", "web-context", testWebViewWebContext);
    10791140    WebViewTest::add("WebKitWebView", "web-context-lifetime", testWebViewWebContextLifetime);
     1141#if PLATFORM(WPE)
     1142    Test::add("WebKitWebView", "backend", testWebViewWebBackend);
     1143#endif
    10801144    WebViewTest::add("WebKitWebView", "ephemeral", testWebViewEphemeral);
    10811145    WebViewTest::add("WebKitWebView", "custom-charset", testWebViewCustomCharset);
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebsiteData.cpp

    r222967 r225044  
    253253    GRefPtr<WebKitWebContext> webContext = adoptGRef(webkit_web_context_new_with_website_data_manager(manager.get()));
    254254    g_assert(webkit_web_context_is_ephemeral(webContext.get()));
    255     auto webView = Test::adoptView(webkit_web_view_new_with_context(webContext.get()));
     255    auto webView = Test::adoptView(Test::createWebView(webContext.get()));
    256256    g_assert(webkit_web_view_is_ephemeral(webView.get()));
    257257    g_assert(webkit_web_view_get_website_data_manager(webView.get()) == manager.get());
  • trunk/Tools/TestWebKitAPI/glib/WebKitGLib/TestMain.h

    r222967 r225044  
    144144    }
    145145
     146    static WebKitWebView* createWebView()
     147    {
     148#if PLATFORM(GTK)
     149        return WEBKIT_WEB_VIEW(webkit_web_view_new());
     150#elif PLATFORM(WPE)
     151        return webkit_web_view_new(nullptr);
     152#endif
     153    }
     154
     155    static WebKitWebView* createWebView(WebKitWebContext* context)
     156    {
     157#if PLATFORM(GTK)
     158        return WEBKIT_WEB_VIEW(webkit_web_view_new_with_context(context));
     159#elif PLATFORM(WPE)
     160        return webkit_web_view_new_with_context(nullptr, context);
     161#endif
     162    }
     163
     164    static WebKitWebView* createWebView(WebKitWebView* relatedView)
     165    {
     166#if PLATFORM(GTK)
     167        return WEBKIT_WEB_VIEW(webkit_web_view_new_with_related_view(relatedView));
     168#elif PLATFORM(WPE)
     169        return webkit_web_view_new_with_related_view(nullptr, relatedView);
     170#endif
     171    }
     172
     173    static WebKitWebView* createWebView(WebKitUserContentManager* contentManager)
     174    {
     175#if PLATFORM(GTK)
     176        return WEBKIT_WEB_VIEW(webkit_web_view_new_with_user_content_manager(contentManager));
     177#elif PLATFORM(WPE)
     178        return webkit_web_view_new_with_user_content_manager(nullptr, contentManager);
     179#endif
     180    }
     181
     182    static WebKitWebView* createWebView(WebKitSettings* settings)
     183    {
     184#if PLATFORM(GTK)
     185        return WEBKIT_WEB_VIEW(webkit_web_view_new_with_settings(settings));
     186#elif PLATFORM(WPE)
     187        return webkit_web_view_new_with_settings(nullptr, settings);
     188#endif
     189    }
     190
    146191    static void objectFinalized(Test* test, GObject* finalizedObject)
    147192    {
  • trunk/Tools/WebKitTestRunner/wpe/HeadlessViewBackend.cpp

    r224192 r225044  
    132132    if (m_egl.context)
    133133        eglDestroyContext(m_egl.display, m_egl.context);
     134
     135    wpe_mesa_view_backend_exportable_dma_buf_destroy(m_exportable);
    134136}
    135137
  • trunk/Tools/WebKitTestRunner/wpe/PlatformWebViewWPE.cpp

    r216931 r225044  
    4141{
    4242    m_window = new HeadlessViewBackend;
    43     m_view = WKViewCreateWithViewBackend(m_window->backend(), configuration);
     43    m_view = WKViewCreate(m_window->backend(), configuration);
    4444}
    4545
Note: See TracChangeset for help on using the changeset viewer.