Bug 817374 - Fix inconsistency of the setOverLink parameter. r=mossop
MozReview-Commit-ID: 6rLOm1T2sOd
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -4503,16 +4503,20 @@ var XULBrowserWindow = {
},
setDefaultStatus(status) {
this.defaultStatus = status;
this.updateStatusField();
},
setOverLink(url, anchorElt) {
+ const textToSubURI = Cc["@mozilla.org/intl/texttosuburi;1"].
+ getService(Ci.nsITextToSubURI);
+ url = textToSubURI.unEscapeURIForUI("UTF-8", url);
+
// Encode bidirectional formatting characters.
// (RFC 3987 sections 3.2 and 4.1 paragraph 6)
url = url.replace(/[\u200e\u200f\u202a\u202b\u202c\u202d\u202e]/g,
encodeURIComponent);
if (gURLBar && gURLBar._mayTrimURLs /* corresponds to browser.urlbar.trimURLs */)
url = trimURL(url);
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -14301,34 +14301,21 @@ nsDocShell::OnOverLink(nsIContent* aCont
nsCOMPtr<nsIWebBrowserChrome> browserChrome;
if (!browserChrome2) {
browserChrome = do_GetInterface(mTreeOwner);
if (!browserChrome) {
return rv;
}
}
- nsCOMPtr<nsITextToSubURI> textToSubURI =
- do_GetService(NS_ITEXTTOSUBURI_CONTRACTID, &rv);
- if (NS_FAILED(rv)) {
- return rv;
- }
-
- // use url origin charset to unescape the URL
- nsAutoCString charset;
- rv = aURI->GetOriginCharset(charset);
- NS_ENSURE_SUCCESS(rv, rv);
-
nsAutoCString spec;
rv = aURI->GetSpec(spec);
NS_ENSURE_SUCCESS(rv, rv);
- nsAutoString uStr;
- rv = textToSubURI->UnEscapeURIForUI(charset, spec, uStr);
- NS_ENSURE_SUCCESS(rv, rv);
+ NS_ConvertUTF8toUTF16 uStr(spec);
mozilla::net::PredictorPredict(aURI, mCurrentURI,
nsINetworkPredictor::PREDICT_LINK,
aContent->NodePrincipal()->OriginAttributesRef(),
nullptr);
if (browserChrome2) {
nsCOMPtr<nsIDOMElement> element = do_QueryInterface(aContent);