Make QUrl always lowercase the scheme().

URL schemes can only contain alphanumeric characters and all
protocols specify that they are case-insensitive. So instead
of doing case-insensitive comparison everywhere and then get
it wrong sometimes, better to lower-case it here.

Change-Id: I61f51a3f4c85b90af1586ebcf69608987fbe2ec3
Reviewed-by: Jonas Gastal <jgastal@profusion.mobi>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
David Faure 2012-01-24 14:51:51 +01:00 committed by Qt by Nokia
parent 0e06e47a0b
commit 84bdb7b61f
2 changed files with 6 additions and 5 deletions

View File

@ -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

View File

@ -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"));
}
{