Title: [131605] trunk/Source/WebKit2
Revision
131605
Author
[email protected]
Date
2012-10-17 08:47:48 -0700 (Wed, 17 Oct 2012)

Log Message

[GTK] Don't use the C API internally in WebKitBackForwardList
https://bugs.webkit.org/show_bug.cgi?id=96769

Reviewed by Gustavo Noronha Silva.

Using the C++ classes directly instead of the C API wrappers we
avoid a lot of toImpl/toAPI casts, string conversions and
allocations. The code is also a lot simpler and easier to read.

* UIProcess/API/gtk/WebKitBackForwardList.cpp:
(_WebKitBackForwardListPrivate):
(webkitBackForwardListGetOrCreateItem):
(webkitBackForwardListCreateList):
(webkitBackForwardListCreate):
(webkitBackForwardListChanged):
(webkit_back_forward_list_get_current_item):
(webkit_back_forward_list_get_back_item):
(webkit_back_forward_list_get_forward_item):
(webkit_back_forward_list_get_nth_item):
(webkit_back_forward_list_get_length):
(webkit_back_forward_list_get_back_list):
(webkit_back_forward_list_get_back_list_with_limit):
(webkit_back_forward_list_get_forward_list):
(webkit_back_forward_list_get_forward_list_with_limit):
* UIProcess/API/gtk/WebKitBackForwardListItem.cpp:
(_WebKitBackForwardListItemPrivate):
(webkitBackForwardListItemFinalized):
(webkitBackForwardListItemGetOrCreate):
(webkitBackForwardListItemGetItem):
(webkit_back_forward_list_item_get_uri):
(webkit_back_forward_list_item_get_title):
(webkit_back_forward_list_item_get_original_uri):
* UIProcess/API/gtk/WebKitBackForwardListPrivate.h:
* UIProcess/API/gtk/WebKitLoaderClient.cpp:
(didChangeBackForwardList):
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewConstructed):
(webkit_web_view_go_to_back_forward_list_item):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (131604 => 131605)


--- trunk/Source/WebKit2/ChangeLog	2012-10-17 15:38:51 UTC (rev 131604)
+++ trunk/Source/WebKit2/ChangeLog	2012-10-17 15:47:48 UTC (rev 131605)
@@ -1,5 +1,46 @@
 2012-10-17  Carlos Garcia Campos  <[email protected]>
 
+        [GTK] Don't use the C API internally in WebKitBackForwardList
+        https://bugs.webkit.org/show_bug.cgi?id=96769
+
+        Reviewed by Gustavo Noronha Silva.
+
+        Using the C++ classes directly instead of the C API wrappers we
+        avoid a lot of toImpl/toAPI casts, string conversions and
+        allocations. The code is also a lot simpler and easier to read.
+
+        * UIProcess/API/gtk/WebKitBackForwardList.cpp:
+        (_WebKitBackForwardListPrivate):
+        (webkitBackForwardListGetOrCreateItem):
+        (webkitBackForwardListCreateList):
+        (webkitBackForwardListCreate):
+        (webkitBackForwardListChanged):
+        (webkit_back_forward_list_get_current_item):
+        (webkit_back_forward_list_get_back_item):
+        (webkit_back_forward_list_get_forward_item):
+        (webkit_back_forward_list_get_nth_item):
+        (webkit_back_forward_list_get_length):
+        (webkit_back_forward_list_get_back_list):
+        (webkit_back_forward_list_get_back_list_with_limit):
+        (webkit_back_forward_list_get_forward_list):
+        (webkit_back_forward_list_get_forward_list_with_limit):
+        * UIProcess/API/gtk/WebKitBackForwardListItem.cpp:
+        (_WebKitBackForwardListItemPrivate):
+        (webkitBackForwardListItemFinalized):
+        (webkitBackForwardListItemGetOrCreate):
+        (webkitBackForwardListItemGetItem):
+        (webkit_back_forward_list_item_get_uri):
+        (webkit_back_forward_list_item_get_title):
+        (webkit_back_forward_list_item_get_original_uri):
+        * UIProcess/API/gtk/WebKitBackForwardListPrivate.h:
+        * UIProcess/API/gtk/WebKitLoaderClient.cpp:
+        (didChangeBackForwardList):
+        * UIProcess/API/gtk/WebKitWebView.cpp:
+        (webkitWebViewConstructed):
+        (webkit_web_view_go_to_back_forward_list_item):
+
+2012-10-17  Carlos Garcia Campos  <[email protected]>
+
         [GTK] Don't use the C API internally in WebKitURISchemeRequest
         https://bugs.webkit.org/show_bug.cgi?id=96787
 

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardList.cpp (131604 => 131605)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardList.cpp	2012-10-17 15:38:51 UTC (rev 131604)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardList.cpp	2012-10-17 15:47:48 UTC (rev 131605)
@@ -52,10 +52,10 @@
     LAST_SIGNAL
 };
 
