Changeset 230557 in webkit


Ignore:
Timestamp:
Apr 11, 2018 10:53:26 PM (6 years ago)
Author:
zandobersek@gmail.com
Message:

[WPE] Make WebKitWebViewBackend object mandatory for webkit_web_view_new*() constructors
https://bugs.webkit.org/show_bug.cgi?id=184513

Reviewed by Michael Catanzaro.

Source/WebKit:

webkit_web_view_new*() constructors should always expect a non-null
WebKitWebViewBackend object, forcing the user to specify how the
wpe_view_backend object is managed for the WebKitWebView that's being
created.

webkitWebViewBackendCreateDefault() and the default
_WebKitWebViewBackend() constructor are removed. WPE-specific
webkit_web_view_new*() entrypoints are updated to bail if the passed-in
WebKitWebViewBackend object is null. Documentation is updated
accordingly.

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewConstructed):

  • UIProcess/API/wpe/WebKitWebViewBackend.cpp:

(webkitWebViewBackendCreateDefault): Deleted.

  • UIProcess/API/wpe/WebKitWebViewBackendPrivate.h:
  • 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):

Tools:

Update the WPE-specific testWebViewWebBackend() test case, removing the
test that passes a null WebKitWebViewBackend object to the
webkit_web_view_new() call.

Helper createWebViewBackend() that's called via Test::createWebView()
variations is updated to, in case of not using the headless backend,
return a WebKitWebViewBackend instance that wraps around a
default wpe_view_backend object.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:

(testWebViewWebBackend):

  • TestWebKitAPI/glib/WebKitGLib/TestMain.h:

