Title: [131756] trunk/Source/WebKit2
Revision
131756
Author
[email protected]
Date
2012-10-18 08:49:19 -0700 (Thu, 18 Oct 2012)

Log Message

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

Reviewed by Xan Lopez.

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/WebKitFormClient.cpp:
(willSubmitForm):
* UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp:
(_WebKitFormSubmissionRequestPrivate):
(webkitFormSubmissionRequestCreate):
(webkit_form_submission_request_get_text_fields):
(webkit_form_submission_request_submit):
* UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (131755 => 131756)


--- trunk/Source/WebKit2/ChangeLog	2012-10-18 15:27:35 UTC (rev 131755)
+++ trunk/Source/WebKit2/ChangeLog	2012-10-18 15:49:19 UTC (rev 131756)
@@ -1,5 +1,25 @@
 2012-10-18  Carlos Garcia Campos  <[email protected]>
 
+        [GTK] Don't use the C API internally in WebKitFormSubmissionRequest
+        https://bugs.webkit.org/show_bug.cgi?id=96777
+
+        Reviewed by Xan Lopez.
+
+        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/WebKitFormClient.cpp:
+        (willSubmitForm):
+        * UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp:
+        (_WebKitFormSubmissionRequestPrivate):
+        (webkitFormSubmissionRequestCreate):
+        (webkit_form_submission_request_get_text_fields):
+        (webkit_form_submission_request_submit):
+        * UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h:
+
+2012-10-18  Carlos Garcia Campos  <[email protected]>
+
         [GTK] Don't use the C API internally in WebKitSettings
         https://bugs.webkit.org/show_bug.cgi?id=96784
 

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFormClient.cpp (131755 => 131756)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFormClient.cpp	2012-10-18 15:27:35 UTC (rev 131755)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFormClient.cpp	2012-10-18 15:49:19 UTC (rev 131756)
@@ -30,7 +30,7 @@
 
 static void willSubmitForm(WKPageRef page, WKFrameRef frame, WKFrameRef sourceFrame, WKDictionaryRef values, WKTypeRef userData, WKFormSubmissionListenerRef listener, const void* clientInfo)
 {
-    GRefPtr<WebKitFormSubmissionRequest> request = adoptGRef(webkitFormSubmissionRequestCreate(values, listener));
+    GRefPtr<WebKitFormSubmissionRequest> request = adoptGRef(webkitFormSubmissionRequestCreate(toImpl(values), toImpl(listener)));
     webkitWebViewSubmitFormRequest(WEBKIT_WEB_VIEW(clientInfo), request.get());
 }
 

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp (131755 => 131756)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp	2012-10-18 15:27:35 UTC (rev 131755)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp	2012-10-18 15:49:19 UTC (rev 131756)
@@ -20,17 +20,17 @@
 #include "config.h"
 #include "WebKitFormSubmissionRequest.h"
 
+#include "ImmutableDictionary.h"
+#include "WebFormSubmissionListenerProxy.h"
 #include "WebKitFormSubmissionRequestPrivate.h"
 #include <wtf/gobject/GRefPtr.h>
 #include <wtf/text/CString.h>
 
-using namespace WebKit;
-
 G_DEFINE_TYPE(WebKitFormSubmissionRequest, webkit_form_submission_request, G_TYPE_OBJECT)
 
 struct _WebKitFormSubmissionRequestPrivate {
-    WKRetainPtr<WKDictionaryRef> wkValues;
-    WKRetainPtr<WKFormSubmissionListenerRef> wkListener;
+    RefPtr<ImmutableDictionary> webValues;
+    RefPtr<WebFormSubmissionListenerProxy> listener;
     GRefPtr<GHashTable> values;
     bool handledRequest;
 };
@@ -61,11 +61,11 @@
     g_type_class_add_private(requestClass, sizeof(WebKitFormSubmissionRequestPrivate));
 }
 
-WebKitFormSubmissionRequest* webkitFormSubmissionRequestCreate(WKDictionaryRef wkValues, WKFormSubmissionListenerRef wkListener)
+WebKitFormSubmissionRequest* webkitFormSubmissionRequestCreate(ImmutableDictionary* values, WebFormSubmissionListenerProxy* listener)
 {
     WebKitFormSubmissionRequest* request = WEBKIT_FORM_SUBMISSION_REQUEST(g_object_new(WEBKIT_TYPE_FORM_SUBMISSION_REQUEST, NULL));
-    request->priv->wkValues = wkValues;
-    request->priv->wkListener = wkListener;
+    request->priv->webValues = values;
+    request->priv->listener = listener;
     return request;
 }
 
@@ -86,19 +86,19 @@
     if (request->priv->values)
         return request->priv->values.get();
 
-    if (!WKDictionaryGetSize(request->priv->wkValues.get()))
+    if (!request->priv->webValues->size())
         return 0;
 
     request->priv->values = adoptGRef(g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free));
 
-    WKRetainPtr<WKArrayRef> wkKeys(AdoptWK, WKDictionaryCopyKeys(request->priv->wkValues.get()));
-    for (size_t i = 0; i < WKArrayGetSize(wkKeys.get()); ++i) {
-        WKStringRef wkKey = static_cast<WKStringRef>(WKArrayGetItemAtIndex(wkKeys.get(), i));
-        WKStringRef wkValue = static_cast<WKStringRef>(WKDictionaryGetItemForKey(request->priv->wkValues.get(), wkKey));
-        g_hash_table_insert(request->priv->values.get(), g_strdup(toImpl(wkKey)->string().utf8().data()), g_strdup(toImpl(wkValue)->string().utf8().data()));
+    const ImmutableDictionary::MapType& map = request->priv->webValues->map();
+    ImmutableDictionary::MapType::const_iterator end = map.end();
+    for (ImmutableDictionary::MapType::const_iterator it = map.begin(); it != end; ++it) {
+        WebString* value = static_cast<WebString*>(it->value.get());
+        g_hash_table_insert(request->priv->values.get(), g_strdup(it->key.utf8().data()), g_strdup(value->string().utf8().data()));
     }
 
-    request->priv->wkValues = 0;
+    request->priv->webValues = 0;
 
     return request->priv->values.get();
 }
@@ -113,6 +113,6 @@
 {
     g_return_if_fail(WEBKIT_IS_FORM_SUBMISSION_REQUEST(request));
 
-    WKFormSubmissionListenerContinue(request->priv->wkListener.get());
+    request->priv->listener->continueSubmission();
     request->priv->handledRequest = true;
 }

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h (131755 => 131756)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h	2012-10-18 15:27:35 UTC (rev 131755)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h	2012-10-18 15:49:19 UTC (rev 131756)
@@ -23,6 +23,8 @@
 #include "WebKitFormSubmissionRequest.h"
 #include "WebKitPrivate.h"
 
-WebKitFormSubmissionRequest* webkitFormSubmissionRequestCreate(WKDictionaryRef, WKFormSubmissionListenerRef);
+using namespace WebKit;
 
+WebKitFormSubmissionRequest* webkitFormSubmissionRequestCreate(ImmutableDictionary* values, WebFormSubmissionListenerProxy*);
+
 #endif // WebKitFormSubmissionRequestPrivate_h
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to