Bug 817374 - Fix inconsistency of the setOverLink parameter. r=mossop draft
authorMasatoshi Kimura <VYV03354@nifty.ne.jp>
Mon, 21 Nov 2016 21:39:15 +0900
changeset 579863 1ab6b328ce4190f40934720c9c4c1fd94107d217
parent 579463 6e3ca5b38f7173b214b10de49e58cb01890bf39d
child 629135 155e5a38ac279355c97073230dc99ca417918134
push id59388
push userVYV03354@nifty.ne.jp
push dateWed, 17 May 2017 21:47:48 +0000
reviewersmossop
bugs817374
milestone55.0a1
Bug 817374 - Fix inconsistency of the setOverLink parameter. r=mossop MozReview-Commit-ID: 6rLOm1T2sOd
browser/base/content/browser.js
docshell/base/nsDocShell.cpp
--- 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);