(Test::createWebViewBackend):

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r230551 r230557  
     12018-04-11  Zan Dobersek  <zdobersek@igalia.com>
     2
     3        [WPE] Make WebKitWebViewBackend object mandatory for webkit_web_view_new*() constructors
     4        https://bugs.webkit.org/show_bug.cgi?id=184513
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        webkit_web_view_new*() constructors should always expect a non-null
     9        WebKitWebViewBackend object, forcing the user to specify how the
     10        wpe_view_backend object is managed for the WebKitWebView that's being
     11        created.
     12
     13        webkitWebViewBackendCreateDefault() and the default
     14        _WebKitWebViewBackend() constructor are removed. WPE-specific
     15        webkit_web_view_new*() entrypoints are updated to bail if the passed-in
     16        WebKitWebViewBackend object is null. Documentation is updated
     17        accordingly.
     18
     19        * UIProcess/API/glib/WebKitWebView.cpp:
     20        (webkitWebViewConstructed):
     21        * UIProcess/API/wpe/WebKitWebViewBackend.cpp:
     22        (webkitWebViewBackendCreateDefault): Deleted.
     23        * UIProcess/API/wpe/WebKitWebViewBackendPrivate.h:
     24        * UIProcess/API/wpe/WebKitWebViewWPE.cpp:
     25        (webkit_web_view_new):
     26        (webkit_web_view_new_with_context):
     27        (webkit_web_view_new_with_related_view):
     28        (webkit_web_view_new_with_settings):
     29        (webkit_web_view_new_with_user_content_manager):
     30
    1312018-04-11  Fujii Hironori  <Hironori.Fujii@sony.com>
    232
  • trunk/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp

    r229970 r230557  
    624624    WebKitWebView* webView = WEBKIT_WEB_VIEW(object);
    625625    WebKitWebViewPrivate* priv = webView->priv;
    626 #if PLATFORM(WPE)
    627     if (!priv->backend)
    628         priv->backend = webkitWebViewBackendCreateDefault();
    629 #endif
    630626    if (priv->relatedView) {
    631627        priv->context = webkit_web_view_get_context(priv->relatedView);
  • trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebViewBackend.cpp

    r227418 r230557  
    4747    }
    4848
    49     _WebKitWebViewBackend()
    50         : backend(wpe_view_backend_create())
    51         , notifyCallback(reinterpret_cast<GDestroyNotify>(wpe_view_backend_destroy))
    52         , notifyCallbackData(backend)
    53     {
    54     }
    55 
    5649    ~_WebKitWebViewBackend()
    5750    {
     
    8174        fastFree(viewBackend);
    8275    }
    83 }
    84 
    85 GRefPtr<WebKitWebViewBackend> webkitWebViewBackendCreateDefault()
    86 {
    87     auto* viewBackend = static_cast<WebKitWebViewBackend*>(fastMalloc(sizeof(WebKitWebViewBackend)));
    88     new (viewBackend) WebKitWebViewBackend();
    89     return adoptGRef(viewBackend);
    9076}
    9177
  • trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebViewBackendPrivate.h

    r227418 r230557  
    3232
    3333void webkitWebViewBackendUnref(WebKitWebViewBackend*);
    34 GRefPtr<WebKitWebViewBackend> webkitWebViewBackendCreateDefault();
  • trunk/Source/WebKit/UIProcess/API/wpe/WebKitWebViewWPE.cpp

    r225044 r230557  
    4040/**
    4141 * webkit_web_view_new:
    42  * @backend: (nullable) (transfer full): a #WebKitWebViewBackend, or %NULL to use the default
     42 * @backend: (transfer full): a #WebKitWebViewBackend
    4343 *
    4444 * Creates a new #WebKitWebView with the default #WebKitWebContext and
     
    5252WebKitWebView* webkit_web_view_new(WebKitWebViewBackend* backend)
    5353{
     54    g_return_val_if_fail(backend, nullptr);
     55
    5456    return WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
    5557        "backend", backend,
     
    6062/**
    6163 * webkit_web_view_new_with_context:
    62  * @backend: (nullable) (transfer full): a #WebKitWebViewBackend, or %NULL to use the default
     64 * @backend: (transfer full): a #WebKitWebViewBackend
    6365 * @context: the #WebKitWebContext to be used by the #WebKitWebView
    6466 *
     
    7274WebKitWebView* webkit_web_view_new_with_context(WebKitWebViewBackend* backend, WebKitWebContext* context)
    7375{
     76    g_return_val_if_fail(backend, nullptr);
    7477    g_return_val_if_fail(WEBKIT_IS_WEB_CONTEXT(context), nullptr);
    7578
     
    8386/**
    8487 * webkit_web_view_new_with_related_view: (constructor)
    85  * @backend: (nullable) (transfer full): a #WebKitWebViewBackend, or %NULL to use the default
     88 * @backend: (transfer full): a #WebKitWebViewBackend
    8689 * @web_view: the related #WebKitWebView
    8790 *
     
    103106WebKitWebView* webkit_web_view_new_with_related_view(WebKitWebViewBackend* backend, WebKitWebView* webView)
    104107{
     108    g_return_val_if_fail(backend, nullptr);
    105109    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), nullptr);
    106110
     
    128132WebKitWebView* webkit_web_view_new_with_settings(WebKitWebViewBackend* backend, WebKitSettings* settings)
    129133{
     134    g_return_val_if_fail(backend, nullptr);
    130135    g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), nullptr);
    131136
     
    138143/**
    139144 * webkit_web_view_new_with_user_content_manager:
    140  * @backend: (nullable) (transfer full): a #WebKitWebViewBackend, or %NULL to use the default
     145 * @backend: (transfer full): a #WebKitWebViewBackend
    141146 * @user_content_manager: a #WebKitUserContentManager.
    142147 *
     
    151156WebKitWebView* webkit_web_view_new_with_user_content_manager(WebKitWebViewBackend* backend, WebKitUserContentManager* userContentManager)
    152157{
     158    g_return_val_if_fail(backend, nullptr);
    153159    g_return_val_if_fail(WEBKIT_IS_USER_CONTENT_MANAGER(userContentManager), nullptr);
    154160
  • trunk/Tools/ChangeLog

    r230555 r230557  
     12018-04-11  Zan Dobersek  <zdobersek@igalia.com>
     2
     3        [WPE] Make WebKitWebViewBackend object mandatory for webkit_web_view_new*() constructors
     4        https://bugs.webkit.org/show_bug.cgi?id=184513
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        Update the WPE-specific testWebViewWebBackend() test case, removing the
     9        test that passes a null WebKitWebViewBackend object to the
     10        webkit_web_view_new() call.
     11
     12        Helper createWebViewBackend() that's called via Test::createWebView()
     13        variations is updated to, in case of not using the headless backend,
     14        return a WebKitWebViewBackend instance that wraps around a
     15        default wpe_view_backend object.
     16
     17        * TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:
     18        (testWebViewWebBackend):
     19        * TestWebKitAPI/glib/WebKitGLib/TestMain.h:
     20        (Test::createWebViewBackend):
     21
    1222018-04-11  Zalan Bujtas  <zalan@apple.com>
    223
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp

    r229799 r230557  
    109109static void testWebViewWebBackend(Test* test, gconstpointer)
    110110{
    111     // Use the default backend (we don't have a way to check the backend will be actually freed).
    112     GRefPtr<WebKitWebView> webView = adoptGRef(webkit_web_view_new(nullptr));
     111    // User provided backend with default deleter (we don't have a way to check the backend will be actually freed).
     112    GRefPtr<WebKitWebView> webView = adoptGRef(webkit_web_view_new(webkit_web_view_backend_new(wpe_view_backend_create(), nullptr, nullptr)));
    113113    test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView.get()));
    114114    auto* viewBackend = webkit_web_view_get_backend(webView.get());
    115115    g_assert(viewBackend);
    116116    auto* wpeBackend = webkit_web_view_backend_get_wpe_backend(viewBackend);
    117     g_assert(wpeBackend);
    118     webView = nullptr;
    119 
    120     // User provided backend with default deleter (we don't have a way to check the backend will be actually freed).
    121     webView = adoptGRef(webkit_web_view_new(webkit_web_view_backend_new(wpe_view_backend_create(), nullptr, nullptr)));
    122     test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView.get()));
    123     viewBackend = webkit_web_view_get_backend(webView.get());
    124     g_assert(viewBackend);
    125     wpeBackend = webkit_web_view_backend_get_wpe_backend(viewBackend);
    126117    g_assert(wpeBackend);
    127118    webView = nullptr;
  • trunk/Tools/TestWebKitAPI/glib/WebKitGLib/TestMain.h

    r227062 r230557  
    145145    {
    146146        const char* useHeadlessViewBackend = g_getenv("WPE_USE_HEADLESS_VIEW_BACKEND");
    147         if (!useHeadlessViewBackend || !strcmp(useHeadlessViewBackend, "0"))
    148             return nullptr;
     147        if (!useHeadlessViewBackend || !strcmp(useHeadlessViewBackend, "0")) {
     148            auto* backend = wpe_view_backend_create();
     149            return webkit_web_view_backend_new(backend, reinterpret_cast<GDestroyNotify>(wpe_view_backend_destroy), backend);
     150        }
    149151        auto* headlessBackend = new HeadlessViewBackend;
    150152        return webkit_web_view_backend_new(headlessBackend->backend(), [](gpointer userData) {
Note: See TracChangeset for help on using the changeset viewer.