const QChar *begin = input.constData() + from;
const QChar *end = input.constData() + to;
if (qt_urlRecode(output, begin, end,
- QUrl::DecodeUnicode | QUrl::DecodeAllDelimiters | QUrl::DecodeSpaces, actions))
+ QUrl::MostDecoded, actions))
return output;
return input.mid(from, to - from);
}
const ushort *actions = 0;
- if (options & QUrl::DecodeAllDelimiters)
+ if (options & QUrl::DecodeDelimiters)
actions = decodedActions;
else
actions = encodedActions;
const ushort *userNameActions;
const ushort *passwordActions;
- if (options & QUrl::DecodeAllDelimiters) {
+ if (options & QUrl::DecodeDelimiters) {
switch (appendingTo) {
case UserInfo:
userNameActions = decodedUserNameInUserInfoActions;
inline void QUrlPrivate::appendPath(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
{
- if (appendingTo != Path && options & QUrl::DecodeAllDelimiters) {
+ if (appendingTo != Path && options & QUrl::DecodeDelimiters) {
if (!qt_urlRecode(appendTo, path.constData(), path.constEnd(), options, decodedPathInUrlActions))
appendTo += path;
}
const ushort *actions = 0;
- if (options & QUrl::DecodeAllDelimiters) {
+ if (options & QUrl::DecodeDelimiters) {
// reset to default qt_urlRecode behaviour (leave delimiters alone)
- options &= ~QUrl::DecodeAllDelimiters;
+ options &= ~QUrl::DecodeDelimiters;
actions = appendingTo == Query ? decodedQueryInIsolationActions : decodedQueryInUrlActions;
- } else if ((options & QUrl::DecodeAllDelimiters) == 0) {
+ } else if ((options & QUrl::DecodeDelimiters) == 0) {
actions = encodedQueryActions;
}
enum ComponentFormattingOption {
FullyEncoded = 0x000000,
DecodeSpaces = 0x100000,
- DecodeUnambiguousDelimiters = 0x200000,
- DecodeAllDelimiters = DecodeUnambiguousDelimiters | 0x400000,
+ DecodeDelimiters = 0x200000 | 0x400000,
DecodeUnicode = 0x800000,
- PrettyDecoded = DecodeSpaces | DecodeUnambiguousDelimiters | DecodeUnicode,
- MostDecoded = PrettyDecoded | DecodeAllDelimiters
+ PrettyDecoded = DecodeSpaces | DecodeDelimiters | DecodeUnicode,
+ MostDecoded = PrettyDecoded
};
Q_DECLARE_FLAGS(ComponentFormattingOptions, ComponentFormattingOption)
#ifdef qdoc
// note: duplicated in setQuery()
QString output;
if (qt_urlRecode(output, input.constData(), input.constData() + input.length(),
- QUrl::DecodeUnicode | QUrl::DecodeAllDelimiters | QUrl::DecodeSpaces,
+ QUrl::MostDecoded,
prettyDecodedActions))
return output;
return input;
inline bool idempotentRecodeToUser(QUrl::ComponentFormattingOptions encoding)
{
- return encoding == QUrl::PrettyDecoded || encoding == (QUrl::PrettyDecoded | QUrl::DecodeAllDelimiters);
+ return encoding == QUrl::PrettyDecoded;
}
inline QString QUrlQueryPrivate::recodeToUser(const QString &input, QUrl::ComponentFormattingOptions encoding) const
if (idempotentRecodeToUser(encoding))
return input;
- bool decodeUnambiguous = encoding & QUrl::DecodeUnambiguousDelimiters;
- encoding &= ~QUrl::DecodeAllDelimiters;
-
- if (decodeUnambiguous) {
+ if (encoding & QUrl::DecodeDelimiters) {
QString output;
if (qt_urlRecode(output, input.constData(), input.constData() + input.length(),
- encoding | QUrl::DecodeAllDelimiters, prettyDecodedActions))
+ encoding, prettyDecodedActions))
return output;
return input;
}
QString key;
if (!qt_urlRecode(key, begin, delimiter,
- QUrl::DecodeUnicode | QUrl::DecodeAllDelimiters | QUrl::DecodeSpaces,
+ QUrl::MostDecoded,
prettyDecodedActions))
key = QString(begin, delimiter - begin);
} else {
QString value;
if (!qt_urlRecode(value, delimiter + 1, pos,
- QUrl::DecodeUnicode | QUrl::DecodeAllDelimiters | QUrl::DecodeSpaces,
+ QUrl::MostDecoded,
prettyDecodedActions))
value = QString(delimiter + 1, pos - delimiter - 1);
itemList.append(qMakePair(key, value));
decode('#'), // 3
0
};
- if (encoding & QUrl::DecodeAllDelimiters) {
+ if (encoding & QUrl::DecodeDelimiters) {
// full decoding: we only encode the characters above
tableActions[3] = 0;
- encoding |= QUrl::DecodeAllDelimiters;
} else {
tableActions[3] = encode('#');
}
QUrl::ComponentFormattingOptions encoding, const ushort *tableModifications)
{
uchar actionTable[sizeof defaultActionTable];
- if (encoding & QUrl::DecodeAllDelimiters) {
+ if (encoding & QUrl::DecodeDelimiters) {
// reset the table
memset(actionTable, DecodeCharacter, sizeof actionTable);
if (!(encoding & QUrl::DecodeSpaces))
template<> inline char *toString(const QUrl &uri)
{
- return qstrdup(uri.toEncoded(QUrl::DecodeUnambiguousDelimiters).constData());
+ return qstrdup(uri.toEncoded(QUrl::DecodeDelimiters).constData());
}
template<> inline char *toString(const QVariant &v)
// and test that %2f is *not* decoded to a slash in the path
// don't test the query because in this mode it doesn't transform anything
QTest::newRow("decoded-gendelims-unchanging") << QUrl("x://:%3a@host/%2f%3a%40#%23%3a%2f%3f%40")
- << int(QUrl::DecodeUnambiguousDelimiters)
+ << int(QUrl::DecodeDelimiters)
<< "" << ":" << "::"
<< "host" << "::@host"
<< "/%2F:@" << "" << "#:/?@"
<< QString() << "!$()*+,;=:/?[]@" << QString()
<< "?!$()*+,;=:/?[]@";
QTest::newRow("undecoded-delims-query") << QUrl("?%21%24%26%27%28%29%2a%2b%2c%2f%3a%3b%3d%3f%40%5b%5d")
- << int(QUrl::DecodeUnambiguousDelimiters)
+ << int(QUrl::DecodeDelimiters)
<< QString() << QString() << QString()
<< QString() << QString()
<< QString() << "%21%24%26%27%28%29%2A%2B%2C%2F%3A%3B%3D%3F%40%5B%5D" << QString()
"?%22%3C%3E%5E%5C%7B%7C%7D#%22%3C%3E%5E%5C%7B%7C%7D";
QTest::newRow("decoded-others") << QUrl("x://%22%3C%3E%5E%5C%7B%7C%7D:%22%3C%3E%5E%5C%7B%7C%7D@host"
"/%22%3C%3E%5E%5C%7B%7C%7D?%22%3C%3E%5E%5C%7B%7C%7D#%22%3C%3E%5E%5C%7B%7C%7D")
- << int(QUrl::DecodeAllDelimiters)
+ << int(QUrl::DecodeDelimiters)
<< "\"<>^\\{|}" << "\"<>^\\{|}" << "\"<>^\\{|}:\"<>^\\{|}"
<< "host" << "\"<>^\\{|}:\"<>^\\{|}@host"
<< "/\"<>^\\{|}" << "\"<>^\\{|}" << "\"<>^\\{|}"
QTest::newRow("ampersand") << "%26=%26" << "%26" << "%26" << F(QUrl::PrettyDecoded)
<< "%26=%26" << "&" << "&";
QTest::newRow("hash") << "#=#" << "%23" << "%23" << F(QUrl::PrettyDecoded)
- << "%23=%23" << "#" << "#";
- QTest::newRow("decode-hash") << "%23=%23" << "%23" << "%23" << F(QUrl::DecodeAllDelimiters)
+ << "#=#" << "#" << "#";
+ QTest::newRow("decode-hash") << "%23=%23" << "%23" << "%23" << F(QUrl::DecodeDelimiters)
<< "#=#" << "#" << "#";
QTest::newRow("percent") << "%25=%25" << "%25" << "%25" << F(QUrl::PrettyDecoded)
// plus signs must not be touched
QTest::newRow("encode-plus") << "+=+" << "+" << "+" << F(QUrl::FullyEncoded)
<< "+=+" << "+" << "+";
- QTest::newRow("decode-2b") << "%2b=%2b" << "%2b" << "%2b" << F(QUrl::DecodeAllDelimiters)
+ QTest::newRow("decode-2b") << "%2b=%2b" << "%2b" << "%2b" << F(QUrl::DecodeDelimiters)
<< "%2B=%2B" << "%2B" << "%2B";
expected << qItem("foo", "bar") << qItem("hello", "world");
COMPARE_ITEMS(query.queryItems(), expected);
COMPARE_ITEMS(query.queryItems(QUrl::FullyEncoded), expected);
- COMPARE_ITEMS(query.queryItems(QUrl::DecodeAllDelimiters), expected);
+ COMPARE_ITEMS(query.queryItems(QUrl::DecodeDelimiters), expected);
}
{