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