Fix QUrl handling after QUrl changes.
authorDavid Faure <faure@kde.org>
Wed, 1 Feb 2012 11:06:18 +0000 (12:06 +0100)
committerQt by Nokia <qt-info@nokia.com>
Thu, 2 Feb 2012 05:57:25 +0000 (06:57 +0100)
toString() is fine for most usages but here the result is made part of XML
bits, so toEncoded() is necessary so that '<' and '>' are percent-encoded.

Change-Id: I41832cefe3ae12cab13531f17095d0804a2e86d9
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
src/xmlpatterns/data/qanyuri.cpp
src/xmlpatterns/data/qatomicvalue.cpp
src/xmlpatterns/environment/qgenericstaticcontext.cpp
tests/auto/qxmlquery/tst_qxmlquery.cpp
tools/xmlpatterns/main.cpp
tools/xmlpatterns/qapplicationargumentparser.cpp

index 5d82baf..4a51364 100644 (file)
@@ -60,14 +60,15 @@ AnyURI::Ptr AnyURI::fromValue(const QString &value)
 
 AnyURI::Ptr AnyURI::fromValue(const QUrl &uri)
 {
-    return AnyURI::Ptr(new AnyURI(uri.toString()));
+    return AnyURI::Ptr(new AnyURI(QString::fromLatin1(uri.toEncoded())));
 }
 
 AnyURI::Ptr AnyURI::resolveURI(const QString &relative,
                                const QString &base)
 {
     const QUrl urlBase(base);
-    return AnyURI::fromValue(urlBase.resolved(relative).toString());
+    const QUrl uri(urlBase.resolved(relative));
+    return AnyURI::fromValue(uri);
 }
 
 ItemType::Ptr AnyURI::type() const
index c12bfa7..cc8f207 100644 (file)
@@ -146,7 +146,7 @@ Item AtomicValue::toXDM(const QVariant &value)
              * have to let it be an xs:string. Calling QVariant::toString()
              * on a QVariant that contains a QUrl returns, surprisingly,
              * an empty string. */
-            return AtomicString::fromValue(value.toUrl().toString());
+            return AtomicString::fromValue(QString::fromLatin1(value.toUrl().toEncoded()));
         }
         case QVariant::ByteArray:
             return HexBinary::fromValue(value.toByteArray());
index dae32ff..4430e45 100644 (file)
@@ -62,7 +62,7 @@ GenericStaticContext::GenericStaticContext(const NamePool::Ptr &np,
                                                                                 , m_defaultFunctionNamespace(CommonNamespaces::XFN)
                                                                                 , m_orderingEmptySequence(Greatest)
                                                                                 , m_orderingMode(Ordered)
-                                                                                , m_defaultCollation(QUrl::fromEncoded(CommonNamespaces::UNICODE_COLLATION))
+                                                                                , m_defaultCollation(QUrl(QLatin1String(CommonNamespaces::UNICODE_COLLATION)))
                                                                                 , m_baseURI(aBaseURI)
                                                                                 , m_messageHandler(handler)
                                                                                 , m_preserveMode(Preserve)
index 9c8461c..27f3964 100644 (file)
@@ -2020,10 +2020,6 @@ void tst_QXmlQuery::fnDocNetworkAccessSuccess() const
     QVERIFY(buffer.open(QIODevice::WriteOnly));
 
     QXmlSerializer serializer(query, &buffer);
-
-    // these tests with data: URL fail since QUrl change e650dd3b6d8212d2c54ddb4a50558b508d0bf2b9
-    QEXPECT_FAIL("data scheme with ASCII", "QTBUG-23953, fails", Abort);
-    QEXPECT_FAIL("data scheme with ASCII no MIME type", "QTBUG-23953, fails", Abort);
     QVERIFY(query.evaluateTo(&serializer));
 
     QCOMPARE(result, expectedOutput);
index 8b661eb..171c6e5 100644 (file)
@@ -222,7 +222,7 @@ static inline QUrl finalizeURI(const QApplicationArgumentParser &parser,
         const QString stringURI(parser.value(arg).toString());
 
         if(parser.has(isURI))
-            userURI = QUrl::fromEncoded(stringURI.toLatin1());
+            userURI = QUrl(stringURI);
         else
             userURI = QUrl::fromLocalFile(stringURI);
     }
index 04ff1df..0e2e4ed 100644 (file)
@@ -833,7 +833,7 @@ QVariant QApplicationArgumentParser::convertToValue(const QApplicationArgument &
         }
         case QVariant::Url:
         {
-            const QUrl result(QUrl::fromEncoded(input.toLatin1()));
+            const QUrl result(input);
 
             if(result.isValid())
                 return QVariant(result);