Title: [170755] trunk/Source
Revision
170755
Author
ander...@apple.com
Date
2014-07-03 10:05:41 -0700 (Thu, 03 Jul 2014)

Log Message

Stop using EncoderAdapter/DecoderAdapter for FormData
https://bugs.webkit.org/show_bug.cgi?id=134571

Reviewed by Andreas Kling.

Source/WebCore:
* WebCore.exp.in:
* platform/network/FormData.cpp:
(WebCore::encodeElement): Deleted.
(WebCore::decodeElement): Deleted.
(WebCore::FormData::encode): Deleted.
(WebCore::FormData::decode): Deleted.
* platform/network/FormData.h:
(WebCore::FormDataElement::encode):
(WebCore::FormDataElement::decode):
(WebCore::FormData::encode):
(WebCore::FormData::decode):

Source/WebKit2:
* Shared/Network/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode):
(WebKit::NetworkResourceLoadParameters::decode):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (170754 => 170755)


--- trunk/Source/WebCore/ChangeLog	2014-07-03 16:19:07 UTC (rev 170754)
+++ trunk/Source/WebCore/ChangeLog	2014-07-03 17:05:41 UTC (rev 170755)
@@ -1,3 +1,22 @@
+2014-07-02  Anders Carlsson  <ander...@apple.com>
+
+        Stop using EncoderAdapter/DecoderAdapter for FormData
+        https://bugs.webkit.org/show_bug.cgi?id=134571
+
+        Reviewed by Andreas Kling.
+
+        * WebCore.exp.in:
+        * platform/network/FormData.cpp:
+        (WebCore::encodeElement): Deleted.
+        (WebCore::decodeElement): Deleted.
+        (WebCore::FormData::encode): Deleted.
+        (WebCore::FormData::decode): Deleted.
+        * platform/network/FormData.h:
+        (WebCore::FormDataElement::encode):
+        (WebCore::FormDataElement::decode):
+        (WebCore::FormData::encode):
+        (WebCore::FormData::decode):
+
 2014-07-03  Brady Eidson  <beid...@apple.com>
 
         Possible crash in IconDatabase in WebCore::IconDatabase::dispatchDidRemoveAllIconsOnMainThread

Modified: trunk/Source/WebCore/WebCore.exp.in (170754 => 170755)


--- trunk/Source/WebCore/WebCore.exp.in	2014-07-03 16:19:07 UTC (rev 170754)
+++ trunk/Source/WebCore/WebCore.exp.in	2014-07-03 17:05:41 UTC (rev 170755)
@@ -1303,7 +1303,6 @@
 __ZN7WebCore8FormData15appendFileRangeERKN3WTF6StringExxdb
 __ZN7WebCore8FormData6createEv
 __ZN7WebCore8FormData6createEPKvm
-__ZN7WebCore8FormData6decodeERN3WTF7DecoderE
 __ZN7WebCore8FormDataD1Ev
 __ZN7WebCore8Gradient12addColorStopEfRKNS_5ColorE
 __ZN7WebCore8GradientC1ERKNS_10FloatPointES3_
@@ -1970,7 +1969,6 @@
 __ZNK7WebCore8Document6domainEv
 __ZNK7WebCore8Document6loaderEv
 __ZNK7WebCore8Document8settingsEv
-__ZNK7WebCore8FormData6encodeERN3WTF7EncoderE
 __ZNK7WebCore8IntPointcv7CGPointEv
 __ZNK7WebCore8Position10downstreamENS_27EditingBoundaryCrossingRuleE
 __ZNK7WebCore8Position13containerNodeEv

Modified: trunk/Source/WebCore/platform/network/FormData.cpp (170754 => 170755)


--- trunk/Source/WebCore/platform/network/FormData.cpp	2014-07-03 16:19:07 UTC (rev 170754)
+++ trunk/Source/WebCore/platform/network/FormData.cpp	2014-07-03 17:05:41 UTC (rev 170755)
@@ -393,143 +393,4 @@
     }
 }
 
