MAINT-8023 Viewer breaks URLs with internationalized domain names
parent
2204983033
commit
3d7dedff26
|
|
@ -190,31 +190,32 @@ bool LLUrlEntryBase::isWikiLinkCorrect(std::string url)
|
|||
|
||||
std::string LLUrlEntryBase::urlToLabelWithGreyQuery(const std::string &url) const
|
||||
{
|
||||
LLUriParser up(unescapeUrl(url));
|
||||
LLUriParser up(escapeUrl(url));
|
||||
up.normalize();
|
||||
|
||||
std::string label;
|
||||
up.extractParts();
|
||||
up.glueFirst(label);
|
||||
|
||||
return label;
|
||||
return unescapeUrl(label);
|
||||
}
|
||||
|
||||
std::string LLUrlEntryBase::urlToGreyQuery(const std::string &url) const
|
||||
{
|
||||
LLUriParser up(unescapeUrl(url));
|
||||
std::string escaped_url = escapeUrl(url);
|
||||
LLUriParser up(escaped_url);
|
||||
|
||||
std::string label;
|
||||
up.extractParts();
|
||||
up.glueFirst(label, false);
|
||||
|
||||
size_t pos = url.find(label);
|
||||
size_t pos = escaped_url.find(label);
|
||||
if (pos == std::string::npos)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
pos += label.size();
|
||||
return url.substr(pos);
|
||||
return unescapeUrl(escaped_url.substr(pos));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// did we find a match? if so, return its details in the match object
|
||||
if (match_entry)
|
||||
{
|
||||
|
|
@ -223,33 +223,6 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL
|
|||
// fill in the LLUrlMatch object and return it
|
||||
std::string url = text.substr(match_start, match_end - match_start + 1);
|
||||
|
||||
LLUrlEntryBase *stripped_entry = NULL;
|
||||
if((match_entry != mUrlEntryNoLink) && (match_entry != mUrlEntryHTTPLabel) && (match_entry !=mUrlEntrySLLabel)
|
||||
&& LLStringUtil::containsNonprintable(url))
|
||||
{
|
||||
LLStringUtil::stripNonprintable(url);
|
||||
|
||||
std::vector<LLUrlEntryBase *>::iterator iter;
|
||||
for (iter = mUrlEntry.begin(); iter != mUrlEntry.end(); ++iter)
|
||||
{
|
||||
LLUrlEntryBase *url_entry = *iter;
|
||||
U32 start = 0, end = 0;
|
||||
if (matchRegex(url.c_str(), url_entry->getPattern(), start, end))
|
||||
{
|
||||
if (mLLUrlEntryInvalidSLURL == *iter)
|
||||
{
|
||||
if(url_entry && url_entry->isSLURLvalid(url))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
stripped_entry = url_entry;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (match_entry == mUrlEntryTrusted)
|
||||
{
|
||||
LLUriParser up(url);
|
||||
|
|
@ -257,12 +230,10 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL
|
|||
url = up.normalizedUri();
|
||||
}
|
||||
|
||||
std::string url_label = stripped_entry? stripped_entry->getLabel(url, cb) : match_entry->getLabel(url, cb);
|
||||
std::string url_query = stripped_entry? stripped_entry->getQuery(url) : match_entry->getQuery(url);
|
||||
match.setValues(match_start, match_end,
|
||||
match_entry->getUrl(url),
|
||||
url_label,
|
||||
url_query,
|
||||
match_entry->getLabel(url, cb),
|
||||
match_entry->getQuery(url),
|
||||
match_entry->getTooltip(url),
|
||||
match_entry->getIcon(url),
|
||||
match_entry->getStyle(),
|
||||
|
|
|
|||
Loading…
Reference in New Issue