History

isolate calls to the QtScript libraries to an interface we control

Heather Anderson committed 5 years ago

Commit 1e018db1 parent 713b29e260 files · +6904 −5064Browse files

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

Unified · Split

libraries/script-engine/src/XMLHttpRequestClass.cpp+29−26
@@ -23,12 +23,16 @@ · 22 unmodified lines
2323 #include <MetaverseAPI.h>
2424
2525 #include "ResourceRequestObserver.h"
26+#include "ScriptContext.h"
2627 #include "ScriptEngine.h"
28+#include "ScriptValue.h"
2729
2830 Q_DECLARE_METATYPE(QByteArray*)
2931
30−XMLHttpRequestClass::XMLHttpRequestClass(QScriptEngine* engine) :
32+XMLHttpRequestClass::XMLHttpRequestClass(ScriptEngine* engine) :
3133 _engine(engine),
34+ _onTimeout(engine->nullValue()),
35+ _onReadyStateChange(engine->nullValue()),
3236 _timer(this) {
3337
3438 _request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
@@ -39,15 +43,15 @@ XMLHttpRequestClass::~XMLHttpRequestClass() { · 4 unmodified lines
3943 if (_reply) { _reply->deleteLater(); }
4044 }
4145
42−QScriptValue XMLHttpRequestClass::constructor(QScriptContext* context, QScriptEngine* engine) {
43− return engine->newQObject(new XMLHttpRequestClass(engine), QScriptEngine::ScriptOwnership);
46+ScriptValuePointer XMLHttpRequestClass::constructor(ScriptContext* context, ScriptEngine* engine) {
47+ return engine->newQObject(new XMLHttpRequestClass(engine), ScriptEngine::ScriptOwnership);
4448 }
4549
46−QScriptValue XMLHttpRequestClass::getStatus() const {
50+ScriptValuePointer XMLHttpRequestClass::getStatus() const {
4751 if (_reply) {
48− return QScriptValue(_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt());
52+ return _engine->newValue(_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt());
4953 }
50− return QScriptValue(0);
54+ return ScriptValuePointer(0);
5155 }
5256
5357 QString XMLHttpRequestClass::getStatusText() const {
@@ -87,7 +91,7 @@ void XMLHttpRequestClass::requestDownloadProgress(qint64 bytesReceived, qint64 b · 33 unmodified lines
8791 }
8892 }
8993
90−QScriptValue XMLHttpRequestClass::getAllResponseHeaders() const {
94+ScriptValuePointer XMLHttpRequestClass::getAllResponseHeaders() const {
9195 if (_reply) {
9296 QList<QNetworkReply::RawHeaderPair> headerList = _reply->rawHeaderPairs();
9397 QByteArray headers;
@@ -97,16 +101,16 @@ QScriptValue XMLHttpRequestClass::getAllResponseHeaders() const { · 3 unmodified lines
97101 headers.append(headerList[i].second);
98102 headers.append("\n");
99103 }
100− return QString(headers.data());
104+ return _engine->newValue(QString(headers.data()));
101105 }
102− return QScriptValue("");
106+ return _engine->newValue("");
103107 }
104108
105−QScriptValue XMLHttpRequestClass::getResponseHeader(const QString& name) const {
109+ScriptValuePointer XMLHttpRequestClass::getResponseHeader(const QString& name) const {
106110 if (_reply && _reply->hasRawHeader(name.toLatin1())) {
107− return QScriptValue(QString(_reply->rawHeader(name.toLatin1())));
111+ return _engine->newValue(QString(_reply->rawHeader(name.toLatin1())));
108112 }
109− return QScriptValue::NullValue;
113+ return _engine->nullValue();
110114 }
111115
112116 /*@jsdoc
@@ -116,8 +120,8 @@ QScriptValue XMLHttpRequestClass::getResponseHeader(const QString& name) const { · 3 unmodified lines
116120 void XMLHttpRequestClass::setReadyState(ReadyState readyState) {
117121 if (readyState != _readyState) {
118122 _readyState = readyState;
119− if (_onReadyStateChange.isFunction()) {
120− _onReadyStateChange.call(QScriptValue::NullValue);
123+ if (_onReadyStateChange->isFunction()) {
124+ _onReadyStateChange->call(_onReadyStateChange->engine()->nullValue());
121125 }
122126 }
123127 }
@@ -153,17 +157,17 @@ void XMLHttpRequestClass::open(const QString& method, const QString& url, bool a · 29 unmodified lines
153157 }
154158
155159 void XMLHttpRequestClass::send() {
156− send(QScriptValue::NullValue);
160+ send(_engine->nullValue());
157161 }
158162
159−void XMLHttpRequestClass::send(const QScriptValue& data) {
163+void XMLHttpRequestClass::send(const ScriptValuePointer& data) {
160164 if (_readyState == OPENED && !_reply) {
161165
162166 if (!data.isNull()) {
163− if (data.isObject()) {
164− _sendData = qscriptvalue_cast<QByteArray>(data);
167+ if (data->isObject()) {
168+ _sendData = scriptvalue_cast<QByteArray>(data);
165169 } else {
166− _sendData = data.toString().toUtf8();
170+ _sendData = data->toString().toUtf8();
167171 }
168172 }
169173
@@ -193,8 +197,8 @@ void XMLHttpRequestClass::doSend() { · 23 unmodified lines
193197 * @callback XMLHttpRequest~onTimeoutCallback
194198 */
195199 void XMLHttpRequestClass::requestTimeout() {
196− if (_onTimeout.isFunction()) {
197− _onTimeout.call(QScriptValue::NullValue);
200+ if (_onTimeout->isFunction()) {
201+ _onTimeout->call(_engine->nullValue());
198202 }
199203 abortRequest();
200204 _errorCode = QNetworkReply::TimeoutError;
@@ -215,15 +219,14 @@ void XMLHttpRequestClass::requestFinished() { · 14 unmodified lines
215219
216220 if (_responseType == "json") {
217221 _responseData = _engine->evaluate("(" + QString(_rawResponseData.data()) + ")");
218− if (_responseData.isError()) {
222+ if (_responseData->isError()) {
219223 _engine->clearExceptions();
220− _responseData = QScriptValue::NullValue;
224+ _responseData = _engine->nullValue();
221225 }
222226 } else if (_responseType == "arraybuffer") {
223− QScriptValue data = _engine->newVariant(QVariant::fromValue(_rawResponseData));
224− _responseData = _engine->newObject(reinterpret_cast<ScriptEngine*>(_engine)->getArrayBufferClass(), data);
227+ _responseData = _engine->newArrayBuffer(_rawResponseData);
225228 } else {
226− _responseData = QScriptValue(QString(_rawResponseData.data()));
229+ _responseData = _engine->newValue(QString(_rawResponseData.data()));
227230 }
228231 }
229232

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t