Title: [156303] trunk/Source
Revision
156303
Author
par...@webkit.org
Date
2013-09-23 15:35:46 -0700 (Mon, 23 Sep 2013)

Log Message

[WIN] Implement WebMutableURLRequest::setHTTPBody()
https://bugs.webkit.org/show_bug.cgi?id=91920

Reviewed by Brent Fulgham.

Source/WebCore:

Add a method to FormData for growing the internal buffer with a given size.

* platform/network/FormData.cpp:
(WebCore::FormData::appendData):
(WebCore::FormData::expandDataStore):
* platform/network/FormData.h:

Source/WebKit/win:

* WebMutableURLRequest.cpp:
(WebMutableURLRequest::setHTTPBody):
(WebMutableURLRequest::setHTTPBodyStream):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (156302 => 156303)


--- trunk/Source/WebCore/ChangeLog	2013-09-23 22:25:25 UTC (rev 156302)
+++ trunk/Source/WebCore/ChangeLog	2013-09-23 22:35:46 UTC (rev 156303)
@@ -1,5 +1,19 @@
 2013-09-23  Patrick Gansterer  <par...@webkit.org>
 
+        [WIN] Implement WebMutableURLRequest::setHTTPBody()
+        https://bugs.webkit.org/show_bug.cgi?id=91920
+
+        Reviewed by Brent Fulgham.
+
+        Add a method to FormData for growing the internal buffer with a given size.
+
+        * platform/network/FormData.cpp:
+        (WebCore::FormData::appendData):
+        (WebCore::FormData::expandDataStore):
+        * platform/network/FormData.h:
+
+2013-09-23  Patrick Gansterer  <par...@webkit.org>
+
         use NOMINMAX instead of #define min min
         https://bugs.webkit.org/show_bug.cgi?id=73563
 

Modified: trunk/Source/WebCore/platform/network/FormData.cpp (156302 => 156303)


--- trunk/Source/WebCore/platform/network/FormData.cpp	2013-09-23 22:25:25 UTC (rev 156302)
+++ trunk/Source/WebCore/platform/network/FormData.cpp	2013-09-23 22:35:46 UTC (rev 156303)
@@ -160,12 +160,7 @@
 
 void FormData::appendData(const void* data, size_t size)
 {
-    if (m_elements.isEmpty() || m_elements.last().m_type != FormDataElement::data)
-        m_elements.append(FormDataElement());
-    FormDataElement& e = m_elements.last();
-    size_t oldSize = e.m_data.size();
-    e.m_data.grow(oldSize + size);
-    memcpy(e.m_data.data() + oldSize, data, size);
+    memcpy(expandDataStore(size), data, size);
 }
 
 void FormData::appendFile(const String& filename, bool shouldGenerateFile)
@@ -301,6 +296,16 @@
     appendData(encodedData.data(), encodedData.size());
 }
 
+char* FormData::expandDataStore(size_t size)
+{
+    if (m_elements.isEmpty() || m_elements.last().m_type != FormDataElement::data)
+        m_elements.append(FormDataElement());
+    FormDataElement& e = m_elements.last();
+    size_t oldSize = e.m_data.size();
+    e.m_data.grow(oldSize + size);
+    return e.m_data.data() + oldSize;
+}
+
 void FormData::flatten(Vector<char>& data) const
 {
     // Concatenate all the byte arrays, but omit any files.

Modified: trunk/Source/WebCore/platform/network/FormData.h (156302 => 156303)


--- trunk/Source/WebCore/platform/network/FormData.h	2013-09-23 22:25:25 UTC (rev 156302)
+++ trunk/Source/WebCore/platform/network/FormData.h	2013-09-23 22:35:46 UTC (rev 156303)
@@ -130,6 +130,7 @@
     void appendURL(const KURL&);
     void appendURLRange(const KURL&, long long start, long long length, double expectedModificationTime);
 #endif
+    char* expandDataStore(size_t);
 
     void flatten(Vector<char>&) const; // omits files
     String flattenToString() const; // omits files

Modified: trunk/Source/WebKit/win/ChangeLog (156302 => 156303)


--- trunk/Source/WebKit/win/ChangeLog	2013-09-23 22:25:25 UTC (rev 156302)
+++ trunk/Source/WebKit/win/ChangeLog	2013-09-23 22:35:46 UTC (rev 156303)
@@ -1,5 +1,16 @@
 2013-09-23  Patrick Gansterer  <par...@webkit.org>
 
+        [WIN] Implement WebMutableURLRequest::setHTTPBody()
+        https://bugs.webkit.org/show_bug.cgi?id=91920
+
+        Reviewed by Brent Fulgham.
+
+        * WebMutableURLRequest.cpp:
+        (WebMutableURLRequest::setHTTPBody):
+        (WebMutableURLRequest::setHTTPBodyStream):
+
+2013-09-23  Patrick Gansterer  <par...@webkit.org>
+
         use NOMINMAX instead of #define min min
         https://bugs.webkit.org/show_bug.cgi?id=73563
 

Modified: trunk/Source/WebKit/win/WebMutableURLRequest.cpp (156302 => 156303)


--- trunk/Source/WebKit/win/WebMutableURLRequest.cpp	2013-09-23 22:25:25 UTC (rev 156302)
+++ trunk/Source/WebKit/win/WebMutableURLRequest.cpp	2013-09-23 22:35:46 UTC (rev 156303)
@@ -286,18 +286,32 @@
     return S_OK;
 }
 
-HRESULT STDMETHODCALLTYPE WebMutableURLRequest::setHTTPBody( 
-    /* [in] */ IStream* /*data*/)
+HRESULT WebMutableURLRequest::setHTTPBody(IStream* data)
 {
-    ASSERT_NOT_REACHED();
-    return E_NOTIMPL;
+    if (!data)
+        return E_POINTER;
+
+    STATSTG stat;
+    if (FAILED(data->Stat(&stat, STATFLAG_NONAME)))
+        return E_FAIL;
+
+    if (stat.cbSize.HighPart || !stat.cbSize.LowPart)
+        return E_FAIL;
+
+    RefPtr<FormData> httpBody = FormData::create();
+    char* formData = httpBody->expandDataStore(stat.cbSize.LowPart);
+
+    ULONG bytesRead = 0;
+    if (FAILED(data->Read(formData, stat.cbSize.LowPart, &bytesRead)))
+        return E_FAIL;
+
+    m_request.setHTTPBody(httpBody);
+    return S_OK;
 }
 
-HRESULT STDMETHODCALLTYPE WebMutableURLRequest::setHTTPBodyStream( 
-    /* [in] */ IStream* /*data*/)
+HRESULT WebMutableURLRequest::setHTTPBodyStream(IStream* data)
 {
-    ASSERT_NOT_REACHED();
-    return E_NOTIMPL;
+    return setHTTPBody(data);
 }
 
 HRESULT STDMETHODCALLTYPE WebMutableURLRequest::setHTTPMethod( 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to