diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2011-06-20 15:22:08 +1000 |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2011-06-20 15:31:54 +1000 |
commit | 0eeb925aa5039ffddf8d623f250980fc4c97712e (patch) | |
tree | 51f8a94c44747ed6bc1614b260968ed17e8804c2 | |
parent | 7031ca0e1d896336334f5a788baac6c09a9ce703 (diff) |
Add "DELETE" support to XMLHttpRequest
-rw-r--r-- | src/declarative/qml/qdeclarativexmlhttprequest.cpp | 9 | ||||
-rw-r--r-- | tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData.qml | 2 | ||||
-rw-r--r-- | tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_DELETE.expect | 7 | ||||
-rw-r--r-- | tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_HEAD.expect (renamed from tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_PUT.expect) | 0 | ||||
-rw-r--r-- | tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp | 23 |
5 files changed, 35 insertions, 6 deletions
diff --git a/src/declarative/qml/qdeclarativexmlhttprequest.cpp b/src/declarative/qml/qdeclarativexmlhttprequest.cpp index 83b7d170a4..f74995ba0a 100644 --- a/src/declarative/qml/qdeclarativexmlhttprequest.cpp +++ b/src/declarative/qml/qdeclarativexmlhttprequest.cpp @@ -1163,10 +1163,12 @@ void QDeclarativeXMLHttpRequest::requestFromUrl(const QUrl &url) m_network = networkAccessManager()->get(request); else if (m_method == QLatin1String("HEAD")) m_network = networkAccessManager()->head(request); - else if(m_method == QLatin1String("POST")) + else if (m_method == QLatin1String("POST")) m_network = networkAccessManager()->post(request, m_data); - else if(m_method == QLatin1String("PUT")) + else if (m_method == QLatin1String("PUT")) m_network = networkAccessManager()->put(request, m_data); + else if (m_method == QLatin1String("DELETE")) + m_network = networkAccessManager()->deleteResource(request); QObject::connect(m_network, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(downloadProgress(qint64))); @@ -1447,7 +1449,8 @@ static QScriptValue qmlxmlhttprequest_open(QScriptContext *context, QScriptEngin if (method != QLatin1String("GET") && method != QLatin1String("PUT") && method != QLatin1String("HEAD") && - method != QLatin1String("POST")) + method != QLatin1String("POST") && + method != QLatin1String("DELETE")) THROW_DOM(SYNTAX_ERR, "Unsupported HTTP method type"); diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData.qml index c98555cd2f..442932be26 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData.qml @@ -14,7 +14,7 @@ QtObject { // Test to the end x.onreadystatechange = function() { if (x.readyState == XMLHttpRequest.DONE) { - if (reqType == "HEAD") + if (reqType == "HEAD" || reqType == "DELETE") dataOK = (x.responseText == ""); else dataOK = (x.responseText == "QML Rocks!\n"); diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_DELETE.expect b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_DELETE.expect new file mode 100644 index 0000000000..b2d177aa20 --- /dev/null +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_DELETE.expect @@ -0,0 +1,7 @@ +DELETE /testdocument.html HTTP/1.1 +ACCEPT-LANGUAGE: en-US +Connection: Keep-Alive +Accept-Encoding: gzip +User-Agent: Mozilla/5.0 +Host: 127.0.0.1:14445 + diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_PUT.expect b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_HEAD.expect index 74a979817d..74a979817d 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_PUT.expect +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_HEAD.expect diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp b/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp index de16cf41f5..aad68c5926 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp @@ -497,7 +497,7 @@ void tst_qdeclarativexmlhttprequest::send_alreadySent() delete object; } -// Test that send for a GET or HEAD ignores data +// Test that sends for GET, HEAD and DELETE ignore data void tst_qdeclarativexmlhttprequest::send_ignoreData() { { @@ -522,7 +522,7 @@ void tst_qdeclarativexmlhttprequest::send_ignoreData() { TestHTTPServer server(SERVER_PORT); QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_ignoreData_PUT.expect"), + QVERIFY(server.wait(TEST_FILE("send_ignoreData_HEAD.expect"), TEST_FILE("send_ignoreData.reply"), QUrl())); @@ -537,6 +537,25 @@ void tst_qdeclarativexmlhttprequest::send_ignoreData() delete object; } + + { + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("send_ignoreData_DELETE.expect"), + TEST_FILE("send_ignoreData.reply"), + QUrl())); + + QDeclarativeComponent component(&engine, TEST_FILE("send_ignoreData.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("reqType", "DELETE"); + object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); + component.completeCreate(); + + QTRY_VERIFY(object->property("dataOK").toBool() == true); + + delete object; + } } // Test that send()'ing data works |