-static void encodeElement(Encoder& encoder, const FormDataElement& element)
-{
-    encoder.encodeUInt32(static_cast<uint32_t>(element.m_type));
-
-    switch (element.m_type) {
-    case FormDataElement::Type::Data:
-        encoder.encodeBytes(reinterpret_cast<const uint8_t*>(element.m_data.data()), element.m_data.size());
-        return;
-
-    case FormDataElement::Type::EncodedFile:
-        encoder.encodeString(element.m_filename);
-        encoder.encodeString(element.m_generatedFilename);
-        encoder.encodeBool(element.m_shouldGenerateFile);
-        encoder.encodeInt64(element.m_fileStart);
-        encoder.encodeInt64(element.m_fileLength);
-        encoder.encodeDouble(element.m_expectedFileModificationTime);
-        return;
-
-    case FormDataElement::Type::EncodedBlob:
-        encoder.encodeString(element.m_url.string());
-        return;
-    }
-
-    ASSERT_NOT_REACHED();
-}
-
-static bool decodeElement(Decoder& decoder, FormDataElement& element)
-{
-    uint32_t type;
-    if (!decoder.decodeUInt32(type))
-        return false;
-
-    switch (static_cast<FormDataElement::Type>(type)) {
-    case FormDataElement::Type::Data: {
-        element.m_type = FormDataElement::Type::Data;
-        Vector<uint8_t> data;
-        if (!decoder.decodeBytes(data))
-            return false;
-        size_t size = data.size();
-        element.m_data.resize(size);
-        memcpy(element.m_data.data(), data.data(), size);
-        return true;
-    }
-
-    case FormDataElement::Type::EncodedFile: {
-        element.m_type = static_cast<FormDataElement::Type>(type);
-        String filenameOrURL;
-        if (!decoder.decodeString(filenameOrURL))
-            return false;
-        if (static_cast<FormDataElement::Type>(type) == FormDataElement::Type::EncodedFile) {
-            if (!decoder.decodeString(element.m_generatedFilename))
-                return false;
-            if (!decoder.decodeBool(element.m_shouldGenerateFile))
-                return false;
-        }
-        int64_t fileStart;
-        if (!decoder.decodeInt64(fileStart))
-            return false;
-        if (fileStart < 0)
-            return false;
-        int64_t fileLength;
-        if (!decoder.decodeInt64(fileLength))
-            return false;
-        if (fileLength != BlobDataItem::toEndOfFile && fileLength < fileStart)
-            return false;
-        double expectedFileModificationTime;
-        if (!decoder.decodeDouble(expectedFileModificationTime))
-            return false;
-
-        element.m_filename = filenameOrURL;
-        element.m_fileStart = fileStart;
-        element.m_fileLength = fileLength;
-        element.m_expectedFileModificationTime = expectedFileModificationTime;
-        return true;
-    }
-
-    case FormDataElement::Type::EncodedBlob:
-        element.m_type = FormDataElement::Type::EncodedBlob;
-        String blobURLString;
-        if (!decoder.decodeString(blobURLString))
-            return false;
-        element.m_url = URL(URL(), blobURLString);
-        return true;
-
-    }
-
-    return false;
-}
-
-void FormData::encode(Encoder& encoder) const
-{
-    encoder.encodeBool(m_alwaysStream);
-
-    encoder.encodeBytes(reinterpret_cast<const uint8_t*>(m_boundary.data()), m_boundary.size());
-
-    size_t size = m_elements.size();
-    encoder.encodeUInt64(size);
-    for (size_t i = 0; i < size; ++i)
-        encodeElement(encoder, m_elements[i]);
-
-    encoder.encodeBool(hasGeneratedFiles()); // For backward compatibility.
-
-    encoder.encodeInt64(m_identifier);
-}
-
-PassRefPtr<FormData> FormData::decode(Decoder& decoder)
-{
-    RefPtr<FormData> data = ""
-
-    if (!decoder.decodeBool(data->m_alwaysStream))
-        return 0;
-
-    Vector<uint8_t> boundary;
-    if (!decoder.decodeBytes(boundary))
-        return 0;
-    size_t size = boundary.size();
-    data->m_boundary.resize(size);
-    memcpy(data->m_boundary.data(), boundary.data(), size);
-
-    uint64_t elementsSize;
-    if (!decoder.decodeUInt64(elementsSize))
-        return 0;
-    for (size_t i = 0; i < elementsSize; ++i) {
-        FormDataElement element;
-        if (!decodeElement(decoder, element))
-            return 0;
-        data->m_elements.append(element);
-    }
-
-    bool dummy;
-    if (!decoder.decodeBool(dummy))
-        return 0;
-
-    if (!decoder.decodeInt64(data->m_identifier))
-        return 0;
-
-    return data.release();
-}
-
 } // namespace WebCore