-typedef HashMap<WKBackForwardListItemRef, GRefPtr<WebKitBackForwardListItem> > BackForwardListItemsMap;
+typedef HashMap<WebBackForwardListItem*, GRefPtr<WebKitBackForwardListItem> > BackForwardListItemsMap;
 
 struct _WebKitBackForwardListPrivate {
-    WKBackForwardListRef wkList;
+    WebBackForwardList* backForwardItems;
     BackForwardListItemsMap itemsMap;
 };
 
@@ -107,55 +107,55 @@
     g_type_class_add_private(listClass, sizeof(WebKitBackForwardListPrivate));
 }
 
-static WebKitBackForwardListItem* webkitBackForwardListGetOrCreateItem(WebKitBackForwardList* list, WKBackForwardListItemRef wkListItem)
+static WebKitBackForwardListItem* webkitBackForwardListGetOrCreateItem(WebKitBackForwardList* list, WebBackForwardListItem* webListItem)
 {
-    if (!wkListItem)
+    if (!webListItem)
         return 0;
 
     WebKitBackForwardListPrivate* priv = list->priv;
-    GRefPtr<WebKitBackForwardListItem> listItem = priv->itemsMap.get(wkListItem);
+    GRefPtr<WebKitBackForwardListItem> listItem = priv->itemsMap.get(webListItem);
     if (listItem)
         return listItem.get();
 
-    listItem = webkitBackForwardListItemGetOrCreate(wkListItem);
-    priv->itemsMap.set(wkListItem, listItem);
+    listItem = webkitBackForwardListItemGetOrCreate(webListItem);
+    priv->itemsMap.set(webListItem, listItem);
 
     return listItem.get();
 }
 
