diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index 2c75ac3e0d..9856d5defa 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -3880,7 +3880,7 @@ void QUrlPrivate::parse(ParseOptions parseOptions) const if (parseData.scheme) { QByteArray s(parseData.scheme, parseData.schemeLength); - that->scheme = fromPercentEncodingMutable(&s); + that->scheme = fromPercentEncodingMutable(&s).toLower(); } that->setEncodedUserInfo(&parseData); @@ -4041,7 +4041,6 @@ const QByteArray &QUrlPrivate::normalized() const QURL_SETFLAG(that->stateFlags, QUrlPrivate::Normalized); QUrlPrivate tmp = *this; - tmp.scheme = tmp.scheme.toLower(); tmp.host = tmp.canonicalHost(); // ensure the encoded and normalized parts of the URL @@ -4467,13 +4466,15 @@ void QUrl::setScheme(const QString &scheme) detach(); QURL_UNSETFLAG(d->stateFlags, QUrlPrivate::Validated | QUrlPrivate::Normalized); - d->scheme = scheme; + d->scheme = scheme.toLower(); } /*! Returns the scheme of the URL. If an empty string is returned, this means the scheme is undefined and the URL is then relative. + The returned scheme is always lowercase, for convenience. + \sa setScheme(), isRelative() */ QString QUrl::scheme() const diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp index f9dcb84fa8..2f53367061 100644 --- a/tests/auto/corelib/io/qurl/tst_qurl.cpp +++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp @@ -375,7 +375,7 @@ void tst_QUrl::setUrl() { QUrl url("hTTp://www.foo.bar:80"); QVERIFY(url.isValid()); - QCOMPARE(url.scheme(), QString::fromLatin1("hTTp")); + QCOMPARE(url.scheme(), QString::fromLatin1("http")); QCOMPARE(url.path(), QString()); QVERIFY(url.encodedQuery().isEmpty()); QVERIFY(url.userInfo().isEmpty()); @@ -385,7 +385,7 @@ void tst_QUrl::setUrl() QCOMPARE(url.port(), 80); QUrl url2("//www1.foo.bar"); - QCOMPARE(url.resolved(url2).toString(), QString::fromLatin1("hTTp://www1.foo.bar")); + QCOMPARE(url.resolved(url2).toString(), QString::fromLatin1("http://www1.foo.bar")); } {