Title: [89030] trunk/Source/WebKit2
Revision
89030
Author
[email protected]
Date
2011-06-16 09:03:15 -0700 (Thu, 16 Jun 2011)

Log Message

2011-06-16  Sangyong Park  <[email protected]>

        Reviewed by Martin Robinson.

        [GTK] Implement ResourceRequest and ResourceResponse encoder/decoder
        https://bugs.webkit.org/show_bug.cgi?id=55934

        * Shared/gtk/WebCoreArgumentCodersGtk.cpp:
        (CoreIPC::encodeResourceRequest):
        (CoreIPC::decodeResourceRequest):
        (CoreIPC::encodeResourceResponse):
        (CoreIPC::decodeResourceResponse):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (89029 => 89030)


--- trunk/Source/WebKit2/ChangeLog	2011-06-16 15:44:15 UTC (rev 89029)
+++ trunk/Source/WebKit2/ChangeLog	2011-06-16 16:03:15 UTC (rev 89030)
@@ -1,3 +1,16 @@
+2011-06-16  Sangyong Park  <[email protected]>
+
+        Reviewed by Martin Robinson.
+
+        [GTK] Implement ResourceRequest and ResourceResponse encoder/decoder
+        https://bugs.webkit.org/show_bug.cgi?id=55934
+
+        * Shared/gtk/WebCoreArgumentCodersGtk.cpp:
+        (CoreIPC::encodeResourceRequest):
+        (CoreIPC::decodeResourceRequest):
+        (CoreIPC::encodeResourceResponse):
+        (CoreIPC::decodeResourceResponse):
+
 2011-06-16  Carlos Garcia Campos  <[email protected]>
 
         Reviewed by Xan Lopez.

Modified: trunk/Source/WebKit2/Shared/gtk/WebCoreArgumentCodersGtk.cpp (89029 => 89030)


--- trunk/Source/WebKit2/Shared/gtk/WebCoreArgumentCodersGtk.cpp	2011-06-16 15:44:15 UTC (rev 89029)
+++ trunk/Source/WebKit2/Shared/gtk/WebCoreArgumentCodersGtk.cpp	2011-06-16 16:03:15 UTC (rev 89030)
@@ -25,39 +25,163 @@
  */
 
 #include "config.h"
+#include "ResourceRequest.h"
 #include "WebCoreArgumentCoders.h"
 
