summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2011-10-13 19:56:28 +0200
committerQt by Nokia <qt-info@nokia.com>2012-03-30 01:19:59 +0200
commit74d2dba46041448c70dbd3049ae2a8277770baf6 (patch)
treeb7745d6387b86768b85a5e772dd654cb91412aa8
parent8cf66c3bc4482bbefad90ce7ad34ac6c3de8478f (diff)
Port to the new QUrl API
The use of any broken-down components of the query now needs QUrlQuery. The QUrl constructor and toString() are now rehabilitated and the preferred forms. Use toEncoded() and fromEncoded() now only when we need to store data in a QByteArray or the data comes from a QByteArray anyway. Change to toString() or the constructor if the data was in a QString. Change-Id: I9d761a628bef9c70185a48e927a61779a1642342 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
-rw-r--r--src/corelib/io/qurlquery.cpp2
-rw-r--r--src/gui/text/qtextimagehandler.cpp4
-rw-r--r--src/gui/text/qtextodfwriter.cpp2
-rw-r--r--src/network/access/qhttpnetworkrequest.cpp15
-rw-r--r--src/network/access/qhttpthreaddelegate.cpp16
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend.cpp3
-rw-r--r--src/network/access/qnetworkreplydataimpl.cpp2
-rw-r--r--src/network/access/qnetworkreplyhttpimpl.cpp2
-rw-r--r--src/testlib/qtest.h2
-rw-r--r--src/widgets/widgets/qtextbrowser.cpp2
-rw-r--r--tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp2
-rw-r--r--tests/auto/other/networkselftest/tst_networkselftest.cpp3
-rw-r--r--tests/benchmarks/corelib/io/qurl/main.cpp23
13 files changed, 28 insertions, 50 deletions
diff --git a/src/corelib/io/qurlquery.cpp b/src/corelib/io/qurlquery.cpp
index 042f9a278b..b1c4b7d02c 100644
--- a/src/corelib/io/qurlquery.cpp
+++ b/src/corelib/io/qurlquery.cpp
@@ -337,7 +337,7 @@ QUrlQuery::QUrlQuery(const QUrl &url)
// use internals to avoid unnecessary recoding
// ### FIXME: actually do it
if (url.hasQuery())
- d = new QUrlQueryPrivate(QString::fromUtf8(url.encodedQuery()));
+ d = new QUrlQueryPrivate(url.query());
}
/*!
diff --git a/src/gui/text/qtextimagehandler.cpp b/src/gui/text/qtextimagehandler.cpp
index abd283e459..6804dba95c 100644
--- a/src/gui/text/qtextimagehandler.cpp
+++ b/src/gui/text/qtextimagehandler.cpp
@@ -59,7 +59,7 @@ static QPixmap getPixmap(QTextDocument *doc, const QTextImageFormat &format)
QString name = format.name();
if (name.startsWith(QLatin1String(":/"))) // auto-detect resources
name.prepend(QLatin1String("qrc"));
- QUrl url = QUrl::fromEncoded(name.toUtf8());
+ QUrl url = QUrl(name);
const QVariant data = doc->resource(QTextDocument::ImageResource, url);
if (data.type() == QVariant::Pixmap || data.type() == QVariant::Image) {
pm = qvariant_cast<QPixmap>(data);
@@ -134,7 +134,7 @@ static QImage getImage(QTextDocument *doc, const QTextImageFormat &format)
QString name = format.name();
if (name.startsWith(QLatin1String(":/"))) // auto-detect resources
name.prepend(QLatin1String("qrc"));
- QUrl url = QUrl::fromEncoded(name.toUtf8());
+ QUrl url = QUrl(name);
const QVariant data = doc->resource(QTextDocument::ImageResource, url);
if (data.type() == QVariant::Image) {
image = qvariant_cast<QImage>(data);
diff --git a/src/gui/text/qtextodfwriter.cpp b/src/gui/text/qtextodfwriter.cpp
index 80adeb602c..c03805b95f 100644
--- a/src/gui/text/qtextodfwriter.cpp
+++ b/src/gui/text/qtextodfwriter.cpp
@@ -366,7 +366,7 @@ void QTextOdfWriter::writeInlineCharacter(QXmlStreamWriter &writer, const QTextF
QString name = imageFormat.name();
if (name.startsWith(QLatin1String(":/"))) // auto-detect resources
name.prepend(QLatin1String("qrc"));
- QUrl url = QUrl::fromEncoded(name.toUtf8());
+ QUrl url = QUrl(name);
const QVariant data = m_document->resource(QTextDocument::ImageResource, url);
if (data.type() == QVariant::Image) {
image = qvariant_cast<QImage>(data);
diff --git a/src/network/access/qhttpnetworkrequest.cpp b/src/network/access/qhttpnetworkrequest.cpp
index f32251935b..1325f105cf 100644
--- a/src/network/access/qhttpnetworkrequest.cpp
+++ b/src/network/access/qhttpnetworkrequest.cpp
@@ -116,19 +116,18 @@ QByteArray QHttpNetworkRequestPrivate::methodName() const
QByteArray QHttpNetworkRequestPrivate::uri(bool throughProxy) const
{
- QUrl::FormattingOptions format(QUrl::RemoveFragment);
+ QUrl::FormattingOptions format(QUrl::RemoveFragment | QUrl::RemoveUserInfo | QUrl::FullyEncoded);
// for POST, query data is send as content
if (operation == QHttpNetworkRequest::Post && !uploadByteDevice)
format |= QUrl::RemoveQuery;
// for requests through proxy, the Request-URI contains full url
- if (throughProxy)
- format |= QUrl::RemoveUserInfo;
- else
+ if (!throughProxy)
format |= QUrl::RemoveScheme | QUrl::RemoveAuthority;
- QByteArray uri = url.toEncoded(format);
- if (uri.isEmpty() || (throughProxy && url.path().isEmpty()))
- uri += '/';
+ QUrl copy = url;
+ if (copy.path().isEmpty())
+ copy.setPath(QStringLiteral("/"));
+ QByteArray uri = copy.toEncoded(format);
return uri;
}
@@ -163,7 +162,7 @@ QByteArray QHttpNetworkRequestPrivate::header(const QHttpNetworkRequest &request
ba += "Content-Type: application/octet-stream\r\n";
}
if (!request.d->uploadByteDevice && request.d->url.hasQuery()) {
- QByteArray query = request.d->url.encodedQuery();
+ QByteArray query = request.d->url.query(QUrl::FullyEncoded).toLatin1();
ba += "Content-Length: ";
ba += QByteArray::number(query.size());
ba += "\r\n\r\n";
diff --git a/src/network/access/qhttpthreaddelegate.cpp b/src/network/access/qhttpthreaddelegate.cpp
index c8b4c51e23..634340bb54 100644
--- a/src/network/access/qhttpthreaddelegate.cpp
+++ b/src/network/access/qhttpthreaddelegate.cpp
@@ -105,12 +105,12 @@ static QNetworkReply::NetworkError statusCodeFromHttp(int httpStatusCode, const
static QByteArray makeCacheKey(QUrl &url, QNetworkProxy *proxy)
{
- QByteArray result;
+ QString result;
QUrl copy = url;
bool isEncrypted = copy.scheme().toLower() == QLatin1String("https");
copy.setPort(copy.port(isEncrypted ? 443 : 80));
- result = copy.toEncoded(QUrl::RemoveUserInfo | QUrl::RemovePath |
- QUrl::RemoveQuery | QUrl::RemoveFragment);
+ result = copy.toString(QUrl::RemoveUserInfo | QUrl::RemovePath |
+ QUrl::RemoveQuery | QUrl::RemoveFragment | QUrl::FullyEncoded);
#ifndef QT_NO_NETWORKPROXY
if (proxy && proxy->type() != QNetworkProxy::NoProxy) {
@@ -134,15 +134,15 @@ static QByteArray makeCacheKey(QUrl &url, QNetworkProxy *proxy)
key.setUserName(proxy->user());
key.setHost(proxy->hostName());
key.setPort(proxy->port());
- key.setEncodedQuery(result);
- result = key.toEncoded();
+ key.setQuery(result);
+ result = key.toString(QUrl::FullyEncoded);
}
}
#else
Q_UNUSED(proxy)
#endif
- return "http-connection:" + result;
+ return "http-connection:" + result.toLatin1();
}
class QNetworkAccessCachedHttpConnection: public QHttpNetworkConnection,
@@ -386,7 +386,7 @@ void QHttpThreadDelegate::finishedSlot()
// it's an error reply
QString msg = QLatin1String(QT_TRANSLATE_NOOP("QNetworkReply",
"Error downloading %1 - server replied: %2"));
- msg = msg.arg(QString::fromAscii(httpRequest.url().toEncoded()), httpReply->reasonPhrase());
+ msg = msg.arg(httpRequest.url().toString(), httpReply->reasonPhrase());
emit error(statusCodeFromHttp(httpReply->statusCode(), httpRequest.url()), msg);
}
@@ -406,7 +406,7 @@ void QHttpThreadDelegate::synchronousFinishedSlot()
// it's an error reply
QString msg = QLatin1String(QT_TRANSLATE_NOOP("QNetworkReply",
"Error downloading %1 - server replied: %2"));
- incomingErrorDetail = msg.arg(QString::fromAscii(httpRequest.url().toEncoded()), httpReply->reasonPhrase());
+ incomingErrorDetail = msg.arg(httpRequest.url().toString(), httpReply->reasonPhrase());
incomingErrorCode = statusCodeFromHttp(httpReply->statusCode(), httpRequest.url());
}
diff --git a/src/network/access/qnetworkaccessdebugpipebackend.cpp b/src/network/access/qnetworkaccessdebugpipebackend.cpp
index 5a4cd7b20d..3fb882b5e4 100644
--- a/src/network/access/qnetworkaccessdebugpipebackend.cpp
+++ b/src/network/access/qnetworkaccessdebugpipebackend.cpp
@@ -42,6 +42,7 @@
#include "qnetworkaccessdebugpipebackend_p.h"
#include "QtCore/qdatastream.h"
#include <QCoreApplication>
+#include <QUrlQuery>
#include "private/qnoncontiguousbytedevice_p.h"
QT_BEGIN_NAMESPACE
@@ -99,7 +100,7 @@ void QNetworkAccessDebugPipeBackend::open()
// socket bytes written -> we can push more from upstream to socket
connect(&socket, SIGNAL(bytesWritten(qint64)), SLOT(socketBytesWritten(qint64)));
- bareProtocol = url().queryItemValue(QLatin1String("bare")) == QLatin1String("1");
+ bareProtocol = QUrlQuery(url()).queryItemValue(QLatin1String("bare")) == QLatin1String("1");
if (operation() == QNetworkAccessManager::PutOperation) {
uploadByteDevice = createUploadByteDevice();
diff --git a/src/network/access/qnetworkreplydataimpl.cpp b/src/network/access/qnetworkreplydataimpl.cpp
index ab2c97b653..7a8d4ee3e0 100644
--- a/src/network/access/qnetworkreplydataimpl.cpp
+++ b/src/network/access/qnetworkreplydataimpl.cpp
@@ -88,7 +88,7 @@ QNetworkReplyDataImpl::QNetworkReplyDataImpl(QObject *parent, const QNetworkRequ
} else {
// something wrong with this URI
const QString msg = QCoreApplication::translate("QNetworkAccessDataBackend",
- "Invalid URI: %1").arg(QString::fromLatin1(url.toEncoded()));
+ "Invalid URI: %1").arg(url.toString());
setError(QNetworkReply::ProtocolFailure, msg);
QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
Q_ARG(QNetworkReply::NetworkError, QNetworkReply::ProtocolFailure));
diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp
index a914ee3f04..e019ade314 100644
--- a/src/network/access/qnetworkreplyhttpimpl.cpp
+++ b/src/network/access/qnetworkreplyhttpimpl.cpp
@@ -1039,7 +1039,7 @@ void QNetworkReplyHttpImplPrivate::checkForRedirect(const int statusCode)
// The response to a 303 MUST NOT be cached, while the response to
// all of the others is cacheable if the headers indicate it to be
QByteArray header = q->rawHeader("location");
- QUrl url = QUrl::fromEncoded(header);
+ QUrl url = QUrl(QString::fromUtf8(header));
if (!url.isValid())
url = QUrl(QLatin1String(header));
// FIXME?
diff --git a/src/testlib/qtest.h b/src/testlib/qtest.h
index 392e223e39..90705b3d40 100644
--- a/src/testlib/qtest.h
+++ b/src/testlib/qtest.h
@@ -142,7 +142,7 @@ template<> inline char *toString(const QRectF &s)
template<> inline char *toString(const QUrl &uri)
{
- return qstrdup(uri.toEncoded().constData());
+ return qstrdup(uri.toEncoded(QUrl::DecodeUnambiguousDelimiters).constData());
}
template<> inline char *toString(const QVariant &v)
diff --git a/src/widgets/widgets/qtextbrowser.cpp b/src/widgets/widgets/qtextbrowser.cpp
index 050730ec2a..261b96f8af 100644
--- a/src/widgets/widgets/qtextbrowser.cpp
+++ b/src/widgets/widgets/qtextbrowser.cpp
@@ -139,7 +139,7 @@ public:
// re-imlemented from QTextEditPrivate
virtual QUrl resolveUrl(const QUrl &url) const;
inline QUrl resolveUrl(const QString &url) const
- { return resolveUrl(QUrl::fromEncoded(url.toUtf8())); }
+ { return resolveUrl(QUrl(url)); }
#ifdef QT_KEYPAD_NAVIGATION
void keypadMove(bool next);
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
index a5aaf6af25..150f5c4616 100644
--- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -6742,7 +6742,7 @@ void tst_QNetworkReply::pipeliningHelperSlot() {
pipeliningWasUsed = true;
// check that the contents match (the response to echo.cgi?3 should return 3 etc.)
- QString urlQueryString = reply->url().queryItems().at(0).first;
+ QString urlQueryString = reply->url().query();
QString content = reply->readAll();
QVERIFY2(urlQueryString == content, "data corruption with pipelining detected");
diff --git a/tests/auto/other/networkselftest/tst_networkselftest.cpp b/tests/auto/other/networkselftest/tst_networkselftest.cpp
index ebb8443748..8575b11fca 100644
--- a/tests/auto/other/networkselftest/tst_networkselftest.cpp
+++ b/tests/auto/other/networkselftest/tst_networkselftest.cpp
@@ -659,9 +659,10 @@ void tst_NetworkSelfTest::httpServerFiles()
{
QFETCH(QString, uri);
QFETCH(int, size);
+ QUrl url(uri);
QList<Chat> chat;
- chat << Chat::send("HEAD " + QUrl::toPercentEncoding(uri, "/") + " HTTP/1.0\r\n"
+ chat << Chat::send("HEAD " + url.toEncoded() + " HTTP/1.0\r\n"
"Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n"
"Connection: close\r\n"
"Authorization: Basic cXNvY2tzdGVzdDpwYXNzd29yZA==\r\n"
diff --git a/tests/benchmarks/corelib/io/qurl/main.cpp b/tests/benchmarks/corelib/io/qurl/main.cpp
index dc236e7120..32cd13ad12 100644
--- a/tests/benchmarks/corelib/io/qurl/main.cpp
+++ b/tests/benchmarks/corelib/io/qurl/main.cpp
@@ -56,8 +56,6 @@ private slots:
void toLocalFile();
void toString_data();
void toString();
- void toEncoded_data();
- void toEncoded();
void resolved_data();
void resolved();
void equality_data();
@@ -160,27 +158,6 @@ void tst_qurl::toString()
}
}
-void tst_qurl::toEncoded_data()
-{
- generateFirstRunData();
-}
-
-void tst_qurl::toEncoded()
-{
- QFETCH(bool, firstRun);
- if(firstRun) {
- QBENCHMARK {
- QUrl url("pics/avatar.png");
- url.toEncoded(QUrl::FormattingOption(0x100));
- }
- } else {
- QUrl url("pics/avatar.png");
- QBENCHMARK {
- url.toEncoded(QUrl::FormattingOption(0x100));
- }
- }
-}
-
void tst_qurl::resolved_data()
{
generateFirstRunData();