Diff
Modified: trunk/LayoutTests/ChangeLog (122073 => 122074)
--- trunk/LayoutTests/ChangeLog 2012-07-09 02:42:30 UTC (rev 122073)
+++ trunk/LayoutTests/ChangeLog 2012-07-09 03:09:07 UTC (rev 122074)
@@ -1,3 +1,15 @@
+2012-07-08 Kinuko Yasuda <[email protected]>
+
+ XHR.send should support ArrayBufferView
+ https://bugs.webkit.org/show_bug.cgi?id=90536
+
+ Reviewed by Kenneth Russell.
+
+ * http/tests/xmlhttprequest/send-array-buffer-expected.txt:
+ * http/tests/xmlhttprequest/send-array-buffer.html:
+ * http/tests/xmlhttprequest/send-data-view-expected.txt: Added.
+ * http/tests/xmlhttprequest/send-data-view.html: Added.
+
2012-07-08 Hayato Ito <[email protected]>
Unreviewed gardening.
Modified: trunk/LayoutTests/http/tests/xmlhttprequest/send-array-buffer-expected.txt (122073 => 122074)
--- trunk/LayoutTests/http/tests/xmlhttprequest/send-array-buffer-expected.txt 2012-07-09 02:42:30 UTC (rev 122073)
+++ trunk/LayoutTests/http/tests/xmlhttprequest/send-array-buffer-expected.txt 2012-07-09 03:09:07 UTC (rev 122074)
@@ -1,3 +1,3 @@
-Tests sending an array buffer.
+Tests sending an array buffer view.
0 1 2 48 49 50 128 129 130 253 254 255
Modified: trunk/LayoutTests/http/tests/xmlhttprequest/send-array-buffer.html (122073 => 122074)
--- trunk/LayoutTests/http/tests/xmlhttprequest/send-array-buffer.html 2012-07-09 02:42:30 UTC (rev 122073)
+++ trunk/LayoutTests/http/tests/xmlhttprequest/send-array-buffer.html 2012-07-09 03:09:07 UTC (rev 122074)
@@ -1,6 +1,6 @@
<html>
<body>
-Tests sending an array buffer.
+Tests sending an array buffer view.
<script>
if (window.testRunner)
testRunner.dumpAsText();
@@ -18,7 +18,7 @@
var array = new Uint8Array([0, 1, 2, 48, 49, 50, 128, 129, 130, 253, 254, 255]);
var xhr = new XMLHttpRequest;
xhr.open("POST", "resources/post-echo-as-ascii.cgi", false);
-xhr.send(array.buffer);
+xhr.send(array);
log(xhr.responseText);
</script>
</body>
Copied: trunk/LayoutTests/http/tests/xmlhttprequest/send-data-view-expected.txt (from rev 122073, trunk/LayoutTests/http/tests/xmlhttprequest/send-array-buffer-expected.txt) (0 => 122074)
--- trunk/LayoutTests/http/tests/xmlhttprequest/send-data-view-expected.txt (rev 0)
+++ trunk/LayoutTests/http/tests/xmlhttprequest/send-data-view-expected.txt 2012-07-09 03:09:07 UTC (rev 122074)
@@ -0,0 +1,3 @@
+Tests sending a data view.
+0 1 2 48 49 50 128 129 130 253 254 255
+
Copied: trunk/LayoutTests/http/tests/xmlhttprequest/send-data-view.html (from rev 122073, trunk/LayoutTests/http/tests/xmlhttprequest/send-array-buffer.html) (0 => 122074)
--- trunk/LayoutTests/http/tests/xmlhttprequest/send-data-view.html (rev 0)
+++ trunk/LayoutTests/http/tests/xmlhttprequest/send-data-view.html 2012-07-09 03:09:07 UTC (rev 122074)
@@ -0,0 +1,26 @@
+<html>
+<body>
+Tests sending a data view.
+<script>
+if (window.testRunner)
+ testRunner.dumpAsText();
+
+var console_messages = document.createElement("ul");
+document.body.appendChild(console_messages);
+
+function log(message)
+{
+ var item = document.createElement("li");
+ item.appendChild(document.createTextNode(message));
+ console_messages.appendChild(item);
+}
+
+var array = new Uint8Array([0, 1, 2, 48, 49, 50, 128, 129, 130, 253, 254, 255]);
+var xhr = new XMLHttpRequest;
+xhr.open("POST", "resources/post-echo-as-ascii.cgi", false);
+xhr.send(new DataView(array.buffer));
+log(xhr.responseText);
+</script>
+</body>
+</html>
+
Modified: trunk/Source/WebCore/ChangeLog (122073 => 122074)
--- trunk/Source/WebCore/ChangeLog 2012-07-09 02:42:30 UTC (rev 122073)
+++ trunk/Source/WebCore/ChangeLog 2012-07-09 03:09:07 UTC (rev 122074)
@@ -1,3 +1,28 @@
+2012-07-08 Kinuko Yasuda <[email protected]>
+
+ XHR.send should support ArrayBufferView
+ https://bugs.webkit.org/show_bug.cgi?id=90536
+
+ XHR.send should support ArrayBufferView according to the latest draft
+ and also eventually deprecate ArrayBuffer.
+ Spec: http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#dom-xmlhttprequest-send
+
+ Reviewed by Kenneth Russell.
+
+ Test: http/tests/xmlhttprequest/send-array-buffer.html
+ http/tests/xmlhttprequest/send-data-view.html
+
+ * bindings/js/JSXMLHttpRequestCustom.cpp:
+ (WebCore::JSXMLHttpRequest::send):
+ * bindings/v8/custom/V8XMLHttpRequestCustom.cpp:
+ (WebCore::V8XMLHttpRequest::sendCallback):
+ * xml/XMLHttpRequest.cpp:
+ (WebCore):
+ (WebCore::XMLHttpRequest::send):
+ * xml/XMLHttpRequest.h:
+ (XMLHttpRequest):
+ * xml/XMLHttpRequest.idl:
+
2012-07-08 Vivek Galatage <[email protected]>
Web Inspector: CodeGeneratorInspector.py should not generate statements with no effect
Modified: trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp (122073 => 122074)
--- trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp 2012-07-09 02:42:30 UTC (rev 122073)
+++ trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp 2012-07-09 03:09:07 UTC (rev 122074)
@@ -39,6 +39,7 @@
#include "HTMLDocument.h"
#include "InspectorInstrumentation.h"
#include "JSArrayBuffer.h"
+#include "JSArrayBufferView.h"
#include "JSBlob.h"
#include "JSDOMFormData.h"
#include "JSDOMWindowCustom.h"
@@ -126,6 +127,8 @@
impl()->send(toDOMFormData(val), ec);
else if (val.inherits(&JSArrayBuffer::s_info))
impl()->send(toArrayBuffer(val), ec);
+ else if (val.inherits(&JSArrayBufferView::s_info))
+ impl()->send(toArrayBufferView(val), ec);
else
impl()->send(ustringToString(val.toString(exec)->value(exec)), ec);
}
Modified: trunk/Source/WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp (122073 => 122074)
--- trunk/Source/WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp 2012-07-09 02:42:30 UTC (rev 122073)
+++ trunk/Source/WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp 2012-07-09 03:09:07 UTC (rev 122074)
@@ -36,6 +36,7 @@
#include "Frame.h"
#include "InspectorInstrumentation.h"
#include "V8ArrayBuffer.h"
+#include "V8ArrayBufferView.h"
#include "V8Binding.h"
#include "V8Blob.h"
#include "V8DOMFormData.h"
@@ -188,6 +189,11 @@
ArrayBuffer* arrayBuffer = V8ArrayBuffer::toNative(object);
ASSERT(arrayBuffer);
xmlHttpRequest->send(arrayBuffer, ec);
+ } else if (V8ArrayBufferView::HasInstance(arg)) {
+ v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(arg);
+ ArrayBufferView* arrayBufferView = V8ArrayBufferView::toNative(object);
+ ASSERT(arrayBufferView);
+ xmlHttpRequest->send(arrayBufferView, ec);
#endif
} else
xmlHttpRequest->send(toWebCoreStringWithNullCheck(arg), ec);
Modified: trunk/Source/WebCore/xml/XMLHttpRequest.cpp (122073 => 122074)
--- trunk/Source/WebCore/xml/XMLHttpRequest.cpp 2012-07-09 02:42:30 UTC (rev 122073)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.cpp 2012-07-09 03:09:07 UTC (rev 122074)
@@ -38,6 +38,7 @@
#include "HTMLDocument.h"
#include "HTTPParsers.h"
#include "HTTPValidation.h"
+#include "HistogramSupport.h"
#include "InspectorInstrumentation.h"
#include "MemoryCache.h"
#include "ResourceError.h"
@@ -54,6 +55,7 @@
#include "XMLHttpRequestUpload.h"
#include "markup.h"
#include <wtf/ArrayBuffer.h>
+#include <wtf/ArrayBufferView.h>
#include <wtf/RefCountedLeakCounter.h>
#include <wtf/StdLibExtras.h>
#include <wtf/UnusedParam.h>
@@ -70,6 +72,13 @@
DEFINE_DEBUG_ONLY_GLOBAL(WTF::RefCountedLeakCounter, xmlHttpRequestCounter, ("XMLHttpRequest"));
+// Histogram enum to see when we can deprecate xhr.send(ArrayBuffer).
+enum XMLHttpRequestSendArrayBufferOrView {
+ XMLHttpRequestSendArrayBuffer,
+ XMLHttpRequestSendArrayBufferView,
+ XMLHttpRequestSendArrayBufferOrViewMax,
+};
+
struct XMLHttpRequestStaticData {
WTF_MAKE_NONCOPYABLE(XMLHttpRequestStaticData); WTF_MAKE_FAST_ALLOCATED;
public:
@@ -646,11 +655,28 @@
void XMLHttpRequest::send(ArrayBuffer* body, ExceptionCode& ec)
{
+ String consoleMessage("ArrayBuffer is deprecated in XMLHttpRequest.send(). Use ArrayBufferView instead.");
+ scriptExecutionContext()->addConsoleMessage(JSMessageSource, LogMessageType, WarningMessageLevel, consoleMessage);
+
+ HistogramSupport::histogramEnumeration("WebCore.XHR.send.ArrayBufferOrView", XMLHttpRequestSendArrayBuffer, XMLHttpRequestSendArrayBufferOrViewMax);
+
+ sendBytesData(body->data(), body->byteLength(), ec);
+}
+
+void XMLHttpRequest::send(ArrayBufferView* body, ExceptionCode& ec)
+{
+ HistogramSupport::histogramEnumeration("WebCore.XHR.send.ArrayBufferOrView", XMLHttpRequestSendArrayBufferView, XMLHttpRequestSendArrayBufferOrViewMax);
+
+ sendBytesData(body->baseAddress(), body->byteLength(), ec);
+}
+
+void XMLHttpRequest::sendBytesData(const void* data, size_t length, ExceptionCode& ec)
+{
if (!initSend(ec))
return;
if (m_method != "GET" && m_method != "HEAD" && m_url.protocolIsInHTTPFamily()) {
- m_requestEntityBody = FormData::create(body->data(), body->byteLength());
+ m_requestEntityBody = FormData::create(data, length);
if (m_upload)
m_requestEntityBody->setAlwaysStream(true);
}
Modified: trunk/Source/WebCore/xml/XMLHttpRequest.h (122073 => 122074)
--- trunk/Source/WebCore/xml/XMLHttpRequest.h 2012-07-09 02:42:30 UTC (rev 122073)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.h 2012-07-09 03:09:07 UTC (rev 122074)
@@ -93,6 +93,7 @@
void send(Blob*, ExceptionCode&);
void send(DOMFormData*, ExceptionCode&);
void send(ArrayBuffer*, ExceptionCode&);
+ void send(ArrayBufferView*, ExceptionCode&);
void abort();
void setRequestHeader(const AtomicString& name, const String& value, ExceptionCode&);
void overrideMimeType(const String& override);
@@ -160,6 +161,7 @@
bool responseIsXML() const;
bool initSend(ExceptionCode&);
+ void sendBytesData(const void*, size_t, ExceptionCode&);
String getRequestHeader(const AtomicString& name) const;
void setRequestHeaderInternal(const AtomicString& name, const String& value);
Modified: trunk/Source/WebCore/xml/XMLHttpRequest.idl (122073 => 122074)
--- trunk/Source/WebCore/xml/XMLHttpRequest.idl 2012-07-09 02:42:30 UTC (rev 122073)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.idl 2012-07-09 03:09:07 UTC (rev 122074)
@@ -69,8 +69,10 @@
[Custom] void send()
raises(DOMException);
- [Custom] void send(in ArrayBuffer data)
+ [Custom] void send(in ArrayBuffer data) // FIXME: this should be eventually deprecated.
raises(DOMException);
+ [Custom] void send(in ArrayBufferView data)
+ raises(DOMException);
[Conditional=BLOB, Custom] void send(in Blob data)
raises(DOMException);
[Custom] void send(in Document data)