Modified: trunk/Source/WebCore/platform/network/FormData.h (170754 => 170755)


--- trunk/Source/WebCore/platform/network/FormData.h	2014-07-03 16:19:07 UTC (rev 170754)
+++ trunk/Source/WebCore/platform/network/FormData.h	2014-07-03 17:05:41 UTC (rev 170755)
@@ -20,6 +20,7 @@
 #ifndef FormData_h
 #define FormData_h
 
+#include "BlobData.h"
 #include "URL.h"
 #include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
@@ -68,6 +69,11 @@
     {
     }
 
+    template<typename Encoder>
+    void encode(Encoder&) const;
+    template<typename Decoder>
+    static bool decode(Decoder&, FormDataElement& result);
+
     Type m_type;
     Vector<char> m_data;
     String m_filename;
@@ -106,6 +112,79 @@
     return !(a == b);
 }
 
+
+template<typename Encoder>
+void FormDataElement::encode(Encoder& encoder) const
+{
+    encoder.encodeEnum(m_type);
+
+    switch (m_type) {
+    case Type::Data:
+        encoder << m_data;
+        break;
+
+    case Type::EncodedFile:
+        encoder << m_filename;
+        encoder << m_generatedFilename;
+        encoder << m_shouldGenerateFile;
+        encoder << m_fileStart;
+        encoder << m_fileLength;
+        encoder << m_expectedFileModificationTime;
+        break;
+
+    case Type::EncodedBlob:
+        encoder << m_url.string();
+        break;
+    }
+}
+
+template<typename Decoder>
+bool FormDataElement::decode(Decoder& decoder, FormDataElement& result)
+{
+    if (!decoder.decodeEnum(result.m_type))
+        return false;
+
+    switch (result.m_type) {
+    case Type::Data:
+        if (!decoder.decode(result.m_data))
+            return false;
+
+        return true;
+
+    case Type::EncodedFile:
+        if (!decoder.decode(result.m_filename))
+            return false;
+        if (!decoder.decode(result.m_generatedFilename))
+            return false;
+        if (!decoder.decode(result.m_shouldGenerateFile))
+            return false;
+        if (!decoder.decode(result.m_fileStart))
+            return false;
+        if (!decoder.decode(result.m_fileLength))
+            return false;
+
+        if (result.m_fileLength != BlobDataItem::toEndOfFile && result.m_fileLength < result.m_fileStart)
+            return false;
+
+        if (!decoder.decode(result.m_expectedFileModificationTime))
+            return false;
+
+        return true;
+
+    case Type::EncodedBlob: {
+        String blobURLString;
+        if (!decoder.decode(blobURLString))
+            return false;
+
+        result.m_url = URL(URL(), blobURLString);
+
+        return true;
+    }
+    }
+
+    return false;
+}
+
 class FormData : public RefCounted<FormData> {
 public:
     enum EncodingType {
@@ -127,7 +206,9 @@
     PassRefPtr<FormData> copy() const;
     PassRefPtr<FormData> deepCopy() const;
 
+    template<typename Encoder>
     void encode(Encoder&) const;
+    template<typename Decoder>
     static PassRefPtr<FormData> decode(Decoder&);
 
     void appendData(const void* data, size_t);
@@ -197,6 +278,35 @@
     return !(a == b);
 }
 
+template<typename Encoder>
+void FormData::encode(Encoder& encoder) const
+{
+    encoder << m_alwaysStream;
+    encoder << m_boundary;
+    encoder << m_elements;
+    encoder << m_identifier;
+}
+
+template<typename Decoder>
+PassRefPtr<FormData> FormData::decode(Decoder& decoder)
+{
+    RefPtr<FormData> data = ""
+
+    if (!decoder.decode(data->m_alwaysStream))
+        return nullptr;
+
+    if (!decoder.decode(data->m_boundary))
+        return nullptr;
+
+    if (!decoder.decode(data->m_elements))
+        return nullptr;
+
+    if (!decoder.decode(data->m_identifier))
+        return nullptr;
+
+    return data.release();
+}
+
 } // namespace WebCore
 
 #endif

