Changeset 143302 in webkit
- Timestamp:
- Feb 18, 2013 11:48:40 PM (11 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r143297 r143302 1 2013-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 1 26 2013-02-18 Christophe Dumez <dchris@gmail.com> 2 27 -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp
r141096 r143302 72 72 } else if (g_str_equal(messageName, "DidFinishLoadForResource")) { 73 73 WebUInt64* resourceIdentifier = static_cast<WebUInt64*>(message.get(String::fromUTF8("Identifier"))); 74 GRefPtr<WebKitWebResource> resource = webkitWebView ResourceLoadFinished(webView, resourceIdentifier->value());74 GRefPtr<WebKitWebResource> resource = webkitWebViewGetLoadingWebResource(webView, resourceIdentifier->value()); 75 75 if (!resource) 76 76 return; 77 77 78 78 webkitWebResourceFinished(resource.get()); 79 webkitWebViewRemoveLoadingWebResource(webView, resourceIdentifier->value()); 79 80 } else if (g_str_equal(messageName, "DidFailLoadForResource")) { 80 81 WebUInt64* resourceIdentifier = static_cast<WebUInt64*>(message.get(String::fromUTF8("Identifier"))); -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp
r141096 r143302 131 131 132 132 typedef HashMap<uint64_t, GRefPtr<WebKitWebResource> > LoadingResourcesMap; 133 typedef HashMap<String, GRefPtr<WebKitWebResource> > ResourcesMap;134 133 135 134 struct _WebKitWebViewPrivate { … … 170 169 GRefPtr<WebKitWebResource> mainResource; 171 170 LoadingResourcesMap loadingResourcesMap; 172 ResourcesMap subresourcesMap;173 171 174 172 GRefPtr<WebKitWebInspector> inspector; … … 1364 1362 webkitWebViewUpdateFaviconURI(webView, faviconURI.get()); 1365 1363 1366 priv->subresourcesMap.clear();1367 1364 if (!priv->mainResource) { 1368 1365 // When a page is loaded from the history cache, the main resource load callbacks … … 1571 1568 ASSERT(priv->loadingResourcesMap.contains(resourceIdentifier)); 1572 1569 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;1583 1570 } 1584 1571 … … 2641 2628 * 2642 2629 * Return the main resource of @web_view. 2643 * See also webkit_web_view_get_subresources():2644 2630 * 2645 2631 * Returns: (transfer none): the main #WebKitWebResource of the view … … 2651 2637 2652 2638 return webView->priv->mainResource.get(); 2653 }2654 2655 /**2656 * webkit_web_view_get_subresources:2657 * @web_view: a #WebKitWebView2658 *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);2675 2639 } 2676 2640 -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h
r139305 r143302 372 372 webkit_web_view_get_main_resource (WebKitWebView *web_view); 373 373 374 WEBKIT_API GList *375 webkit_web_view_get_subresources (WebKitWebView *web_view);376 377 374 WEBKIT_API WebKitWebInspector * 378 375 webkit_web_view_get_inspector (WebKitWebView *web_view); -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h
r138273 r143302 52 52 WebKitWebResource* webkitWebViewGetLoadingWebResource(WebKitWebView*, uint64_t resourceIdentifier); 53 53 void webkitWebViewRemoveLoadingWebResource(WebKitWebView*, uint64_t resourceIdentifier); 54 WebKitWebResource* webkitWebViewResourceLoadFinished(WebKitWebView*, uint64_t resourceIdentifier);55 54 bool webkitWebViewEnterFullScreen(WebKitWebView*); 56 55 bool webkitWebViewLeaveFullScreen(WebKitWebView*); -
trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt
r141102 r143302 151 151 webkit_script_dialog_prompt_set_text 152 152 webkit_web_view_get_main_resource 153 webkit_web_view_get_subresources154 153 155 154 <SUBSECTION Standard> -
trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestResources.cpp
r130886 r143302 94 94 } 95 95 96 void clearSubresources() 97 { 98 g_list_free_full(m_subresources, reinterpret_cast<GDestroyNotify>(g_object_unref)); 99 m_subresources = 0; 100 } 101 96 102 ResourcesTest() 97 103 : WebViewTest() … … 99 105 , m_resourcesToLoad(0) 100 106 , m_resourceDataSize(0) 107 , m_subresources(0) 101 108 { 102 109 g_signal_connect(m_webView, "resource-load-started", G_CALLBACK(resourceLoadStartedCallback), this); 103 110 } 104 111 112 ~ResourcesTest() 113 { 114 clearSubresources(); 115 } 116 105 117 virtual void resourceLoadStarted(WebKitWebResource* resource, WebKitURIRequest* request) 106 118 { … … 122 134 { 123 135 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)); 124 138 if (++m_resourcesLoaded == m_resourcesToLoad) 125 139 g_main_loop_quit(m_mainLoop); … … 135 149 m_resourcesLoaded = 0; 136 150 m_resourcesToLoad = resourcesCount; 151 clearSubresources(); 137 152 g_main_loop_run(m_mainLoop); 153 } 154 155 GList* subresources() 156 { 157 return m_subresources; 138 158 } 139 159 … … 178 198 GOwnPtr<char> m_resourceData; 179 199 size_t m_resourceDataSize; 200 GList* m_subresources; 180 201 }; 181 202 … … 184 205 // Nothing loaded yet, there shoulnd't be resources. 185 206 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()); 187 208 188 209 // Load simple page without subresources. … … 192 213 g_assert(resource); 193 214 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()); 195 216 196 217 // Load simple page with subresources. … … 201 222 g_assert(resource); 202 223 g_assert_cmpstr(webkit_web_view_get_uri(test->m_webView), ==, webkit_web_resource_get_uri(resource)); 203 G OwnPtr<GList> subresources(webkit_web_view_get_subresources(test->m_webView));224 GList* subresources = test->subresources(); 204 225 g_assert(subresources); 205 g_assert_cmpint(g_list_length(subresources .get()), ==, 3);226 g_assert_cmpint(g_list_length(subresources), ==, 3); 206 227 207 228 #if 0 … … 506 527 test->checkResourceData(resource); 507 528 508 G OwnPtr<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)) 510 531 test->checkResourceData(WEBKIT_WEB_RESOURCE(item->data)); 511 532 }
Note: See TracChangeset
for help on using the changeset viewer.