Changeset 143302 in webkit


Ignore:
Timestamp:
Feb 18, 2013 11:48:40 PM (11 years ago)
Author:
Carlos Garcia Campos
Message:

[GTK] Remove webkit_web_view_get_subresources from WebKit2 GTK+ API
https://bugs.webkit.org/show_bug.cgi?id=110125

Reviewed by Anders Carlsson.

This API is currently implemented caching all resources in the
WebView which causes some problems in documents loading resources
indefinitely. This API was used in WebKit1 mainly to implement
webkit_web_view_save(), but we already have such API in
WebKit2.

  • UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:

(didReceiveWebViewMessageFromInjectedBundle):

  • UIProcess/API/gtk/WebKitWebView.cpp:

(_WebKitWebViewPrivate):
(webkitWebViewLoadChanged):

  • UIProcess/API/gtk/WebKitWebView.h:
  • UIProcess/API/gtk/WebKitWebViewPrivate.h:
  • UIProcess/API/gtk/docs/webkit2gtk-sections.txt:
  • UIProcess/API/gtk/tests/TestResources.cpp:

(testWebViewResources):
(testWebResourceGetData):

Location:
trunk/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r143297 r143302  
     12013-02-18  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] Remove webkit_web_view_get_subresources from WebKit2 GTK+ API
     4        https://bugs.webkit.org/show_bug.cgi?id=110125
     5
     6        Reviewed by Anders Carlsson.
     7
     8        This API is currently implemented caching all resources in the
     9        WebView which causes some problems in documents loading resources
     10        indefinitely. This API was used in WebKit1 mainly to implement
     11        webkit_web_view_save(), but we already have such API in
     12        WebKit2.
     13
     14        * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:
     15        (didReceiveWebViewMessageFromInjectedBundle):
     16        * UIProcess/API/gtk/WebKitWebView.cpp:
     17        (_WebKitWebViewPrivate):
     18        (webkitWebViewLoadChanged):
     19        * UIProcess/API/gtk/WebKitWebView.h:
     20        * UIProcess/API/gtk/WebKitWebViewPrivate.h:
     21        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt:
     22        * UIProcess/API/gtk/tests/TestResources.cpp:
     23        (testWebViewResources):
     24        (testWebResourceGetData):
     25
    1262013-02-18  Christophe Dumez  <dchris@gmail.com>
    227
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp

    r141096 r143302  
    7272    } else if (g_str_equal(messageName, "DidFinishLoadForResource")) {
    7373        WebUInt64* resourceIdentifier = static_cast<WebUInt64*>(message.get(String::fromUTF8("Identifier")));
    74         GRefPtr<WebKitWebResource> resource = webkitWebViewResourceLoadFinished(webView, resourceIdentifier->value());
     74        GRefPtr<WebKitWebResource> resource = webkitWebViewGetLoadingWebResource(webView, resourceIdentifier->value());
    7575        if (!resource)
    7676            return;
    7777
    7878        webkitWebResourceFinished(resource.get());
     79        webkitWebViewRemoveLoadingWebResource(webView, resourceIdentifier->value());
    7980    } else if (g_str_equal(messageName, "DidFailLoadForResource")) {
    8081        WebUInt64* resourceIdentifier = static_cast<WebUInt64*>(message.get(String::fromUTF8("Identifier")));
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp

    r141096 r143302  
    131131
    132132typedef HashMap<uint64_t, GRefPtr<WebKitWebResource> > LoadingResourcesMap;
    133 typedef HashMap<String, GRefPtr<WebKitWebResource> > ResourcesMap;
    134133
    135134struct _WebKitWebViewPrivate {
     
    170169    GRefPtr<WebKitWebResource> mainResource;
    171170    LoadingResourcesMap loadingResourcesMap;
    172     ResourcesMap subresourcesMap;
    173171
    174172    GRefPtr<WebKitWebInspector> inspector;
     
    13641362        webkitWebViewUpdateFaviconURI(webView, faviconURI.get());
    13651363
    1366         priv->subresourcesMap.clear();
    13671364        if (!priv->mainResource) {
    13681365            // When a page is loaded from the history cache, the main resource load callbacks
     
    15711568    ASSERT(priv->loadingResourcesMap.contains(resourceIdentifier));
    15721569    priv->loadingResourcesMap.remove(resourceIdentifier);
    1573 }
    1574 
    1575 WebKitWebResource* webkitWebViewResourceLoadFinished(WebKitWebView* webView, uint64_t resourceIdentifier)
    1576 {
    1577     WebKitWebViewPrivate* priv = webView->priv;
    1578     WebKitWebResource* resource = webkitWebViewGetLoadingWebResource(webView, resourceIdentifier);
    1579     if (resource != priv->mainResource)
    1580         priv->subresourcesMap.set(String::fromUTF8(webkit_web_resource_get_uri(resource)), resource);
    1581     webkitWebViewRemoveLoadingWebResource(webView, resourceIdentifier);
    1582     return resource;
    15831570}
    15841571
     
    26412628 *
    26422629 * Return the main resource of @web_view.
    2643  * See also webkit_web_view_get_subresources():
    26442630 *
    26452631 * Returns: (transfer none): the main #WebKitWebResource of the view
     
    26512637
    26522638    return webView->priv->mainResource.get();
    2653 }
    2654 
    2655 /**
    2656  * webkit_web_view_get_subresources:
    2657  * @web_view: a #WebKitWebView
    2658  *
    2659  * Return the list of subresources of @web_view.
    2660  * See also webkit_web_view_get_main_resource().
    2661  *
    2662  * Returns: (element-type WebKitWebResource) (transfer container): a list of #WebKitWebResource.
    2663  */
    2664 GList* webkit_web_view_get_subresources(WebKitWebView* webView)
    2665 {
    2666     g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
    2667 
    2668     GList* subresources = 0;
    2669     WebKitWebViewPrivate* priv = webView->priv;
    2670     ResourcesMap::const_iterator end = priv->subresourcesMap.end();
    2671     for (ResourcesMap::const_iterator it = priv->subresourcesMap.begin(); it != end; ++it)
    2672         subresources = g_list_prepend(subresources, it->value.get());
    2673 
    2674     return g_list_reverse(subresources);
    26752639}
    26762640
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h

    r139305 r143302  
    372372webkit_web_view_get_main_resource                    (WebKitWebView             *web_view);
    373373
    374 WEBKIT_API GList *
    375 webkit_web_view_get_subresources                     (WebKitWebView             *web_view);
    376 
    377374WEBKIT_API WebKitWebInspector *
    378375webkit_web_view_get_inspector                        (WebKitWebView             *web_view);
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h

    r138273 r143302  
    5252WebKitWebResource* webkitWebViewGetLoadingWebResource(WebKitWebView*, uint64_t resourceIdentifier);
    5353void webkitWebViewRemoveLoadingWebResource(WebKitWebView*, uint64_t resourceIdentifier);
    54 WebKitWebResource* webkitWebViewResourceLoadFinished(WebKitWebView*, uint64_t resourceIdentifier);
    5554bool webkitWebViewEnterFullScreen(WebKitWebView*);
    5655bool webkitWebViewLeaveFullScreen(WebKitWebView*);
  • trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt

    r141102 r143302  
    151151webkit_script_dialog_prompt_set_text
    152152webkit_web_view_get_main_resource
    153 webkit_web_view_get_subresources
    154153
    155154<SUBSECTION Standard>
  • trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestResources.cpp

    r130886 r143302  
    9494    }
    9595
     96    void clearSubresources()
     97    {
     98        g_list_free_full(m_subresources, reinterpret_cast<GDestroyNotify>(g_object_unref));
     99        m_subresources = 0;
     100    }
     101
    96102    ResourcesTest()
    97103        : WebViewTest()
     
    99105        , m_resourcesToLoad(0)
    100106        , m_resourceDataSize(0)
     107        , m_subresources(0)
    101108    {
    102109        g_signal_connect(m_webView, "resource-load-started", G_CALLBACK(resourceLoadStartedCallback), this);
    103110    }
    104111
     112    ~ResourcesTest()
     113    {
     114        clearSubresources();
     115    }
     116
    105117    virtual void resourceLoadStarted(WebKitWebResource* resource, WebKitURIRequest* request)
    106118    {
     
    122134    {
    123135        g_signal_handlers_disconnect_matched(resource, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
     136        if (webkit_web_view_get_main_resource(m_webView) != resource)
     137            m_subresources = g_list_prepend(m_subresources, g_object_ref(resource));
    124138        if (++m_resourcesLoaded == m_resourcesToLoad)
    125139            g_main_loop_quit(m_mainLoop);
     
    135149        m_resourcesLoaded = 0;
    136150        m_resourcesToLoad = resourcesCount;
     151        clearSubresources();
    137152        g_main_loop_run(m_mainLoop);
     153    }
     154
     155    GList* subresources()
     156    {
     157        return m_subresources;
    138158    }
    139159
     
    178198    GOwnPtr<char> m_resourceData;
    179199    size_t m_resourceDataSize;
     200    GList* m_subresources;
    180201};
    181202
     
    184205    // Nothing loaded yet, there shoulnd't be resources.
    185206    g_assert(!webkit_web_view_get_main_resource(test->m_webView));
    186     g_assert(!webkit_web_view_get_subresources(test->m_webView));
     207    g_assert(!test->subresources());
    187208
    188209    // Load simple page without subresources.
     
    192213    g_assert(resource);
    193214    g_assert_cmpstr(webkit_web_view_get_uri(test->m_webView), ==, webkit_web_resource_get_uri(resource));
    194     g_assert(!webkit_web_view_get_subresources(test->m_webView));
     215    g_assert(!test->subresources());
    195216
    196217    // Load simple page with subresources.
     
    201222    g_assert(resource);
    202223    g_assert_cmpstr(webkit_web_view_get_uri(test->m_webView), ==, webkit_web_resource_get_uri(resource));
    203     GOwnPtr<GList> subresources(webkit_web_view_get_subresources(test->m_webView));
     224    GList* subresources = test->subresources();
    204225    g_assert(subresources);
    205     g_assert_cmpint(g_list_length(subresources.get()), ==, 3);
     226    g_assert_cmpint(g_list_length(subresources), ==, 3);
    206227
    207228#if 0
     
    506527    test->checkResourceData(resource);
    507528
    508     GOwnPtr<GList> subresources(webkit_web_view_get_subresources(test->m_webView));
    509     for (GList* item = subresources.get(); item; item = g_list_next(item))
     529    GList* subresources = test->subresources();
     530    for (GList* item = subresources; item; item = g_list_next(item))
    510531        test->checkResourceData(WEBKIT_WEB_RESOURCE(item->data));
    511532}
Note: See TracChangeset for help on using the changeset viewer.