QUrl: update top level domains that may contain non-ASCII characters
Most notably, .com and .net now may contain non-ASCII characters. list has been generated from http://www.mozilla.org/projects/security/tld-idn-policy-list.html Change-Id: Idc3191dc782bc4173ccb19b4bc81f4f061ca7999 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
658616b44e
commit
b20d15b58b
@ -2336,27 +2336,42 @@ Q_AUTOTEST_EXPORT QString qt_punycodeDecoder(const QString &pc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const char * const idn_whitelist[] = {
|
static const char * const idn_whitelist[] = {
|
||||||
"ac", "ar", "at",
|
"ac", "ar", "asia", "at",
|
||||||
"biz", "br",
|
"biz", "br",
|
||||||
"cat", "ch", "cl", "cn",
|
"cat", "ch", "cl", "cn", "com",
|
||||||
"de", "dk",
|
"de", "dk",
|
||||||
"es",
|
"es",
|
||||||
"fi",
|
"fi",
|
||||||
"gr",
|
"gr",
|
||||||
"hu",
|
"hu",
|
||||||
"info", "io", "is",
|
"il", "info", "io", "is", "ir",
|
||||||
"jp",
|
"jp",
|
||||||
"kr",
|
"kr",
|
||||||
"li", "lt",
|
"li", "lt", "lu", "lv",
|
||||||
"museum",
|
"museum",
|
||||||
"no",
|
"name", "net", "no", "nu", "nz",
|
||||||
"org",
|
"org",
|
||||||
|
"pl", "pr",
|
||||||
"se", "sh",
|
"se", "sh",
|
||||||
"th", "tm", "tw",
|
"tel", "th", "tm", "tw",
|
||||||
|
"ua",
|
||||||
"vn",
|
"vn",
|
||||||
|
"xn--fiqs8s", // China
|
||||||
|
"xn--fiqz9s", // China
|
||||||
|
"xn--fzc2c9e2c", // Sri Lanka
|
||||||
|
"xn--j6w193g", // Hong Kong
|
||||||
|
"xn--kprw13d", // Taiwan
|
||||||
|
"xn--kpry57d", // Taiwan
|
||||||
|
"xn--mgba3a4f16a", // Iran
|
||||||
|
"xn--mgba3a4fra", // Iran
|
||||||
"xn--mgbaam7a8h", // UAE
|
"xn--mgbaam7a8h", // UAE
|
||||||
|
"xn--mgbayh7gpa", // Jordan
|
||||||
"xn--mgberp4a5d4ar", // Saudi Arabia
|
"xn--mgberp4a5d4ar", // Saudi Arabia
|
||||||
"xn--wgbh1c" // Egypt
|
"xn--ogbpf8fl", // Syria
|
||||||
|
"xn--p1ai", // Russian Federation
|
||||||
|
"xn--wgbh1c", // Egypt
|
||||||
|
"xn--wgbl6a", // Qatar
|
||||||
|
"xn--xkc2al3hye2a" // Sri Lanka
|
||||||
};
|
};
|
||||||
static const size_t idn_whitelist_size = sizeof idn_whitelist / sizeof *idn_whitelist;
|
static const size_t idn_whitelist_size = sizeof idn_whitelist / sizeof *idn_whitelist;
|
||||||
|
|
||||||
|
@ -2184,33 +2184,52 @@ void tst_QUrl::tldRestrictions_data()
|
|||||||
|
|
||||||
// current whitelist
|
// current whitelist
|
||||||
QTest::newRow("ac") << QString("ac") << true;
|
QTest::newRow("ac") << QString("ac") << true;
|
||||||
|
QTest::newRow("ar") << QString("ar") << true;
|
||||||
|
QTest::newRow("asia") << QString("asia") << true;
|
||||||
QTest::newRow("at") << QString("at") << true;
|
QTest::newRow("at") << QString("at") << true;
|
||||||
|
QTest::newRow("biz") << QString("biz") << true;
|
||||||
QTest::newRow("br") << QString("br") << true;
|
QTest::newRow("br") << QString("br") << true;
|
||||||
QTest::newRow("cat") << QString("cat") << true;
|
QTest::newRow("cat") << QString("cat") << true;
|
||||||
QTest::newRow("ch") << QString("ch") << true;
|
QTest::newRow("ch") << QString("ch") << true;
|
||||||
QTest::newRow("cl") << QString("cl") << true;
|
QTest::newRow("cl") << QString("cl") << true;
|
||||||
QTest::newRow("cn") << QString("cn") << true;
|
QTest::newRow("cn") << QString("cn") << true;
|
||||||
|
QTest::newRow("com") << QString("com") << true;
|
||||||
QTest::newRow("de") << QString("de") << true;
|
QTest::newRow("de") << QString("de") << true;
|
||||||
QTest::newRow("dk") << QString("dk") << true;
|
QTest::newRow("dk") << QString("dk") << true;
|
||||||
|
QTest::newRow("es") << QString("es") << true;
|
||||||
QTest::newRow("fi") << QString("fi") << true;
|
QTest::newRow("fi") << QString("fi") << true;
|
||||||
|
QTest::newRow("gr") << QString("gr") << true;
|
||||||
QTest::newRow("hu") << QString("hu") << true;
|
QTest::newRow("hu") << QString("hu") << true;
|
||||||
|
QTest::newRow("il") << QString("il") << true;
|
||||||
QTest::newRow("info") << QString("info") << true;
|
QTest::newRow("info") << QString("info") << true;
|
||||||
QTest::newRow("io") << QString("io") << true;
|
QTest::newRow("io") << QString("io") << true;
|
||||||
|
QTest::newRow("is") << QString("is") << true;
|
||||||
|
QTest::newRow("ir") << QString("ir") << true;
|
||||||
QTest::newRow("jp") << QString("jp") << true;
|
QTest::newRow("jp") << QString("jp") << true;
|
||||||
QTest::newRow("kr") << QString("kr") << true;
|
QTest::newRow("kr") << QString("kr") << true;
|
||||||
QTest::newRow("li") << QString("li") << true;
|
QTest::newRow("li") << QString("li") << true;
|
||||||
QTest::newRow("lt") << QString("lt") << true;
|
QTest::newRow("lt") << QString("lt") << true;
|
||||||
|
QTest::newRow("lu") << QString("lu") << true;
|
||||||
|
QTest::newRow("lv") << QString("lv") << true;
|
||||||
QTest::newRow("museum") << QString("museum") << true;
|
QTest::newRow("museum") << QString("museum") << true;
|
||||||
|
QTest::newRow("name") << QString("name") << true;
|
||||||
|
QTest::newRow("net") << QString("name") << true;
|
||||||
QTest::newRow("no") << QString("no") << true;
|
QTest::newRow("no") << QString("no") << true;
|
||||||
|
QTest::newRow("nu") << QString("nu") << true;
|
||||||
|
QTest::newRow("nz") << QString("nz") << true;
|
||||||
|
QTest::newRow("org") << QString("org") << true;
|
||||||
|
QTest::newRow("pl") << QString("pl") << true;
|
||||||
|
QTest::newRow("pr") << QString("pr") << true;
|
||||||
QTest::newRow("se") << QString("se") << true;
|
QTest::newRow("se") << QString("se") << true;
|
||||||
QTest::newRow("sh") << QString("sh") << true;
|
QTest::newRow("sh") << QString("sh") << true;
|
||||||
|
QTest::newRow("tel") << QString("tel") << true;
|
||||||
QTest::newRow("th") << QString("th") << true;
|
QTest::newRow("th") << QString("th") << true;
|
||||||
QTest::newRow("tm") << QString("tm") << true;
|
QTest::newRow("tm") << QString("tm") << true;
|
||||||
QTest::newRow("tw") << QString("tw") << true;
|
QTest::newRow("tw") << QString("tw") << true;
|
||||||
|
QTest::newRow("ua") << QString("ua") << true;
|
||||||
QTest::newRow("vn") << QString("vn") << true;
|
QTest::newRow("vn") << QString("vn") << true;
|
||||||
|
|
||||||
// known blacklists:
|
// known blacklists:
|
||||||
QTest::newRow("com") << QString("com") << false;
|
|
||||||
QTest::newRow("foo") << QString("foo") << false;
|
QTest::newRow("foo") << QString("foo") << false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -649,6 +649,20 @@ void tst_QUrlInternal::ace_testsuite_data()
|
|||||||
<< "xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c"
|
<< "xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c"
|
||||||
<< "."
|
<< "."
|
||||||
<< egyptianIDN;
|
<< egyptianIDN;
|
||||||
|
|
||||||
|
QString russianIDN = QString::fromUtf8("\321\217\320\275\320\264\320\265\320\272\321\201.\321\200\321\204");
|
||||||
|
QTest::newRow("russian-tld-ace")
|
||||||
|
<< "xn--d1acpjx3f.xn--p1ai"
|
||||||
|
<< "xn--d1acpjx3f.xn--p1ai"
|
||||||
|
<< "."
|
||||||
|
<< russianIDN;
|
||||||
|
|
||||||
|
QString taiwaneseIDN = QString::fromUtf8("\345\217\260\345\214\227\346\214\211\346\221\251.\345\217\260\347\201\243");
|
||||||
|
QTest::newRow("taiwanese-tld-ace")
|
||||||
|
<< "xn--djrptm67aikb.xn--kpry57d"
|
||||||
|
<< "xn--djrptm67aikb.xn--kpry57d"
|
||||||
|
<< "."
|
||||||
|
<< taiwaneseIDN;
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QUrlInternal::ace_testsuite()
|
void tst_QUrlInternal::ace_testsuite()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user