History

Add arraybuffer binary data handling in JavaScript XMLHttpRequest

David Rowe committed 12 years ago

Commit d05435d1 parent 33ffed72 files · +10 −5Browse files

Showing the changes to libraries/script-engine/src/XMLHttpRequestClass.cpp (1 of 2 files). Show all

Unified · Split

libraries/script-engine/src/XMLHttpRequestClass.cpp+9−4
@@ -194,10 +194,10 @@ void XMLHttpRequestClass::open(const QString& method, const QString& url, bool a · 193 unmodified lines
194194 }
195195
196196 void XMLHttpRequestClass::send() {
197− send(QString::Null());
197+ send(QString());
198198 }
199199
200−void XMLHttpRequestClass::send(const QString& data) {
200+void XMLHttpRequestClass::send(const QVariant& data) {
201201 if (_readyState == OPENED && !_reply) {
202202 if (!data.isNull()) {
203203 if (_url.isLocalFile()) {
@@ -205,7 +205,12 @@ void XMLHttpRequestClass::send(const QString& data) { · 1 unmodified line
205205 return;
206206 } else {
207207 _sendData = new QBuffer(this);
208− _sendData->setData(data.toUtf8());
208+ if (_responseType == "arraybuffer") {
209+ QByteArray ba = qvariant_cast<QByteArray>(data);
210+ _sendData->setData(ba);
211+ } else {
212+ _sendData->setData(data.toString().toUtf8());
213+ }
209214 }
210215 }
211216
@@ -274,7 +279,7 @@ void XMLHttpRequestClass::requestFinished() { · 62 unmodified lines
274279 _responseData = QScriptValue::NullValue;
275280 }
276281 } else if (_responseType == "arraybuffer") {
277− _responseData = QScriptValue(_rawResponseData.data());
282+ _responseData = _engine->newVariant(QVariant::fromValue(_rawResponseData));
278283 } else {
279284 _responseData = QScriptValue(QString(_rawResponseData.data()));
280285 }