Modified: trunk/Source/WebKit2/ChangeLog (170754 => 170755)


--- trunk/Source/WebKit2/ChangeLog	2014-07-03 16:19:07 UTC (rev 170754)
+++ trunk/Source/WebKit2/ChangeLog	2014-07-03 17:05:41 UTC (rev 170755)
@@ -1,3 +1,14 @@
+2014-07-02  Anders Carlsson  <ander...@apple.com>
+
+        Stop using EncoderAdapter/DecoderAdapter for FormData
+        https://bugs.webkit.org/show_bug.cgi?id=134571
+
+        Reviewed by Andreas Kling.
+
+        * Shared/Network/NetworkResourceLoadParameters.cpp:
+        (WebKit::NetworkResourceLoadParameters::encode):
+        (WebKit::NetworkResourceLoadParameters::decode):
+
 2014-07-03  Brady Eidson  <beid...@apple.com>
 
         Possible crash in IconDatabase in WebCore::IconDatabase::dispatchDidRemoveAllIconsOnMainThread

Modified: trunk/Source/WebKit2/Shared/Network/NetworkResourceLoadParameters.cpp (170754 => 170755)


--- trunk/Source/WebKit2/Shared/Network/NetworkResourceLoadParameters.cpp	2014-07-03 16:19:07 UTC (rev 170754)
+++ trunk/Source/WebKit2/Shared/Network/NetworkResourceLoadParameters.cpp	2014-07-03 17:05:41 UTC (rev 170755)
@@ -28,8 +28,6 @@
 
 #include "ArgumentCoders.h"
 #include "DataReference.h"
-#include "DecoderAdapter.h"
-#include "EncoderAdapter.h"
 #include "WebCoreArgumentCoders.h"
 
 #if ENABLE(NETWORK_PROCESS)
@@ -37,6 +35,7 @@
 using namespace WebCore;
 
 namespace WebKit {
+
 NetworkResourceLoadParameters::NetworkResourceLoadParameters()
     : identifier(0)
     , webPageID(0)
@@ -62,9 +61,7 @@
 
     encoder << static_cast<bool>(request.httpBody());
     if (request.httpBody()) {
-        EncoderAdapter httpBodyEncoderAdapter;
-        request.httpBody()->encode(httpBodyEncoderAdapter);
-        encoder << httpBodyEncoderAdapter.dataReference();
+        request.httpBody()->encode(encoder);
 
         const Vector<FormDataElement>& elements = request.httpBody()->elements();
         size_t fileCount = 0;
@@ -123,11 +120,10 @@
         return false;
 
     if (hasHTTPBody) {
-        IPC::DataReference formData;
-        if (!decoder.decode(formData))
+        RefPtr<FormData> formData = FormData::decode(decoder);
+        if (!formData)
             return false;
-        DecoderAdapter httpBodyDecoderAdapter(formData.data(), formData.size());
-        result.request.setHTTPBody(FormData::decode(httpBodyDecoderAdapter));
+        result.request.setHTTPBody(formData.release());
 
         if (!decoder.decode(result.requestBodySandboxExtensions))
             return false;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to