-#include <WebCore/NotImplemented.h>
-
 namespace CoreIPC {
 
 void encodeResourceRequest(ArgumentEncoder* encoder, const WebCore::ResourceRequest& resourceRequest)
 {
-    notImplemented();
+    encoder->encode(CoreIPC::In(resourceRequest.url().string()));
+    encoder->encode(CoreIPC::In(resourceRequest.httpMethod()));
+
+    const WebCore::HTTPHeaderMap& headers = resourceRequest.httpHeaderFields();
+    encoder->encode(CoreIPC::In(static_cast<uint32_t>(headers.size())));
+    if (!headers.isEmpty()) {
+        WebCore::HTTPHeaderMap::const_iterator end = headers.end();
+        for (WebCore::HTTPHeaderMap::const_iterator it = headers.begin(); it != end; ++it)
+            encoder->encode(CoreIPC::In(it->first, it->second));
+    }
+
+    WebCore::FormData* httpBody = resourceRequest.httpBody();
+    encoder->encode(CoreIPC::In(static_cast<bool>(httpBody)));
+    if (httpBody)
+        encoder->encode(CoreIPC::In(httpBody->flattenToString()));
+
+    encoder->encode(CoreIPC::In(resourceRequest.firstPartyForCookies().string()));
+    encoder->encode(CoreIPC::In(static_cast<uint32_t>(resourceRequest.soupMessageFlags())));
 }
 
 bool decodeResourceRequest(ArgumentDecoder* decoder, WebCore::ResourceRequest& resourceRequest)
 {
-    notImplemented();
+    WebCore::ResourceRequest request;
 
-    // FIXME: Add real implementation when we want to implement something that
-    // depends on this like the policy client.
-    // https://bugs.webkit.org/show_bug.cgi?id=55934
-    resourceRequest = WebCore::ResourceRequest();
+    String url;
+    if (!decoder->decode(CoreIPC::Out(url)))
+        return false;
+    request.setURL(WebCore::KURL(WebCore::KURL(), url));
+
+    String httpMethod;
+    if (!decoder->decode(CoreIPC::Out(httpMethod)))
+        return false;
+    request.setHTTPMethod(httpMethod);
+
+    uint32_t size;
+    if (!decoder->decode(CoreIPC::Out(size)))
+        return false;
+    if (size) {
+        AtomicString name;
+        String value;
+        for (uint32_t i = 0; i < size; ++i) {
+            if (!decoder->decode(CoreIPC::Out(name, value)))
+                return false;
+            request.setHTTPHeaderField(name, value);
+        }
+    }
+
+    bool hasHTTPBody;
+    if (!decoder->decode(CoreIPC::Out(hasHTTPBody)))
+        return false;
+    if (hasHTTPBody) {
+        String httpBody;
+        if (!decoder->decode(CoreIPC::Out(httpBody)))
+            return false;
+        request.setHTTPBody(WebCore::FormData::create(httpBody.utf8()));
+    }
+
+    String firstPartyForCookies;
+    if (!decoder->decode(CoreIPC::Out(firstPartyForCookies)))
+        return false;
+    request.setFirstPartyForCookies(WebCore::KURL(WebCore::KURL(), firstPartyForCookies));
+
+    uint32_t soupMessageFlags;
+    if (!decoder->decode(CoreIPC::Out(soupMessageFlags)))
+        return false;
+    request.setSoupMessageFlags(static_cast<SoupMessageFlags>(soupMessageFlags));
+
+    resourceRequest = request;
     return true;
 }
 
 void encodeResourceResponse(ArgumentEncoder* encoder, const WebCore::ResourceResponse& resourceResponse)
 {
-    notImplemented();
+    encoder->encode(CoreIPC::In(resourceResponse.url().string()));
+    encoder->encode(CoreIPC::In(static_cast<int32_t>(resourceResponse.httpStatusCode())));
+
+    const WebCore::HTTPHeaderMap& headers = resourceResponse.httpHeaderFields();
+    encoder->encode(CoreIPC::In(static_cast<uint32_t>(headers.size())));
+    if (!headers.isEmpty()) {
+        WebCore::HTTPHeaderMap::const_iterator end = headers.end();
+        for (WebCore::HTTPHeaderMap::const_iterator it = headers.begin(); it != end; ++it)
+            encoder->encode(CoreIPC::In(it->first, it->second));
+    }
+
+    encoder->encode(CoreIPC::In(static_cast<uint32_t>(resourceResponse.soupMessageFlags())));
+    encoder->encode(CoreIPC::In(resourceResponse.mimeType()));
+    encoder->encode(CoreIPC::In(resourceResponse.textEncodingName()));
+    encoder->encode(CoreIPC::In(static_cast<int64_t>(resourceResponse.expectedContentLength())));
+    encoder->encode(CoreIPC::In(resourceResponse.httpStatusText()));
+    encoder->encode(CoreIPC::In(resourceResponse.suggestedFilename()));
 }
 
 bool decodeResourceResponse(ArgumentDecoder* decoder, WebCore::ResourceResponse& resourceResponse)
 {
-    notImplemented();
+    WebCore::ResourceResponse response;
 
-    // FIXME: Ditto.
-    resourceResponse = WebCore::ResourceResponse();
+    String url;
+    if (!decoder->decode(CoreIPC::Out(url)))
+        return false;
+    response.setURL(WebCore::KURL(WebCore::KURL(), url));
+
+    int32_t httpStatusCode;
+    if (!decoder->decode(CoreIPC::Out(httpStatusCode)))
+        return false;
+    response.setHTTPStatusCode(httpStatusCode);
+
+    uint32_t size;
+    if (!decoder->decode(CoreIPC::Out(size)))
+        return false;
+    if (size) {
+        AtomicString name;
+        String value;
+        for (uint32_t i = 0; i < size; ++i) {
+            if (!decoder->decode(CoreIPC::Out(name, value)))
+                return false;
+            response.setHTTPHeaderField(name, value);
+        }
+    }
+
+    uint32_t soupMessageFlags;
+    if (!decoder->decode(CoreIPC::Out(soupMessageFlags)))
+        return false;
+    response.setSoupMessageFlags(static_cast<SoupMessageFlags>(soupMessageFlags));
+
+    String mimeType;
+    if (!decoder->decode(CoreIPC::Out(mimeType)))
+        return false;
+    response.setMimeType(mimeType);
+
+    String textEncodingName;
+    if (!decoder->decode(CoreIPC::Out(textEncodingName)))
+        return false;
+    response.setTextEncodingName(textEncodingName);
+
+    int64_t contentLength;
+    if (!decoder->decode(CoreIPC::Out(contentLength)))
+        return false;
+    response.setExpectedContentLength(contentLength);
+
+    String httpStatusText;
+    if (!decoder->decode(CoreIPC::Out(httpStatusText)))
+        return false;
+    response.setHTTPStatusText(httpStatusText);
+
+    String suggestedFilename;
+    if (!decoder->decode(CoreIPC::Out(suggestedFilename)))
+        return false;
+    response.setSuggestedFilename(suggestedFilename);
+
+    resourceResponse = response;
     return true;
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to