diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2015-11-27 17:09:06 +0100 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2015-11-27 17:09:06 +0100 |
| commit | 625962e90a0646f48e13fff5e2f88f781c5dd9b5 (patch) | |
| tree | 4fa6bbfa4c8f6faf22bc51170c11fa5621a50767 | |
| parent | 20cab6e9b75642536f8f3f619ed3ffd44cfa6acd (diff) | |
Add support for onreadystatechange JS callback from XMLHttpRequest. Refs
#80
| -rw-r--r-- | daemon/jskitobjects.cpp | 20 | ||||
| -rw-r--r-- | daemon/jskitobjects.h | 4 |
2 files changed, 24 insertions, 0 deletions
diff --git a/daemon/jskitobjects.cpp b/daemon/jskitobjects.cpp index d9ef02f..481c077 100644 --- a/daemon/jskitobjects.cpp +++ b/daemon/jskitobjects.cpp @@ -413,6 +413,16 @@ void JSKitXMLHttpRequest::setOnload(const QJSValue &value) _onload = value; } +QJSValue JSKitXMLHttpRequest::onreadystatechange() const +{ + return _onreadystatechange; +} + +void JSKitXMLHttpRequest::setOnreadystatechange(const QJSValue &value) +{ + _onreadystatechange = value; +} + QJSValue JSKitXMLHttpRequest::ontimeout() const { return _ontimeout; @@ -541,6 +551,16 @@ void JSKitXMLHttpRequest::handleReplyFinished() } else { qCDebug(l) << "No onload set"; } + + if (_onreadystatechange.isCallable()) { + qCDebug(l) << "going to call onreadystatechange handler:" << _onreadystatechange.toString(); + QJSValue result = _onreadystatechange.callWithInstance(_mgr->engine()->newQObject(this)); + if (result.isError()) { + qCWarning(l) << "JS error on onreadystatechange handler:" << JSKitManager::describeError(result); + } + } else { + qCDebug(l) << "No onreadystatechange set"; + } } void JSKitXMLHttpRequest::handleReplyError(QNetworkReply::NetworkError code) diff --git a/daemon/jskitobjects.h b/daemon/jskitobjects.h index 9f5308f..2840a3b 100644 --- a/daemon/jskitobjects.h +++ b/daemon/jskitobjects.h @@ -100,6 +100,7 @@ class JSKitXMLHttpRequest : public QObject Q_PROPERTY(QJSValue onload READ onload WRITE setOnload) Q_PROPERTY(QJSValue ontimeout READ ontimeout WRITE setOntimeout) + Q_PROPERTY(QJSValue onreadystatechange READ onreadystatechange WRITE setOnreadystatechange) Q_PROPERTY(QJSValue onerror READ onerror WRITE setOnerror) Q_PROPERTY(uint readyState READ readyState NOTIFY readyStateChanged) Q_PROPERTY(uint timeout READ timeout WRITE setTimeout) @@ -128,6 +129,8 @@ public: QJSValue onload() const; void setOnload(const QJSValue &value); + QJSValue onreadystatechange() const; + void setOnreadystatechange(const QJSValue &value); QJSValue ontimeout() const; void setOntimeout(const QJSValue &value); QJSValue onerror() const; @@ -173,6 +176,7 @@ private: QJSValue _onload; QJSValue _ontimeout; QJSValue _onerror; + QJSValue _onreadystatechange; }; class JSKitGeolocation : public QObject |