-static GList* webkitBackForwardListCreateList(WebKitBackForwardList* list, WKArrayRef wkList)
+static GList* webkitBackForwardListCreateList(WebKitBackForwardList* list, ImmutableArray* backForwardItems)
 {
-    if (!wkList)
+    if (!backForwardItems)
         return 0;
 
     GList* returnValue = 0;
-    for (size_t i = 0; i < WKArrayGetSize(wkList); ++i) {
-        WKBackForwardListItemRef wkItem = static_cast<WKBackForwardListItemRef>(WKArrayGetItemAtIndex(wkList, i));
-        returnValue = g_list_prepend(returnValue, webkitBackForwardListGetOrCreateItem(list, wkItem));
+    for (size_t i = 0; i < backForwardItems->size(); ++i) {
+        WebBackForwardListItem* webItem = static_cast<WebBackForwardListItem*>(backForwardItems->at(i));
+        returnValue = g_list_prepend(returnValue, webkitBackForwardListGetOrCreateItem(list, webItem));
     }
 
     return returnValue;
 }
 
-WebKitBackForwardList* webkitBackForwardListCreate(WKBackForwardListRef wkList)
+WebKitBackForwardList* webkitBackForwardListCreate(WebBackForwardList* backForwardItems)
 {
     WebKitBackForwardList* list = WEBKIT_BACK_FORWARD_LIST(g_object_new(WEBKIT_TYPE_BACK_FORWARD_LIST, NULL));
-    list->priv->wkList = wkList;
+    list->priv->backForwardItems = backForwardItems;
 
     return list;
 }
 
-void webkitBackForwardListChanged(WebKitBackForwardList* backForwardList, WKBackForwardListItemRef wkAddedItem, WKArrayRef wkRemovedItems)
+void webkitBackForwardListChanged(WebKitBackForwardList* backForwardList, WebBackForwardListItem* webAddedItem, ImmutableArray* webRemovedItems)
 {
-    WebKitBackForwardListItem* addedItem = webkitBackForwardListGetOrCreateItem(backForwardList, wkAddedItem);
+    WebKitBackForwardListItem* addedItem = webkitBackForwardListGetOrCreateItem(backForwardList, webAddedItem);
     GList* removedItems = 0;
 
-    size_t removedItemsSize = wkRemovedItems ? WKArrayGetSize(wkRemovedItems) : 0;
+    size_t removedItemsSize = webRemovedItems ? webRemovedItems->size() : 0;
     WebKitBackForwardListPrivate* priv = backForwardList->priv;
     for (size_t i = 0; i < removedItemsSize; ++i) {
-        WKBackForwardListItemRef wkItem = static_cast<WKBackForwardListItemRef>(WKArrayGetItemAtIndex(wkRemovedItems, i));
-        removedItems = g_list_prepend(removedItems, g_object_ref(G_OBJECT(priv->itemsMap.get(wkItem).get())));
-        priv->itemsMap.remove(wkItem);
+        WebBackForwardListItem* webItem = static_cast<WebBackForwardListItem*>(webRemovedItems->at(i));
+        removedItems = g_list_prepend(removedItems, g_object_ref(G_OBJECT(priv->itemsMap.get(webItem).get())));
+        priv->itemsMap.remove(webItem);
     }
 
     g_signal_emit(backForwardList, signals[CHANGED], 0, addedItem, removedItems, NULL);
@@ -175,7 +175,7 @@
 {
     g_return_val_if_fail(WEBKIT_IS_BACK_FORWARD_LIST(backForwardList), 0);
 
-    return webkitBackForwardListGetOrCreateItem(backForwardList, WKBackForwardListGetCurrentItem(backForwardList->priv->wkList));
+    return webkitBackForwardListGetOrCreateItem(backForwardList, backForwardList->priv->backForwardItems->currentItem());
 }
 
 /**
@@ -191,7 +191,7 @@
 {
     g_return_val_if_fail(WEBKIT_IS_BACK_FORWARD_LIST(backForwardList), 0);
 
-    return webkitBackForwardListGetOrCreateItem(backForwardList, WKBackForwardListGetBackItem(backForwardList->priv->wkList));
+    return webkitBackForwardListGetOrCreateItem(backForwardList, backForwardList->priv->backForwardItems->backItem());
 }
 
 /**
@@ -207,7 +207,7 @@
 {
     g_return_val_if_fail(WEBKIT_IS_BACK_FORWARD_LIST(backForwardList), 0);
 
-    return webkitBackForwardListGetOrCreateItem(backForwardList, WKBackForwardListGetForwardItem(backForwardList->priv->wkList));
+    return webkitBackForwardListGetOrCreateItem(backForwardList, backForwardList->priv->backForwardItems->forwardItem());
 }
 
 /**
@@ -224,7 +224,7 @@
 {
     g_return_val_if_fail(WEBKIT_IS_BACK_FORWARD_LIST(backForwardList), 0);
 
-    return webkitBackForwardListGetOrCreateItem(backForwardList, WKBackForwardListGetItemAtIndex(backForwardList->priv->wkList, index));
+    return webkitBackForwardListGetOrCreateItem(backForwardList, backForwardList->priv->backForwardItems->itemAtIndex(index));
 }
 
 /**
@@ -239,7 +239,7 @@
 
     WebKitBackForwardListPrivate* priv = backForwardList->priv;
     guint currentItem = webkit_back_forward_list_get_current_item(backForwardList) ? 1 : 0;
-    return WKBackForwardListGetBackListCount(priv->wkList) + WKBackForwardListGetForwardListCount(priv->wkList) + currentItem;
+    return priv->backForwardItems->backListCount() + priv->backForwardItems->forwardListCount() + currentItem;
 }
 
 /**
@@ -253,9 +253,7 @@
 {
     g_return_val_if_fail(WEBKIT_IS_BACK_FORWARD_LIST(backForwardList), 0);
 
-    guint limit = WKBackForwardListGetBackListCount(backForwardList->priv->wkList);
-    WKRetainPtr<WKArrayRef> wkList(AdoptWK, WKBackForwardListCopyBackListWithLimit(backForwardList->priv->wkList, limit));
-    return webkitBackForwardListCreateList(backForwardList, wkList.get());
+    return webkit_back_forward_list_get_back_list_with_limit(backForwardList, backForwardList->priv->backForwardItems->backListCount());
 }
 
 /**
@@ -270,8 +268,8 @@
 {
     g_return_val_if_fail(WEBKIT_IS_BACK_FORWARD_LIST(backForwardList), 0);
 
-    WKRetainPtr<WKArrayRef> wkList(AdoptWK, WKBackForwardListCopyBackListWithLimit(backForwardList->priv->wkList, limit));
-    return webkitBackForwardListCreateList(backForwardList, wkList.get());
+    WebKitBackForwardListPrivate* priv = backForwardList->priv;
+    return webkitBackForwardListCreateList(backForwardList, priv->backForwardItems->backListAsImmutableArrayWithLimit(limit).leakRef());
 }
 
 /**
@@ -285,9 +283,7 @@
 {
     g_return_val_if_fail(WEBKIT_IS_BACK_FORWARD_LIST(backForwardList), 0);
 
-    guint limit = WKBackForwardListGetForwardListCount(backForwardList->priv->wkList);
-    WKRetainPtr<WKArrayRef> wkList(AdoptWK, WKBackForwardListCopyForwardListWithLimit(backForwardList->priv->wkList, limit));
-    return webkitBackForwardListCreateList(backForwardList, wkList.get());
+    return webkit_back_forward_list_get_forward_list_with_limit(backForwardList, backForwardList->priv->backForwardItems->forwardListCount());
 }
 
 /**
@@ -302,6 +298,6 @@
 {
     g_return_val_if_fail(WEBKIT_IS_BACK_FORWARD_LIST(backForwardList), 0);
 
-    WKRetainPtr<WKArrayRef> wkList(AdoptWK, WKBackForwardListCopyForwardListWithLimit(backForwardList->priv->wkList, limit));
-    return webkitBackForwardListCreateList(backForwardList, wkList.get());
+    WebKitBackForwardListPrivate* priv = backForwardList->priv;
+    return webkitBackForwardListCreateList(backForwardList, priv->backForwardItems->forwardListAsImmutableArrayWithLimit(limit).leakRef());
 }

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.cpp (131604 => 131605)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.cpp	2012-10-17 15:38:51 UTC (rev 131604)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListItem.cpp	2012-10-17 15:47:48 UTC (rev 131605)
@@ -29,7 +29,7 @@
 using namespace WebKit;
 
 struct _WebKitBackForwardListItemPrivate {
-    WKRetainPtr<WKBackForwardListItemRef> wkListItem;
+    RefPtr<WebBackForwardListItem> webListItem;
     CString uri;
     CString title;
     CString originalURI;
@@ -59,7 +59,7 @@
     g_type_class_add_private(listItemClass, sizeof(WebKitBackForwardListItemPrivate));
 }
 
-typedef HashMap<WKBackForwardListItemRef, WebKitBackForwardListItem*> HistoryItemsMap;
+typedef HashMap<WebBackForwardListItem*, WebKitBackForwardListItem*> HistoryItemsMap;
 
 static HistoryItemsMap& historyItemsMap()
 {
@@ -67,34 +67,33 @@
     return itemsMap;
 }
 
-static void webkitBackForwardListItemFinalized(gpointer wkListItem, GObject* finalizedListItem)
+static void webkitBackForwardListItemFinalized(gpointer webListItem, GObject* finalizedListItem)
 {
-    ASSERT(G_OBJECT(historyItemsMap().get(static_cast<WKBackForwardListItemRef>(wkListItem))) == finalizedListItem);
-    historyItemsMap().remove(static_cast<WKBackForwardListItemRef>(wkListItem));
+    ASSERT(G_OBJECT(historyItemsMap().get(static_cast<WebBackForwardListItem*>(webListItem))) == finalizedListItem);
+    historyItemsMap().remove(static_cast<WebBackForwardListItem*>(webListItem));
 }
 
-WebKitBackForwardListItem* webkitBackForwardListItemGetOrCreate(WKBackForwardListItemRef wkListItem)
+WebKitBackForwardListItem* webkitBackForwardListItemGetOrCreate(WebBackForwardListItem* webListItem)
 {
-    if (!wkListItem)
+    if (!webListItem)
         return 0;
 
-    WebKitBackForwardListItem* listItem = historyItemsMap().get(wkListItem);
+    WebKitBackForwardListItem* listItem = historyItemsMap().get(webListItem);
     if (listItem)
         return listItem;
 
     listItem = WEBKIT_BACK_FORWARD_LIST_ITEM(g_object_new(WEBKIT_TYPE_BACK_FORWARD_LIST_ITEM, NULL));
-    listItem->priv->wkListItem = wkListItem;
+    listItem->priv->webListItem = webListItem;
 
-    g_object_weak_ref(G_OBJECT(listItem), webkitBackForwardListItemFinalized,
-                      const_cast<OpaqueWKBackForwardListItem*>(wkListItem));
-    historyItemsMap().set(wkListItem, listItem);
+    g_object_weak_ref(G_OBJECT(listItem), webkitBackForwardListItemFinalized, webListItem);
+    historyItemsMap().set(webListItem, listItem);
 
     return listItem;
 }
 
-WKBackForwardListItemRef webkitBackForwardListItemGetWKItem(WebKitBackForwardListItem* listItem)
+WebBackForwardListItem* webkitBackForwardListItemGetItem(WebKitBackForwardListItem* listItem)
 {
-    return listItem->priv->wkListItem.get();
+    return listItem->priv->webListItem.get();
 }
 
 /**
@@ -113,11 +112,11 @@
     g_return_val_if_fail(WEBKIT_IS_BACK_FORWARD_LIST_ITEM(listItem), 0);
 
     WebKitBackForwardListItemPrivate* priv = listItem->priv;
-    WKRetainPtr<WKURLRef> wkURI(AdoptWK, WKBackForwardListItemCopyURL(priv->wkListItem.get()));
-    if (toImpl(wkURI.get())->string().isEmpty())
+    String url = ""
+    if (url.isEmpty())
         return 0;
 
-    priv->uri = toImpl(wkURI.get())->string().utf8();
+    priv->uri = url.utf8();
     return priv->uri.data();
 }
 
@@ -133,11 +132,11 @@
     g_return_val_if_fail(WEBKIT_IS_BACK_FORWARD_LIST_ITEM(listItem), 0);
 
     WebKitBackForwardListItemPrivate* priv = listItem->priv;
-    WKRetainPtr<WKStringRef> wkTitle(AdoptWK, WKBackForwardListItemCopyTitle(priv->wkListItem.get()));
-    if (toImpl(wkTitle.get())->string().isEmpty())
+    String title = priv->webListItem->title();
+    if (title.isEmpty())
         return 0;
 
-    priv->title = toImpl(wkTitle.get())->string().utf8();
+    priv->title = title.utf8();
     return priv->title.data();
 }
 
@@ -155,10 +154,10 @@
     g_return_val_if_fail(WEBKIT_IS_BACK_FORWARD_LIST_ITEM(listItem), 0);
 
     WebKitBackForwardListItemPrivate* priv = listItem->priv;
-    WKRetainPtr<WKURLRef> wkOriginalURI(AdoptWK, WKBackForwardListItemCopyOriginalURL(priv->wkListItem.get()));
-    if (toImpl(wkOriginalURI.get())->string().isEmpty())
+    String originalURL = priv->webListItem->originalURL();
+    if (originalURL.isEmpty())
         return 0;
 
-    priv->originalURI = toImpl(wkOriginalURI.get())->string().utf8();
+    priv->originalURI = originalURL.utf8();
     return priv->originalURI.data();
 }

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListPrivate.h (131604 => 131605)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListPrivate.h	2012-10-17 15:38:51 UTC (rev 131604)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitBackForwardListPrivate.h	2012-10-17 15:47:48 UTC (rev 131605)
@@ -28,11 +28,12 @@
 
 #include "WebBackForwardList.h"
 #include "WebKitBackForwardList.h"
-#include <WebKit2/WebKit2_C.h>
 
-WebKitBackForwardList* webkitBackForwardListCreate(WKBackForwardListRef);
-WebKitBackForwardListItem* webkitBackForwardListItemGetOrCreate(WKBackForwardListItemRef);
-WKBackForwardListItemRef webkitBackForwardListItemGetWKItem(WebKitBackForwardListItem*);
-void webkitBackForwardListChanged(WebKitBackForwardList*, WKBackForwardListItemRef wkAddedItem, WKArrayRef wkRemovedItems);
+using namespace WebKit;
 
+WebKitBackForwardList* webkitBackForwardListCreate(WebBackForwardList*);
+WebKitBackForwardListItem* webkitBackForwardListItemGetOrCreate(WebBackForwardListItem*);
+WebBackForwardListItem* webkitBackForwardListItemGetItem(WebKitBackForwardListItem*);
+void webkitBackForwardListChanged(WebKitBackForwardList*, WebBackForwardListItem* webAddedItem, ImmutableArray* webRemovedItems);
+
 #endif // WebKitBackForwardListPrivate_h

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp (131604 => 131605)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp	2012-10-17 15:38:51 UTC (rev 131604)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp	2012-10-17 15:47:48 UTC (rev 131605)
@@ -112,7 +112,7 @@
 
 static void didChangeBackForwardList(WKPageRef page, WKBackForwardListItemRef addedItem, WKArrayRef removedItems, const void* clientInfo)
 {
-    webkitBackForwardListChanged(webkit_web_view_get_back_forward_list(WEBKIT_WEB_VIEW(clientInfo)), addedItem, removedItems);
+    webkitBackForwardListChanged(webkit_web_view_get_back_forward_list(WEBKIT_WEB_VIEW(clientInfo)), toImpl(addedItem), toImpl(removedItems));
 }
 
 void attachLoaderClientToView(WebKitWebView* webView)

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp (131604 => 131605)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2012-10-17 15:38:51 UTC (rev 131604)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2012-10-17 15:47:48 UTC (rev 131605)
@@ -408,7 +408,7 @@
     attachContextMenuClientToView(webView);
     attachFormClientToView(webView);
 
-    priv->backForwardList = adoptGRef(webkitBackForwardListCreate(toAPI(getPage(webView)->backForwardList())));
+    priv->backForwardList = adoptGRef(webkitBackForwardListCreate(getPage(webView)->backForwardList()));
 
     GRefPtr<WebKitSettings> settings = adoptGRef(webkit_settings_new());
     webkitWebViewSetSettings(webView, settings.get());
@@ -2057,7 +2057,7 @@
     g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
     g_return_if_fail(WEBKIT_IS_BACK_FORWARD_LIST_ITEM(listItem));
 
-    getPage(webView)->goToBackForwardItem(toImpl(webkitBackForwardListItemGetWKItem(listItem)));
+    getPage(webView)->goToBackForwardItem(webkitBackForwardListItemGetItem(listItem));
 }
 
 /**
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to